En esta página, explicaremos la tecnología detrás de la app ID-OCR-ECU. La aplicación de reconocimiento de texto basada en la tecnología OCR (Optical Character Recognition).
Reconocimiento óptico de Caracteres (OCR): Un sistema de OCR procesa una imagen bidimensional que contiene texto impreso (Wikipedia), ya sea a máquina o a mano, y la transforma en texto legible por máquina.
El OCR como proceso generalmente consta de varios subprocesos que deben realizase con la mayor precisión posible. Los subprocesos son:
En los últimos años la digitalización de la información ha devenido un punto de interés para la sociedad. [...] En este contexto, poder automatizar la introducción de caracteres evitando la entrada por teclado implica un importante ahorro de recursos humanos y un aumento de la productividad, al mismo tiempo que se mantiene, o hasta se mejora, la calidad de muchos servicios.
Los motores de OCR resuelven el problema del reconocimiento de texto utilizando los últimos avances en investigación en el área del aprendizaje profundo (Deep learning). Estos se benefician de la combinación de modelos de aprendizaje y de la enorme cantidad de datos disponibles públicamente (en la forma de documentos digitalizados). Los modelos logran un nivel excelente de precisón en tareas específicas.
Las tareas han sido divididas en dos grupos: tratamiento de imagen (en entrada y salida) y el algoritmo de reconocimiento propiamente dicho.
Tratamiento de Imagen con OpenCVPara el tratamiento de la imagen la librería OpenCV es vastamente utilizada para tareas llamadas "visión de computadora". En el caso de OCR, describimos el uso de esta librería:
Pre-procesamiento de la imagen. Generalmente el input de un algoritmo OCR es una foto o un documento escaneado que tiene el siguiente aspecto:
Localización de texto. La primera tarea consistirá en identificar la zona de la imagen con la información que nos interesa y puesto que queremos identificar texto, los colores son irrelevantes, convertimos la imagen a escala de grises.
Preparación para el motor OCR. Los algoritmos de reconocimientos de caracteres tienen un excelente desempeño en la tarea de reconocimiento de texto. Sin embargo, poseen un gran defecto, el texto debe estar sobre un fondo uniforme. Es decir, todas las figuras geométricas o texto como filigranas deben ser removidas antes de utilizar el algoritmo, o simplemente el algoritmo no funcionará. OpenCV nos permite también realizar esta tarea:
Hay una gran cantidad de software de reconocimiento óptico de caracteres disponibles. Unos de los más utilizado es Tesseract, un motor de OCR de código abierto (open source) que ha ganado una gran popularidad entre los creadores de programas de OCR.
Tesseract comenzó como el resultado de un trabajo de doctorado desarrollado en los laboratorios Hewlett Packard de Bristol entre 1984 y 1994. En 2005, Tesseract fue lanzado como un software de código abierto y desde 2006 es desarrollado por Google. Disponible bajo la licencia Apache 2.0 puede ser usado directamente o accedido mediante una API para extraer texto de imágenes.
Tesseract es compatible con muchos lenguajes de programación a través de varios repositorios de código.
Pytesseract es un wrapper del motor de Tesseract y es útil como script de invocación independiente para Tesseract, ya que puede leer todos los tipos de imágenes compatibles con las bibliotecas de imágenes de utilizadas en Python, y las extensiones de las imágenes incluyen jpeg, png, gif, bmp, tiff y otros.
Reconocimiento de texto Retomamos nuestro ejemplo, todo está listo para enviar la imagen a Tesseract, el resultado es:
Así, gracias a Tesseract, combinado a OpenCV se pueden construir varias utilizaciones