かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

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