LUCA Talk: Reconocimiento de caracteres a través de OCR

Thursday, March 21, 2019

LUCA Talk: Reconocimiento de caracteres a través de OCR

En nuestro día a día nos hemos podido ver en la necesidad de escanear un documento o una factura y luego poder procesar la información que contenían. En este webinar explicamos la tecnología subyacente al reconocimiento óptico de caracteres (OCR) así como la implementación de distintos frameworks especializados en esta tarea para poder crear nuestras propias aplicaciones de una forma fácil y sencilla.
Un OCR (Optical Character Recognition) es un sistema computarizado de análisis que permite escanear un documento de texto en un fichero automatizado electrónicamente, que se puede editar con un procesador de textos en el ordenador. Actualmente, existen algunas aplicaciones que permiten esto e incluso en muchos sistemas operativos ya disponen de herramientas integradas que consiguen acometer esta tarea.


En este webinar, nuestro experto Lucas Fernández Aragon explica la tecnología en la que se basa este sistema OCR y cómo se implementa. Esta técnica lleva utilizándose en computación ya mucho tiempo y se trata de una de las primeras técnicas de Visión Artificial que logró realizarse. En este LUCA Talk mostraremos el origen del sistema, los tipos de texto que nos podemos encontrar, dependiendo de si se trata de un entorno controlado o no controlado, los tipos de DataSets para entrenar nuestras redes neuronales, y las distintas estrategias que se pueden seguir para extraer el texto, según sea la técnica clásica de Visión Artificial o especializada de Deep Learning. Para terminar, Lucas muestra además un ejemplo práctico de entrenamiento que podéis consultar a través de este enlace al github.




Como en todos los webinars, al terminar la sesión, recibimos algunas preguntas que resuelve Lucas Fernández en el post de hoy:

¿Existe algún dataset para letras antiguas o textos históricos?

Como habíamos comentado en el webinar, uno de los engines con el mejor Dataset es Tesseract, soporta multitud de tipografías e incluso reconoce texto manuscrito, no he probado para textos históricos, pero infiriendo el resultado de otras pruebas, creo que sería efectivo en la extracción de texto en documentos históricos.

Aún así, según sugiere este paper el framework comercial ABBY FineReader consigue un 80.57% de precisión, mientras que con Ocropy  y el antes mencionado Tesseract se consigue un 81.66% y un 78.77% respectivamente, porcentajes relativamente parecidos.

¿Cuáles son los algoritmos utilizados para clasificar las imágenes egún entrenamientos de juegos (sets) en Google

Si nos referimos al Dataset de Street View House Numbers, se trata de un Dataset para entrenar una red neuronal, la implementación (y entrenamiento) ya depende del analista de datos que esté implementando el modelo. Al final, lo peculiar de cada Dataset viene dado por la calidad de las imágenes y su objetivo de entrenamiento, en el caso de SVHN es una recopilación de números de casas sacados de Street View, puedes encontrar más información en su página web.

Por otro lado, esta pregunta da pie a explicar la implementación que usa Google para su API de Visión Artificial. El esquema principal sería el siguiente:

Fig 1. Arquitectura de Google Cloud Vision API (Walker et al., 2018)
  • Detección de texto: Se usa un modelo basado en una Red Neuronal Convolucional (Convolutional Neural Network) como el que se explicó en el Webinar para generar un mapa a nivel pixel del texto y generar cajas delimitadoras.
  • Identificación de dirección: Se clasifica la dirección de las cajas en cuatro tipos: Norte, Este, Sur u Oeste mientras se filtran las lineas que fueron detectadas erroneamente como texto. Solo una dirección es admitida por cada caja delimitadora.
  • Identificación de script: Aquí se identifica el script principal (sistema de escritura) de cada caja delimitada, actualmente el algoritmo soporta diferentes scripts en cada caja (por ejemplo letra digital y leta manuscrita) aunque ello induce a fallos.
  • Reconocimiento de texto: Transcribe la imagen a una secuencia de códigos d epuntosUnicode, aquí se aplican algorítmos de reconocimiento de caracteres para su detección.
  • Análisis del plano: Se hace una inferencia de la estructura del texto,  se intenta detectar entre títulos, cabeceras, pies de texto, tablas…
Y con todo esto te da el resultado del proceso de OCR. Adjuntamos el paper con la implementación para una explicación más detallada, pero espero que quede claro con todo lo anterior.


¿Te has perdido alguno de nuestros webinars? Entra en la sección LUCA Talks de nuestra web y accede a todos los que quieras. ¡Hasta el próximo webinar!

Para mantenerte al día con LUCA visita nuestra página web, y no olvides seguirnos en TwitterLinkedIn YouTube.

No comments:

Post a Comment