簡體   English   中英

通過Cordova的Windows UWP應用程序:將畫布轉換為Javascript中的InkRecognizer的流

[英]Windows UWP apps via Cordova: convert canvas into stream for InkRecognizer in Javascript

我正在用Cordova開發適用於Android和Windows的應用程序,並且難以識別Windows平台(W10)上的canvas元素中的文本和數字

所以最近幾天,我浪費了時間嘗試使用Windows.Media.OCR命名空間來識別HTML5畫布塗鴉板上的手寫數字,正如您在此處看到的另一個SO問題

然后,我找到了Windows.UI.Input.Inking命名空間,並且幾乎沒有可用於Javascript解決方案的類。 我發現有一個InkManager可以識別自己的集合中的InkStrokes或InkRecognizerContainer中的筆畫。

InkRecognizerContainer具有接受輸入流的“ loadAsync()”方法。 因此,我認為我只是將轉換后的畫布加載為流,並使用InkManager識別此容器。

不幸的是,如果我嘗試使用轉換后的HTML5 canvas進行流傳輸,則會拋出“ WIN RT:Unsepcified Error”(WIN RT:未歸類錯誤),但不會在回調中出現,這只會使應用程序崩潰。

var blob = canvas.msToBlob();
 var randomAccessStream = blob.msDetachStream();

 var inkStrokeContainer = new Windows.UI.Input.Inking.InkStrokeContainer();
 inkStrokeContainer.loadAsync(randomAccessStream).done(function () {
     debugger
 }, function (error) {
    console.log(error);
 });

任何幫助將不勝感激,因為我在此上花了太多時間。

InkStrokeContainer.LoadAsync需要包含墨水筆划信息的文件,而不是任意位圖。 通常,這是從以前的InkStrokeContainer中保存的ISF(墨水序列化格式)文件。 ISF文件將筆划信息作為元數據包含在gif文件中,因此普通的gif查看器可以顯示它們,但是典型的gif文件不包含ISF數據,因此無法加載到InkStrokeContainers中。

InkManager不會執行手寫識別,而不會執行OCR。 它需要單獨的筆划信息,並考慮了筆划順序和方向等屬性。 要使用它,您通常需要在輸入發生時將指針信息傳遞給InkManager,以便InkManager可以構建筆畫以進行識別。

簡化墨水樣本為例。 JavaScript版本使用WinJS而不是Cordova,但是轉換起來並不難。 墨跡特定於Windows,因此您需要將其放入應用程序特定於平台的部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM