marzo 21, 2022 10:00 am

Jesús

A lo largo de el último, mes hemos estado interactuando de forma muy constante con Tesseract OCR y sus funcionalidades. 

Iniciamos con una breve definición de OCR.

Las siglas OCR, que significan Optical Character Recognition, se usan para referirnos a una familia de técnicas, algoritmos y dispositivos especialmente diseñados para convertir imágenes en texto.

Aunque cueste creerlo, los orígenes del OCR se remontan a comienzos del siglo XX, cuando Emanuel Goldberg “desarrolló una máquina que puede leer caracteres para luego convertirlos en código telegráfico estándar”. Esto sucedió en 1914.

En las décadas de 1920 y 1930, nuestro amigo Emanuel continuó su investigación, esta vez desarrollando un sistema para buscar y extraer caracteres en documentos en microfilm.

Los orígenes de los OCR y su reciente boom de popularidad son una parte fundamental para nuestro conocimiento acerca de ellos.

Aprendimos que Tesseract es el motor de OCR más popular que existe en la actualidad, debido en gran medida a Google, quien se encarga de su mantenimiento desde 2005.


Su instalación en nuestros sistemas operativos (Ubuntu, MacOS y Windows) es uno de los procesos más sencillos visto en esta larga secuencia de artículos dedicados a Tesseract. Nada complicado.

Ahora bien, cuando se trata de la configuración de Tesseract, podríamos decir que es el primer desafío al cual vamos a hacer frente. En principio, porque esta herramienta no es perfecta. Suele fallar cuando las condiciones de la detección de texto en imágenes no son óptimas, y esto es una clara señal que nos indica que tenemos que incrementar nuestro conocimiento de Tesseract y OCR en general.

Una de las configuraciones más básicas las vimos en nuestro primer proyecto, cuando creamos nuestro primer escáner con OCR . Ahí aprendimos a pedirle a Tesseract que corriera sus complejos algoritmos de OCR por nosotros, y nos devolviera un resultado legible e interpretable. Sin embargo, fue en el desarrollo de este pequeño proyecto cuando dimos con las primeras deficiencias de Tesseract.

Más adelante, nos encontramos con aquellas configuraciones que presentan mayor complejidad. Me refiero a aquellas que tienen que ver con la segmentación de datos a través de filtros.

¿Qué quiero decir con segmentación de datos?, pues simple, hay dos tipos de filtros que podemos aplicar a nuestra configuración: Whitelist y Blacklist.

Básicamente, estos filtros sirven para enfocarnos únicamente en el conjunto de caracteres que deseamos escanear y, por consiguiente, obtengamos los resultados que deseamos.

No obstante, también suele darse otro tipo de casos en los que nos vemos obligados a indagar más acerca de Tesseract.

Existe un proceso conocido como OSD, que significa Orientation and Script Detection, y traducido sería Detección y Orientación de Escritura.

Como bien podrías darte cuenta, se trata de Orientación y Escritura de textos. 

  • Orientación: Grados de rotación en el texto.
  • Escritura: Sistemas de símbolos utilizados para representar la información del texto.

Esto forma parte a lo que usualmente nos referimos como preprocesamiento, que es simplemente ajustar, arreglar y acomodar la imagen para que el resultado del OCR que apliquemos sea exitoso.

Por supuesto, y en la medida que nos adentramos más en ejemplos de la vida real, nos damos cuenta que las imágenes, en líneas generales, no tienen las condiciones mínimamente necesarias para extraer el texto que necesitamos.

Es por eso que, dados este tipo de situaciones, acudimos a otra herramienta que podría facilitarle la labor al OCR, respecto al cómo mejorar los resultados de Tesseract OCR con preprocesamiento de imágenes básico con OpenCV.

De este modo, combinar ambas herramientas, constituyen una gran ayuda para el desarrollo de nuestros proyectos. El objetivo principal de la alianza (por así decirlo) de ambas herramientas, es complementarse entre sí, ya que las deficiencias de una de ellas puede ser sustituida por las funcionalidades de la otra. Esto último podemos verlo con más claridad en el siguiente artículo: Cómo Localizar y Hacer OCR de Texto en una Imagen con OpenCV y Tesseract.

Conclusiones

Tesseract es una herramienta de reconocimiento muy potente que hace un uso muy inteligente de las redes neuronales, y el cual, todas sus decisiones de diseño llevan revolucionando la tecnología OCR desde el mismo día que se creó. Pero aún con todos estos avances en la materia, las estadísticas hablan y dicen que aún hay margen de mejora.

De lo obtenido con las pruebas realizadas de este proyecto se observa que se necesita un alto grado de calidad a la hora de la digitalización de los textos y el porcentaje de acierto en cuanto a los textos manuscritos deja bastante que desear. Todo esto sin contar que los tiempos de procesado por página son bastante altos y hace que todo el proceso sea tedioso.

En resumen, se puede decir que a Tesseract aún le quedan unos pocos años para llegar a la cúspide de su potencial, pero esto está lejos de ser una derrota, ya que al igual que cuando se creó la tecnología OCR, solo hace falta un pequeño avance tecnológico para resolver sus problemas. 

Sobre el Autor

Jesús Martínez es el creador de DataSmarts, un lugar para los apasionados por computer vision y machine learning. Cuando no se encuentra bloggeando, jugando con algún algoritmo o trabajando en un proyecto (muy) cool, disfruta escuchar a The Beatles, leer o viajar por carretera.