Introducción al reconocimiento óptico de caracteres [OCR] para principiantes
Publicado: 2021-02-08OCR o reconocimiento óptico de caracteres (OCR) se utiliza para extraer información de imágenes de facturas y recibos, o cualquier cosa que tenga contenido escrito. Para desarrollar esta solución, se puede usar OpenCV para procesar las imágenes que luego se pueden alimentar a un motor Tesseract OCR que puede extraer el texto de esas imágenes.
Sin embargo, el proceso de eliminación de texto puede ser eficiente solo si la imagen es clara y los textos son lo suficientemente visibles. En aplicaciones de retail, para la extracción de textos de facturas, la factura puede estar inundada de marcas de agua, o puede haber una sombra en la factura que dificulte la captura de la información.
Capturar piezas de información de páginas de texto más largas también puede ser una tarea ardua. Para abordar estos problemas, es prudente que en el pipeline de extracción de información, exista un lugar desde el módulo de procesamiento de imágenes que aborde las dificultades antes mencionadas.
Comprende varios subprocesos, es decir, localización de textos, segmentación de caracteres y reconocimiento de dichos caracteres. Aunque pocos sistemas se manejan sin segmentación. Dichos métodos se producen utilizando varios procedimientos, como aplicar el método de mínimos cuadrados para reducir la tasa de error y admitir máquinas de vectores para hacer coincidir los caracteres.
Aún así, a menudo para identificar la ocupación de un carácter en una imagen, se emplean redes neuronales convolucionales (CNN). Los textos se pueden ver como una secuencia consistente de caracteres. Detectar e identificar estos caracteres con mayor precisión es una dificultad que puede resolverse utilizando un tipo especial de red neuronal, a saber, las redes neuronales recurrentes (RNN) y la memoria a corto plazo (LSTM).
Las palabras se recopilan ajustando los textos en blobs. Estas líneas y regiones se examinan además en busca de texto equivalente. Las líneas de texto se dividen en palabras solo según el tipo de espaciado entre ellas. El método de identificación se divide en dos pasos. En primer lugar, se identifica cada palabra. Cada palabra perfecta o correctamente identificada se pasa adicionalmente a un clasificador adaptativo como datos de entrenamiento.
La imagen que se recibe como entrada se examina y procesa por partes. El texto se introduce en el modelo LSTM línea por línea. Tesseract, que es un motor de reconocimiento óptico de caracteres, está disponible para varios sistemas operativos. Utiliza una combinación de arquitectura CNN y LSTM para identificar y derivar textos de datos de imágenes con precisión. Sin embargo, las imágenes con ruido o sombras dificultan la precisión de la recuperación.
Para minimizar el ruido o mejorar la calidad de la imagen, el preprocesamiento de la imagen se puede realizar utilizando la biblioteca OpenCV. Dichos pasos de preprocesamiento pueden comprender el descubrimiento de la ROI o la región de interés, el recorte de la imagen, la eliminación de ruido (o regiones no deseadas), la umbralización, la dilatación y la erosión, la detección de contornos o bordes. Una vez que se completan esos pasos, los motores de OCR pueden leer la imagen y extraer perfectamente los textos relevantes.
Tabla de contenido
Herramientas utilizadas
1. CV abierto
OpenCV es una biblioteca originalmente compatible con los lenguajes C/C++ y python. Se usa comúnmente para procesar datos con muestras de imágenes. Una gran cantidad de funciones útiles predefinidas están presentes en la biblioteca que implementa las transformaciones necesarias en las muestras de imágenes. Todas las funciones antes mencionadas, como dilatación, erosión, corte, detección de bordes y muchas más, se pueden realizar fácilmente con esta biblioteca.
2. Motor Tesseract OCR
Lanzado por Google, es una biblioteca de código abierto que se usa ampliamente para el reconocimiento de texto. Se puede utilizar para detectar e identificar textos en varios idiomas. El procesamiento es bastante rápido y proporciona la salida textual de una imagen casi de inmediato. Muchas aplicaciones de escaneo aprovechan esta biblioteca y confían en sus técnicas de extracción.
Pasos involucrados en el proceso de extracción de texto
(1) En primer lugar, las posibles técnicas de procesamiento de imágenes, como la detección de contornos, la eliminación de ruido y las funciones de erosión y dilatación, se aplican a la muestra de imagen ruidosa entrante.
(2) Después de este paso, se eliminan las marcas de agua y las sombras del billete.
(3) Además, el proyecto de ley está segmentado en partes.
(4) Las partes segmentadas se pasan a través del motor Tesseract OCR para obtener el texto completo.
(5) Finalmente, al usar Regex, obtenemos toda la información vital, como el monto total, la fecha de compra y los gastos por artículo.
permítanme hablar sobre una imagen específica con textos: facturas y facturas. Suelen tener marcas de agua, la mayoría de la empresa que emite los billetes. Como se mencionó anteriormente, estas marcas de agua son impedimentos para una extracción de texto eficiente. A menudo, estas marcas de agua contienen el texto.
Estos pueden considerarse como ruido, ya que el motor Tesseract reconoce textos de todos los tamaños en una línea. Al igual que las marcas de agua, las sombras también inhiben la precisión del motor para extraer textos de manera eficiente. Las sombras se eliminan mejorando el contraste y el brillo de la imagen.
Para las imágenes que tienen pegatinas o marcas de agua, se lleva a cabo un proceso de varios pasos. El proceso implica convertir una imagen a escala de grises, aplicar transformaciones morfológicas, aplicar umbrales (puede ser una inversión binaria o una transformación otsu), extraer los píxeles más oscuros en la región más oscura y, por último, pegar los píxeles más oscuros en la región de la marca de agua. Volviendo al proceso de eliminación de sombras.
En primer lugar, se aplica la dilatación a la imagen en escala de grises. Por encima de esto, un azul medio con un kernel apropiado suprime el texto. El resultado de este paso es una imagen que contiene porciones de sombras y cualquier otra decoloración presente. Ahora se calcula una simple operación de diferencia entre la imagen original y la imagen obtenida. Finalmente, después de aplicar umbralización lo que obtenemos es una imagen sin sombras.
Reconocimiento y Extracción de Texto
Se puede construir y entrenar un modelo de red neuronal convolucional en el texto impreso que se encuentra en las imágenes. El modelo se puede utilizar además para detectar texto de otras imágenes similares con la misma fuente. Se utiliza un motor Tesseract OCR para recuperar el texto de las imágenes que han sido procesadas utilizando los algoritmos de visión artificial.
Para el reconocimiento óptico de caracteres, tenemos que realizar la localización del texto, seguida de la segmentación de caracteres y, luego, el reconocimiento de caracteres. Todos estos pasos los lleva a cabo Tesseract OCR. El motor Tesseract OCR demuestra ser muy preciso cuando se usa en texto impreso en lugar de texto escrito a mano.
Obtener información relevante
Hablando específicamente de facturas, de todo el texto extraído, se puede obtener fácilmente información vital como la fecha de compra, el monto total, etc. utilizando múltiples expresiones regulares. El importe total que se imprime en la factura se puede extraer aplicando expresiones regulares debido a que suele aparecer al final de la factura. Muchas de estas piezas de información útiles se pueden almacenar de acuerdo con sus fechas para que sean fácilmente accesibles.
Exactitud
La precisión para la recuperación de texto se puede definir como la relación entre la cantidad correcta de información que obtiene Tesseract OCR y que ya está en la factura con la cantidad acumulada de palabras realmente presentes en la imagen textual. Una mayor precisión significa una mayor eficiencia de las técnicas de preprocesamiento y la capacidad de Tesseract OCR para extraer información.
¿Qué sigue?
Si está interesado en obtener más información sobre el aprendizaje automático, consulte el Diploma PG en aprendizaje automático e IA de IIIT-B y upGrad, que está diseñado para profesionales que trabajan y ofrece más de 450 horas de capacitación rigurosa, más de 30 estudios de casos y asignaciones, IIIT- B Estado de exalumno, más de 5 proyectos prácticos finales prácticos y asistencia laboral con las mejores empresas.
Aprenda el curso ML de las mejores universidades del mundo. Obtenga programas de maestría, PGP ejecutivo o certificado avanzado para acelerar su carrera.