Reconocimiento del Texto de un Ink en WPF - Blog de Oskar Alvarez

Reconocimiento del Texto de un Ink en WPF

En el proyecto que estamos realizando aparte de la entrada anterior necesitamos que en un Ink pasemos a texto lo que va escribiendo el usuario, esto es bastante sencillo si nos apoyamos en la clase InkAnalyzer que se encuentra en el assembly IAWinfx localizado en la ruta %ProgramFiles%\Reference Assemblies\Microsoft\Tablet PC\v1.7 y que solo se encuentra en los Tablet PC. Una vez añadido este assembly el código es muy sencillo.

 

El Xaml

 

  1. <Window x:Class="TestAnalyzer.Window1"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. Title="TestAnalyzer"
  5. SizeToContent="WidthAndHeight">
  6.     <Grid>
  7.         <StackPanel Orientation="Vertical">
  8.             <InkCanvas Name="inkCanvas" Width="600" Height="100" />
  9.             <TextBox Name="textBlock" />
  10.         </StackPanel>
  11.     </Grid>
  12. </Window>

 

Tenemos un InkCanvas y un TextBox donde se ira poniendo el texto que dibuje el usuario. para hacer el reconocimiento tenemos

 

  1. public partial class Window1 : System.Windows.Window
  2. {
  3.     InkAnalyzer _analyzer;
  4.     public Window1()
  5.     {
  6.         InitializeComponent();
  7.         inkCanvas.StrokeCollected +=
  8.         new InkCanvasStrokeCollectedEventHandler(inkCanvas_StrokeCollected);
  9.         inkCanvas.StrokeErasing +=
  10.         new InkCanvasStrokeErasingEventHandler(inkCanvas_StrokeErasing);
  11.         _analyzer = new InkAnalyzer();
  12.         _analyzer.ResultsUpdated +=
  13.         new ResultsUpdatedEventHandler(analyzer_ResultsUpdated);
  14.     }
  15.     void inkCanvas_StrokeErasing(object sender, InkCanvasStrokeErasingEventArgs e)
  16.     {
  17.         _analyzer.RemoveStroke(e.Stroke);
  18.         _analyzer.BackgroundAnalyze();
  19.     }
  20.     void inkCanvas_StrokeCollected(object sender,
  21.     InkCanvasStrokeCollectedEventArgs e)
  22.     {
  23.         _analyzer.AddStroke(e.Stroke);
  24.         _analyzer.SetStrokeType(e.Stroke, StrokeType.Writing);
  25.         _analyzer.BackgroundAnalyze();
  26.     }
  27.     void analyzer_ResultsUpdated(object sender, ResultsUpdatedEventArgs e)
  28.     {
  29.         textBlock.Text = _analyzer.GetRecognizedString();
  30.     }
  31. }

 

Y ya tenemos nuestro propio OCR

Published 6/12/2009 10:55 por Oskar Alvarez
Archivado en:
Comparte este post:
http://geeks.ms/blogs/oalvarez/archive/2009/12/06/reconocimiento-del-texto-de-un-ink-en-wpf.aspx

Comentarios

# Reconocimiento del Texto de un Ink en WPF

En el proyecto que estamos realizando aparte de la entrada anterior necesitamos que en un Ink pasemos

Sunday, December 06, 2009 11:30 AM por .NET con oskar