Mostrando entradas con la etiqueta OCR. Mostrar todas las entradas
Mostrando entradas con la etiqueta OCR. Mostrar todas las entradas

viernes, 17 de mayo de 2019

Los algoritmos de Optical Character Recognition con Arindam Chaudhuri et al.

'Optical Character Recognition for different languajes with soft computing' es una obra muy especializada y técnica sobre reconocimiento óptico de caracteres. Su objetivo es mostrar el trabajo llevado a cabo por el equipo que redacta el libro y con el que quieren demostrar que las técnicas de soft computing son más efectivas que los algoritmos tradicionales en la tarea del reconocimiento de textos.

El libro se estructura en diez capítulos, siendo el primero '1. Introduction' una explicación de en qué consiste el propio libro.

El segundo capítulo, '2. Optical Character Recognition Systems' es, para mi gusto, el capítulo más interesante y el que contiene la información que realmente estaba buscando al leer este libro, a saber, el funcionamiento y algoritmia ligada al reconocimiento óptico de caracteres. Se nos proporciona algo de background y perspectiva histórica para luego repasar las diferentes técnicas siguiendo el esquema secuencial de aplicación: escaneado óptico, segmentación de localización, preprocesado, segmentación, representación, extracción de características, entrenamiento y reconocimiento y postproceso.

El tercer capítulo '3. Soft Computing Techniques for Optical Character Recognition Systems' es, sin embargo, el capítulo que entiendo principal desde el punto de vista de los autores, puesto que en él se explican las técnicas de soft computing que los autores defienden como más eficaces. Nos hablan de conjuntos difusos ('fuzzy sets'), algoritmos genéticos, la transformada de Hough, variantes difusas del Perceptrón Multicapa o los Support Vector Machines, etc

A continuación en los siguientes capítulos se aplican las técnicas descritas en el tercer capítulo a diferentes idiomas y se analizan los resultados. Siguiendo un esquema muy parecido, se desarrollan los siguientes capítulos:
  • '4. Optical Character Recognition for English Language'
  • '5. Optical Character Recognition for French Language'
  • '6. Optical Character Recognition for German Language'
  • '7. Optical Character Recognition for Latin Language'
  • '8. Optical Character Recognition for Hindi Language'
  • '9. Optical Character Recognition for Gujrati Language'
En todos ellos se proporciona una breve introducción sobre el idioma en si, sobre alguno de los retos que plantea desde el punto de vista de OCR, las fuentes de datos usadas, qué técnicas y cómo se han aplicado y los resultados obtenidos.

Finaliza el libro con el capítulo '10. Summary and future research' que, siguiendo el estilo académico habitual, resume los hallazgos y plantea siguientes líneas de trabajo.

Un libro de alta calidad pero también muy, muy duro de leer, pensado para estudiantes e investigadores muy especializados y con un gran dominio de la algoritmia y mucho interés en ella.

Arindam Chaudhuri

(Fuente: Elaboración propia)

Arindam Chaudhuri
Experto en Pattern Recognition y Machine Learning, actualmente trabaja como ingeniero de investigación en Google Tokio donde se centra en las aplicaciones de negocio del Machine Learning.

Anteriormente, y durante dos años, fue profesor de 'Computer Science' en la NIIT University cercana a Delhi, India.

Arindan Chauduri tiene un doctorado en Computer Science por la Netaji Subhas Open University de Bengala.

Ficha técnica:

AUTOR: Arindam Chauduri, Krupa Mandaviya, Pratixa Badelia y Soumya K Ghosh.
EDITORIAL: Springer
AÑO: 2019
ISBN: 978-3319843575
PAGINAS: 268

Artículos de este blog relacionados

lunes, 22 de abril de 2019

Los diez elementos de un sistema OCR (Optical Character Recognition)


Aunque OCR ('Optical Character Recognition') es una tecnología en apariencia bastante antigua, está ganando cierta actualidad hoy en día en círculos especializados gracias, por un lado, a las aportaciones que recibe procedentes de los avances en Inteligencia Artificial y, por otro, a su inclusión como elemento importante de soluciones de Automatización Robótica de Procesos (RPA, 'Robotic Process Automation') o de Captura Inteligente ('Intelligent Capture').

Por eso me ha interesado revisar sus fundamentos y actualidad tecnológica para lo cual estoy leyendo el libro 'Optical Character Recognition Systems for Different Languages with Soft Computing' de Arindam Chaudhuri, Krupa Mandaviya, Pratixa Badelia y Soumya K Ghosh, uno de los pocos documentos en formato libro que parecen estar disponibles.

Aunque el libro se concentra en avances en lo que denomina 'soft computing' y que se centran en la aportación de conceptos de conjuntos difusos ('fuzzy') en los algoritmos y los resultados al aplicarlo en diversos idiomas, tiene un segundo capítulo muy interesante por la perspectiva que aporta respecto a la tecnología de OCR, que es justo lo que estaba buscando.

En concreto, los autores estructuran las tecnologías de OCR en diez pasos o elementos que se desarrollan de forma secuencial y que permiten, me parece, tener un buen marco conceptual y tecnológico. Estos son esos diez elementos:

  • Entrada de texto: Se trata simplemente, de disponer del texto en algún formato, pensemos, por ejemplo, en un texto en papel o un correo electrónico. 

  • Escaneado óptico: Ese texto, cuando es necesario, se pasa por un escáner óptico que traduce el formato analógico original en un formato digital sobre el que empezar a trabajar.

  • Segmentación de localizaciones: Este paso, primero plenamente algorítmico, intenta detectar los elementos constituyentes de una imagen y separar las partes de datos y documentos de las que recogen imágenes o figuras. Como ejemplo, los autores nos mencionan, en el caso de un correo electrónico, el separar el texto de elementos como el logo de la compañía o sellos diversos.  En este paso, además, y ya para los textos, estos se separan en letras y palabras, operando la mayor parte de los algoritmos a nivel de letra.

  • Pre-procesado: Realiza una preparación de los datos en bruto, antes de someterlo a los siguientes análisis. Así, por ejemplo, se aplica el 'smoothing' (suavizado) para eliminar ruido y defectos del escaneado. En este proceso se produce tanto el rellenado de pequeños gaps o agujeros que puedan haber quedado ('filling') como el adelgazamiento ('thinning') de algunas líneas. En el filtrado se suelen utilizar algoritmos de filtrado por convolución con diferentes máscaras. Otra técnica que se aplica en paralelo es la normalización mediante la cual se intenta conseguir caracteres de igual tamaño, inclinación y rotación. Para conseguir lo que se denomina una línea base (es decir, la línea en que virtualmente se 'apoyan' los caracteres de una línea de texto), se aplican algoritmos como 'nearest neighbor clustering', correlación cruzada entre líneas o la transformada de Hough. Para normalizar la inclinación se puede utilizar una variante de la transformada de Hough  Otros algoritmos y técnicas se aplican también para el escalado y normalización del tamaño de los caracteres o para la suavización ('smoothing') de contornos. Para hacer más fácil el tratamiento posterior se suele intentar un formato de tipo blanco o negro mediante el 'umbralizado' ('thesholding') donde da buenos resultados el método adaptativo local de Niblack. Para el adelgazamiento ('thinning') de líneas existen diversos algoritmos, algunos que actúan a nivel de píxel y otros en entornos más amplios. 

  • Segmentación: Una vez que el prepocesado nos proporciona unas imágenes del texto limpias, comprimidas, con bajo ruido y normalizadas, la segmentación trata de separar la imagen del texto en sus componentes. Para ello existen estrategias explícitas, implícitas y mixtas. En las explícitas se trabaja en propiedades a nivel carácter pero sin información de formas o clases específicas y se emplean tecnologías de análisis de disección ('dissection analysis'). Las implícitas, por su parte, se basan en el reconocimiento es decir, sí que trabaja con clases predefinidas y busca reconocer esas clases en el texto. Para ello utilizan algoritmos bien de proceso de búsqueda o bien de segmentación de características de las imágenes.  En este segundo caso se utilizan, Modelos Ocultos de Markov ('Hidden Markov Models') y otros algoritmos no de Markov reutilizando técnicas procedentes de la identificación de objetos ocultos en visión artificial. Las estrategias mixtas, evidentemente, combinan las técnicas anteriores y suelen proporcionar los mejores resultados.

  • Representación: La representación genera la información que se utilizará en el reconocimiento. En los casos más sencillos son simples niveles de gris o binarios. Existen tres tipos de métodos: transformadas globales y expansión en series ('global transformation and series expansion'), representación estadística y representación topológica/geométrica. Las primeras se basan en el hecho de que una señal continua se puede representar como una serie infinita de otras señales más sencillas. y utilizan técnicas como la transformada de Fourier, la transformada de Gabor, wavelets, momentos o la expansión de Karhunen Loeve. La representación estadística utiliza distribuciones estadísticas de diversos aspectos y se centra en características como las densidad de zonas, cruces y distancias o proyecciones. Finalmente, en las representaciones geométricas y topológicas se representan algunas propiedades de los caracteres con alta tolerancia a la distorsión y variaciones de estilo.  

  • Extracción de características: Su misión es capturar las características principales de los símbolos y realizar una clasificación. Para la extracción de características se utilizan técnicas de distribución de puntos, transformadas y expansión en series y análisis estructural. En clasificación se puede realizar mediante dos enfoques: decisión teórica, en que se emplea un vector de características para representar a un carácter y se emplean algoritmos como clasificadores de distancia, clasificadores estadísticos o redes neuronales) o métodos estructurales en que los métodos dominantes son los análisis sintácticos.  

  • Entrenamiento y reconocimiento: OCR usa ampliamente tecnología de reconocimiento de patrones ('pattern matching'), existiendo cuatro enfoques: correspondencia de plantillas ('template matching'), técnicas estadísticas, técnicas estructurales y redes neuronales, técnicas no necesariamente disjuntas ni independientes. En la correspondencia de plantillas se busca el grado de proximidad de un vectores de características entre lo que tenemos en el texto objeto de análisis y prototipos o plantillas y se presentan en variantes que buscan la correspondencia directa ('direct matching'), plantillas deformables y encaje elástico ('deformable templates and elastic matching') o correspondencia por relajación ('relaxation matching'). Las técnicas estadísticas emplean algoritmos que maximizan la probabilidad de que un patrón observado se corresponda con un modelo y emplean técnicas como análisis de clusters, modelos ocultos de Markov, razonamiento sobre conjuntos difusos, etc. Las técnicas estructurales utilizan descripciones recursivas en patrones cada vez más sencillas existiendo enfoques gramaticales y gráficos. Finalmente, las redes neuronales utilizan el enfoque conexionista empleando arquitecturas de redes como, por ejemplo, el perceptrón multicapa, o los mapas auto-organizativos de Kohonen.

  • Post-procesado: Un tratamiento final destinado a temas como agrupación (en palabras, números, etc) o detección y eliminación de errores y se apoyan con frecuencia en reglas sintácticas y diccionarios.

  • Salida de texto: Simplemente, la presentación del texto en el dispositivo o medio digital objetivo.
El listado anterior nos permite disponer de un marco de referencia para encuadrar las tecnologías y algoritmos implicados en OCR. Y también nos permite comprender hasta qué punto este tipo de soluciones, a pesar de que en cierto sentido nos hayamos acostumbrado a ellas como algo casi natural, son muy complejas y sofisticadas y con gran variedad de técnicas y algoritmos en competencia y evolución. No se trata, pues, de un campo completamente maduro y estático, sino una tecnología en evolución aunque, con frecuencia, no la percibamos de forma independiente sino integrada en soluciones más amplias.


miércoles, 17 de abril de 2019

El renacimiento de 'nuevas' tecnologías


Un breve post para transmitir una reflexión que me ha surgido hoy. No llega, en realidad, casi ni al nivel de una reflexión sino, más bien, una impresión, una sensación, algo que, simplemente, me apetece comentar.

Me encuentro leyendo el libro 'Optical Character Recognition Systems for Different Languages with Soft Computing' intentando conocer mejor las técnicas que se emplean en el reconocimiento óptico de caracteres, una de las tecnologías que se integran habitualmente dentro de las modernas soluciones de RPA ('Robotic Process Automation').

En cierto sentido, investigar sobre OCR ('Optical Character Recognition') es ya un retorno al pasado, a unas tecnologías con las que trabajé hace ya más de 25 años. Pero, además, al leer el detalle de los algoritmos utilizados, me encontré con alguna otra 'vieja amiga' como, por ejemplo, elementos de lógica difusa ('fuzzy`) de los que casi no había vuelto a oír hablar desde hace muchos años.

Tendemos, y con cierta lógica, a asociar tecnología con innovación, modernidad, novedad. Pero lo cierto es que, a veces, tecnologías ya con larga historia, el algún caso tecnologías casi muertas, alcanzan de repente notoriedad y uso. Quizá porque la evolución en las capacidades de computación las convierten en viables, quizá porque se les encuentra una aplicación práctica y comercial de la que antes carecían.

De modo muy claro, ese renacimiento afecta a todo el campo de la Inteligencia Artificial, que lleva ya  muchas décadas entre nosotros pero que, tras pasar dos severos inviernos, ahora no solo ha resurgido y ha encontrado muchísimos campos de aplicación sino que parece que no puede existir foro sobre tecnología e incluso de divulgación en que no se la menciones.

El propio OCR incluye en su seno elementos de Inteligencia Artificial y en parte eso justifica su resurgimiento.

Sea como fuere, parece que, especialmente en lo que que en lo que a algoritmos se refiere, asistimos a un interesante y casi 'vintage' renacimiento de 'nuevas tecnologías' (¿nuevas?)