Acerca de...
El equipo
Encuestas
Política de privacidad
WinTablets

Encuesta

¿Cual crees que triunfará?

Ver Resultados

Cargando ... Cargando ...

últimas entradas importantes

Categorías

Archivos

02
Ago 2014
Opiniones

Tinta electrónica (2): Hoy en «Así se hace»…

Disculpad el título, supongo que veo demasiado Discovery Max. Bueno, a lo que iba. Como terminé diciendo hace algo más de dos semanas (sí, escribo así de lento :mrgreen: ) en la primera parte de este artículo sobre tinta electrónica, el gran público suele referirse, de forma incorrecta, al reconocimiento del texto manuscrito que hacen nuestros queridos WinTablets (yo sigo prefiriendo «Tablet PC», la verdad) como OCR, siglas para la expresión inglesa Optical Character Recognition, o en el Español nuestro de cada día Reconocimiento Óptico de Caracteres. ¿Y por qué es incorrecto? Ahora mismo os lo explico.

Como la propia expresión indica, el OCR se basa en mirar (de ahí «óptico») la imagen (esto es importante) de un texto ya escrito y reconocer lo que dice. Vamos, lo que estás haciendo tú ahora mismo mirando la imagen que muestra tu pantalla y entendiendo lo que significan las diversas sucesiones de símbolos que en ella aparecen. Así pues, esta técnica del OCR es tan buena que nuestro propio cerebro la usa constantemente. Pero claro, en informática una imagen es un conjunto de pixeles, también conocido como bitmap o mapa de bits, que representa una imagen de forma discreta con un determinado grado de precisión (que dependerá de la resolución de la imagen) y que, en lo que nos concierne, puede provenir de un escaneo de un documento físico, de una instantánea tomada con una cámara o incluso de un texto escrito directamente en el ordenador (sea a mano o tecleando) que se ha convertido a bitmap.

Texto de imprenta y manuscrito en bitmap

Texto de imprenta y manuscrito en bitmap

Esta técnica, aunque hoy en día está muy mejorada para cualquier tipo de caracteres, suele dar mejores resultado con caracteres de imprenta que con caracteres manuscritos, ya que los primeros tienen un aspecto más uniforme, contra el sesgo personal que cada cual da a la forma de su propia escritura. Pues bien, repito, esto no es lo que hace nuestro ordenador cuando interpreta lo que escribimos con el lápiz.

El reconocimiento de texto manuscrito que hace nuestro ordenador conforme escribimos se parece más a lo que hacemos nosotros cuando alguna vez nos han hecho el juego de escribirnos algo en la espalda y tener que adivinar qué es. Es decir, no se basa en la simple imagen del texto, como el OCR, sino en los trazos (movimientos) que lo crean. Esta técnica forma parte del conocido como HWR (Handwriting Recognition, o Reconocimiento de Texto Manuscrito). Y digo «forma parte» y no «se llama» porque en realidad el HWR tiene dos modalidades, la modalidad off-line, que no es sino el reconocimiento de texto manuscrito en forma de imagen mediante técnicas de OCR, y la modalidad on-line, que es la que nos interesa y que se basa en el reconocimiento conforme se escribe, o tal vez posteriormente, pero haciendo uso de la misma información que si se estuviese escribiendo en el momento, ya que los trazos que hacemos se guardan como información vectorial y no en forma de bitmap, como se hace para OCR.

Comparación de texto en bitmap para OCR y vectorial para HWR on-line

Comparación de texto en bitmap para OCR y vectorial para HWR on-line

Como puede verse en la imagen de arriba, para un reconocimiento on-line se toman en cuenta el punto en el que el lápiz toca la pantalla, el punto en el que se levanta y los puntos intermedios por los que se va pasando. Aunque en la imagen no se aprecia, también se toman en cuenta los tiempos en los que se producen los trazos e incluso, cuando el hardware lo permite, la presión en cada parte del trazo, como lo haría un experto grafólogo.

Como decía hace un momento, toda esa información puede ser procesada conforme se produce, tal como ocurre cuando escribimos en el panel de entrada manuscrita de Windows, o ser almacenada como tinta electrónica, es decir en formato vectorial y junto con el resto de información asociada, como la temporización y presión de los trazos, para poder ser reconocido posteriormente, como ocurría en el panel de entrada manuscrita que en su día incorporamos en la desaparecida web TodoUMPC, en el que primero se escribía todo el texto y sólo al final se realizaba el reconocimiento.

 
Panel de entrada de Windows 7   Entrada de tinta en TodoUMPC

 
En cualquier caso, para hacer el reconocimiento se pasa, a groso modo, por tres fases: preprocesamiento, extracción de características y clasificación. Durante el preprocesamiento se simplifican y «suavizan» los trazos, eliminando la información superflua que puede dificultar el reconocimiento, además se puede dividir la información en conjuntos de trazos o segmentos para ser procesados pro separado. En la extracción de características es donde se tiene en cuenta esa otra información asociada, como la temporización y la presión y se extrae nueva información derivada de la información que se ha registrado, como por ejemplo la velocidad de un trazo basándose en la diferencia de tiempo entre el punto inicial y final. Por último, en la fase de clasificación es donde se aplican diferentes modelos de análisis para reconocer los caracteres y las palabras.

Por supuesto, durante la fase de clasificación, se hace uso tanto del contexto como de la experiencia que el sistema de reconocimiento va adquiriendo con la forma de escribir del usuario para dar con la interpretación correcta cuando cabe alguna duda.

En fin, ya está. No entro en más detalles porque ni soy experto en la materia ni pretendo que nadie lo sea. Mi intención es simplemente acabar con el error de llamar OCR a lo que hacen nuestros Tablets PC y dejaros las nociones básicas de cómo funciona realmente, así que sólo espero que os haya resultado medianamente interesante.

Enlaces a las imágenes originales:
Comparación de texto bitmap y vectorial,
Por Hal9000 | 11 Comentarios | Enlaza esta entrada

11 Comentarios


Fatal error: Uncaught Error: Call to undefined function ereg() in /homepages/4/d443751538/htdocs/wintablet.info/wp-content/themes/wintabletinfo/functions.php:92 Stack trace: #0 /homepages/4/d443751538/htdocs/wintablet.info/wp-content/themes/wintabletinfo/functions.php(27): commenter_avatar() #1 /homepages/4/d443751538/htdocs/wintablet.info/wp-includes/class-walker-comment.php(179): custom_comments(Object(WP_Comment), Array, 1) #2 /homepages/4/d443751538/htdocs/wintablet.info/wp-includes/class-wp-walker.php(145): Walker_Comment->start_el('', Object(WP_Comment), 1, Array) #3 /homepages/4/d443751538/htdocs/wintablet.info/wp-includes/class-walker-comment.php(139): Walker->display_element(Object(WP_Comment), Array, '5', 0, Array, '') #4 /homepages/4/d443751538/htdocs/wintablet.info/wp-includes/class-wp-walker.php(387): Walker_Comment->display_element(Object(WP_Comment), Array, '5', 0, Array, '') #5 /homepages/4/d443751538/htdocs/wintablet.info/wp-includes/comment-template.php(2174): Walker->paged_walk(Array, '5', 0, 0, Array) in /homepages/4/d443751538/htdocs/wintablet.info/wp-content/themes/wintabletinfo/functions.php on line 92