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.
Dicho de manera más simple, con OCR lo que buscamos es “leer” texto proveniente de una imagen, bien sea una fotografía, un documento escaneado o directamente generado por una computadora.
Como sucede con frecuencia en computer vision, a priori, suena como una tarea muy sencilla, pero esconde un sinnúmero de desafíos que debemos sortear.
Después de todo, si extraer texto de una imagen fuese tan fácil, ¿para qué necesitaríamos todo un subcampo de la visión artificial dedicado a tal fin?
Al final de este artículo conocerás:
¿Estás listo para adentrarte al mundo del Reconocimiento Óptico de Caracteres? Si es así, ¡empecemos!
¿Qué es OCR?
Como mencionamos en la introducción, OCR es un término utilizado para describir técnicas y algoritmos capaces de convertir imágenes en texto.
Más concretamente, los sistemas de OCR trabajan así:
- 1Toman una imagen de entrada, que puede ser escaneada, una fotografía o generada por computadora.
- 2Detectan automáticamente el texto y lo leen como lo haría un ser humano.
- 3Convierten el texto a un formato legible por máquina, para que pueda ser indexado, consultado y, en general, utilizado en el contexto de un sistema más amplio de computer vision.
A pesar de que la mayoría de las veces que mencionemos OCR nos referiremos a sistemas de software, también existen alternativas físicas y mecánicas, como el bolígrafo OCR de la imagen de abajo, el cual automáticamente escanea el texto subrayado.
Volviendo al software, por lejos el más utilizado es Tesseract, una librería mantenida por Google de la cual hablaremos más adelante, y que utilizaremos de forma extensa en los tutoriales venideros.
Ahora que tienes un mejor entendimiento de lo que es OCR, hablemos un poco sobre su historia.
Un Breve Repaso a la Historia de OCR
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.
Posteriormente, en el año 1974, la compañía Kurzweil Computer Products Inc. se enfocó en el desarrollo de “una máquina de lectura para los ciegos”.
El trabajo de Kurzweil llamó la atención de Xerox, quien se dispuso a comercializar su software, y lo utilizó como punto de partida para el desarrollo de aplicaciones de OCR para la comprensión de documentos.
En los 80s, Hewlett-Packard inició el desarrollo del software Tesseract, cuyo código fuente se liberó en 2005, convirtiéndose así en el motor de OCR más popular de todos los tiempos.
La explosión en popularidad de deep learning en la década pasada también trajo consigo grandes cambios al mundo del OCR, principalmente de la mano de arquitecturas especializadas como RNNs y LSTMs.
En la actualidad, varios gigantes de la industria, como Google, Amazon y Microsoft ofrecen sus propias herramientas de OCR desplegadas en la nube.
A pesar de los indiscutibles avances que ha tenido el campo del Reconocimiento Óptico de Caracteres desde su concepción, sigue siendo una tarea increíblemente desafiante que requiere de la experticia de un profesional de computer vision para obtener resultados óptimos.
Aplicaciones de OCR
Entre las aplicaciones más comunes de OCR tenemos:
En resumen, si hay texto en una imagen, tenemos una alta probabilidad de que OCR nos ayude a extraerlo.
Pre y Pos Procesamiento
Uno de los errores más comunes es pensar que las herramientas de OCR, en especial Tesseract, son varitas mágicas infalibles, y que con solo pasarle cualquier imagen, obtendremos el texto presente en ella sin ningún problema.
Falso.
De hecho, si éste fuera el caso, no necesitaríamos un campo dedicado al OCR, ¿no crees?
Como en cualquier otra aplicación de computer vision, el preprocesamiento juega un papel crucial en la consecución de nuestros objetivos.
Técnicas básicas como transformaciones morfológicas, difuminado Gaussiano, detección de bordes, entre otras, pueden conducir a resultados drásticamente distintos en términos de calidad.
El posprocesamiento también juega un rol importante.
Teniendo en cuenta que los motores de OCR nunca serán 100% precisos, podemos mitigar sus errores aplicando ciertas técnicas y heurísticas. Por ejemplo:
Como muchas cosas en esta vida, una buena aplicación de OCR es 50% ciencia y 50% arte.
Resumen
En este artículo hablamos sobre el OCR como campo, y como una familia de sistemas y tecnologías enfocadas en la extracción de texto a partir de imágenes.
Descubrimos que, a pesar de su reciente boom en popularidad, los primeros sistemas de OCR datan de principios del siglo pasado, cuando el pionero investigador Emanuel Goldberg trabajó en el desarrollo de una máquina para pasar de texto a código telegráfico.
Adicionalmente, aprendimos que Tesseract es el motor de OCR más popular en la actualidad, debido en gran medida a Google, quien se encarga de su mantenimiento desde 2005, cuando HP decidió liberar su código fuente.
A lo largo de los próximos artículos iremos aprendiendo más y más sobre OCR y sus aplicaciones, así que mantente atento ;).
¡Hasta pronto!