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 AssembliesMicrosoftTablet PCv1.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

Un comentario sobre “Reconocimiento del Texto de un Ink en WPF”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *