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”

Responder a anonymous Cancelar respuesta

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