HOME >> Tips >> Microsoft.NET WPF

キャンバスに描いた手書き文字を認識する

2014/10/18
文書番号:20387

WPF で InkCanvas に描いた手書き文字を認識する方法。

動作確認環境:Visua Studio 2010(vb) .NET Framework 4.0

【参照設定】

  1. C:\Program Files\Reference Assemblies\Microsoft\Tablet PC\v1.7\IACore.dll と
    C:\Program Files\Reference Assemblies\Microsoft\Tablet PC\v1.7\IAWinFX.dll を参照設定に追加します。

    クリックで拡大
  2. C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\IALoader.dll を参照設定に追加します。
    クリックで拡大

【XAML】


    クリックで拡大

    
    <Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="500" Width="550">
        <Grid>
            <StackPanel>
                <InkCanvas Name="InkCanvas1" Background="LightGray"  />
                <Button Content="Button" Name="Button1" Width="100"/>
                <TextBlock Name="TextBlock1" Text="TextBlock" />
                <Label Content="第1候補" Name="Label1" />
                <Label Content="他の候補" Name="Label2" />
                <ListBox Height="100" Name="ListBox1" />
            </StackPanel>
        </Grid>
    </Window>
    

【VB.NET】

    
    Imports System.Windows.Ink
    Class MainWindow
    
        Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
    
            Dim ia As New InkAnalyzer()
    
            'InkCanvasの文字を認識するためアナライザにストロークをセット
            ia.AddStrokes(InkCanvas1.Strokes)
            ia.SetStrokesType(InkCanvas1.Strokes, StrokeType.Writing)
    
            '文字列を解析
            ia.Analyze()
    
            '文字列の解析結果の第1候補を表示する
            TextBlock1.Text = ia.GetRecognizedString()
    
            'その他の候補を取得する
            Dim alternates As AnalysisAlternateCollection = ia.GetAlternates()
    
            'その他の候補をリストボックスに表示する
            ListBox1.Items.Clear()
            For Each alternate In alternates
                ListBox1.Items.Add(alternate.RecognizedString)
            Next
    
        End Sub
    
    End Class
    
    キャンバスに文字を描いてボタンをクリックすると認識した文字が表示されます。

    クリックで拡大


    実行時に以下のエラーが出る場合は 手書き文字を認識する際に「FileLoadException」が発生するを参照してください。
    ================================================================
    混合モード アセンブリはバージョン 'v1.0.3705' のランタイムに対して作成されており、追加の構成情報がないと 4.0 ランタイムでは読み込めません。
    ================================================================