かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

Windows 10のUWPでInkCanvasを使って手書き文字認識をする

思ったより簡単だったのでメモメモ。因みにWindows 8のころはInkManager使ったりしてちょっとめんどかったです。

InkCanvasを置く

描画や消したりとかはInkCanvasにお任せです。

<InkCanvas x:Name="myInkCanvas" />

認識処理を書く

認識にはInkRecognizerContainerを使います。RecognizeAsyncでInkCanvasのInkPresenterのStrokeContainerと、認識対象を示す引数を渡してやれば結果が返ってきます。結果は、InkRecognitionResultのListなのでループで回してGetTextCandidatesから認識候補を取り出してあれこれします。 とりあえず、以下のような雰囲気のコードになります。(とりあえず第一候補を連結してみた)

var irc = new InkRecognizerContainer();
var results = await irc.RecognizeAsync(this.myInkCanvas.InkPresenter.StrokeContainer, InkRecognitionTarget.All);
var dlg = new MessageDialog(results.Select(x => x.GetTextCandidates().First()).Aggregate((x, y) => x + y));
await dlg.ShowAsync();

結果はこんな感じです。認識できてますね。

f:id:okazuki:20151103104110p:plain