Reconocimiento Óptico de Caracteres (OCR) Carlos Javier Sánchez Fernández Ingeniería de telecomunicaciones Víctor Sandonís Consuegra Ingeniería de telecomunicaciones Universidad Carlos III Av. De la Universidad, 30 28911 Leganés (Madrid) Universidad Carlos III Av. De la Universidad, 30 28911 Leganés (Madrid) [email protected] [email protected] RESUMEN En este artículo se describen las técnicas más importantes para el reconocimiento óptico de caracteres. De cada una de las técnicas vistas se detallan sus fundamentos y se señalan sus características más importantes. Términos Generales Algorithms, Documentation, Human Factors, Languages. Palabras Clave OCR, redes neuronales, árboles de decisión, algoritmo knn, Reconocimiento de Formas, Backpropagation. 1. INTRODUCCIÓN Cuando se dispone de información en forma de documento impreso y se desea procesarla mediante un computador, existen dos opciones: una primera consistiría en introducirla a través del teclado, labor larga y tediosa. Otra posibilidad es automatizar esta operación por medio de un sistema de OCR compuesto de un software y hardware adecuado que reduciría considerablemente el tiempo de entrada de datos. La tecnología de reconocimiento de caracteres, OCR (Optical Character Recognition) engloba a un conjunto de técnicas basadas en estadísticas, en las formas de los caracteres, transformadas y en comparaciones, que complementándose entre sí, se emplean para distinguir de forma automática entre los diferentes caracteres alfanuméricos existentes. En realidad no se reconocen exactamente los caracteres de un determinado alfabeto, sino que es posible distinguir entre cualquier conjunto de formas o símbolos. Sin embargo, se debe tener en cuenta que la precisión que se obtiene en la práctica al intentar distinguir entre un conjunto de símbolos no es del 100%. Por lo tanto, es fácil deducir que cuanto más numeroso es el conjunto de símbolos entre los que se debe decidir, mayor es la probabilidad de que se produzca un fallo de clasificación. En todo sistema de reconocimiento óptico de caracteres (OCR) se distinguen al menos estas 4 etapas: •Adecuación de la imagen (preproceso). •Selección de la zona de interés (segmentación). •Representación digital de la imagen (extracción de características). •Distinción del carácter contenido en la imagen (reconocimiento). Para cada una de las cuatro etapas es posible aplicar multitud de técnicas ya existentes o desarrollar alguna específica en función de las condiciones en las que se presentan los datos de entrada, que en el caso de OCR se puede traducir por las imágenes de entrada. Uno de los pasos más difíciles es la extracción de las características, ya que es de gran dificultad elegir un conjunto óptimo de características. En general para que una característica sea buena debe tener: a) b) c) d) Discriminación: Deben ser características que diferencien suficientemente una clase de otra. Deben tener igual valor para mismas clases. Independencia: Las características deben estar incorreladas unas de otras. Pequeño espacio para características: El número de características debe ser pequeño para la rapidez y facilidad de clasificación. Además las requerimientos computacional, estos motivos óptimas. características deben contar con otros como son que tengan un bajo gasto tanto en tiempo como en complejidad. Debido a es muy difícil conseguir unas características A lo largo del documento se van a describir las distintas etapas en las que se puede dividir un sistema OCR y se analizarán tres técnicas en las que se basan los sistemas de reconocimiento de caracteres: OCR basado en árboles binarios, OCR basado en redes neuronales y OCR basado en el algoritmo knn. 2. PREPROCESAMIENTO Normalmente, las técnicas de OCR son útiles para digitalizar textos de algún libro (caracteres impresos) o formularios rellenados manualmente (caracteres manuscritos). Tanto en un caso como en el otro el desglose de los caracteres individuales es mucho más sencillo que en el caso de texto manuscrito continuo, para el que es necesario la aplicación de técnicas de preproceso y segmentación más complejas que en el caso de OCR. En esta fase de preprocesamiento (o adecuación de la imagen) el objetivo que se persigue es eliminar de la imagen de cualquier tipo de ruido o imperfección que no pertenezca al carácter, así como normalizar el tamaño del mismo. Además, para el caso de OCR, la normalización de la imagen también puede implicar un binarizado de la misma. Para la eliminación del ruido que puede aparecer en una imagen digital, bien provocado por manchas reales o grafías imperfectas, o bien por defectos técnicos en la adquisición o binarizado de la imagen, se utilizan diversos algoritmos: • Etiquetado: para la división de la imagen en regiones de componentes conectadas. • Erosión / expansión: para la eliminación de pequeños grupos de píxeles. • Umbralizado de histograma: para eliminar/seleccionar los objetos más brillantes o más oscuros de la imagen. 3. SEGMENTACIÓN Una vez preprocesada la imagen se deberá fragmentar o segmentar en las diferentes componentes conexas (parte de la imagen donde todos los píxeles son adyacentes entre sí) que la componen. La fragmentación o segmentación de la imagen constituye una de las mayores dificultades del reconocimiento, y se hace necesaria para poder reconocer cada uno de los caracteres de la imagen binaria. La fragmentación o segmentación es la operación que permite la descomposición de un texto en diferentes entidades lógicas. Estas entidades lógicas deben ser lo suficientemente invariables, para ser independientes del escritor, y lo suficientemente significativas para su reconocimiento. Para reconocer caracteres es necesaria, en primer lugar, su localización dentro del texto del documento, teniendo en cuenta, en esta operación el orden en el que se disponen en el mismo y los espacios en blanco y finales de línea, para que pueda recomponerse el texto tal y como se encontraba en el documento original. Existen tres magnitudes que determinan el orden de los caracteres dentro de un texto: los renglones de los que consta, las palabras de un renglón y las letras de una palabra. ahí estará el final del renglón. Este método se aplica sucesivamente hasta el final de la matriz de proyección, consiguiendo así delimitar los renglones que forman el texto. Una vez conocida la situación de los renglones y sus límites, se procede a aislar los caracteres. Como asumíamos inicialmente que no existiría solapamiento, se puede realizar una proyección vertical dentro de cada renglón para detectar los posibles caracteres. Esta proyección vertical (suma de los píxeles de cada línea con 1 para el píxel negro y 0 para el blanco) da un resultado nulo en las zonas donde no existe tinta, lo que representa la separación entre dos caracteres, y resultados no nulos que indican la presencia de caracteres. Los límites en altura, superior e inferior, se detectan analizando la vertical de cada carácter, desde la parte superior e inferior, respectivamente, del renglón que lo contiene. De esta forma, se consigue aislar cada carácter en una ventana rectangular con las dimensiones correspondientes, su anchura y altura. Este método, además, es válido aún en el caso de existir caracteres de distinto tamaño dentro del mismo texto. En cuanto a los caracteres "blancos" (espacios entre palabras), éstos se detectan cuando la separación entre dos caracteres consecutivos es mayor que un umbral dependiente de la altura del primero. Como ya se ha comentado anteriormente, la segmentación del texto manuscrito es un caso más complejo que el tratado en OCR, donde los caracteres, bien se encuentran claramente separados en la imagen original (formularios con campos perfectamente delimitados) o bien es posible separarlos de manera relativamente fácil, ya que su escritura es regular y presenta características aprovechables para este fin. En el primer caso nos encontramos en las condiciones más favorables, puesto que la segmentación de los caracteres viene dada por la demarcación de los límites de los campos en los que se espera que se rellene el formulario. Esta información la conocemos a priori y es una de las formas más fiables de realizar la segmentación con éxito. A la hora de segmentar un texto lo primero que se hace es detectar los distintos renglones que forman el texto. Para conseguirlo se realiza el siguiente procedimiento: 1. 2. Se hace una proyección horizontal (histograma) consistente en contar los elementos de tinta que existentes en cada una de las filas, traspasando estos valores a otra matriz, unidimensional, resultado de la proyección, en la que existirán diferentes zonas de densidad de tinta separadas por otras vacías. Cada zona donde la proyección dé un valor no nulo será interpretado como un hipotético renglón. Se analiza la matriz unidimensional para detectar los posibles renglones de los que está compuesto el texto. Si se detecta una línea con densidad de proyección no nula y además la anterior estaba en blanco, en esa línea comienza un renglón. A continuación se realiza la misma operación pero a la inversa, se busca la línea posterior que sea blanca y que la anterior no lo fuera, Figura 1. Ejemplo de segmentación y normalización. De arriba hacia abajo: imagen original dividida por las marcas de un campo de un formulario, eliminación de ruido y detección de la caja mínima de inclusión, y normalización del tamaño de los caracteres. En la figura 1 se muestra el proceso de segmentación y normalización de un campo de texto extraído de un formulario manuscrito. Sin embargo, para el caso de texto continuo se requiere la explotación de alguna característica del mismo, como puede ser la longitud de los caracteres (en el caso más sencillo), los valles de separación entre letras o números distintos, las proyecciones del texto sobre líneas imaginarias y el posterior análisis de los perfiles obtenidos, etc. La utilización de estos métodos está supeditada a las características concretas del texto que se desea segmentar, por lo tanto el uso de los mismos o de otros distintos se decide tras un análisis de los datos con los que se debe trabajar. 4. EXTRACCIÓN DE CARACTERÍSTICAS Una vez realizada la segmentación, se tiene una imagen normalizada en la que se encuentra la información susceptible de ser “reconocida”. La información así representada, una matriz bidimensional de valores binarios, niveles de gris o color RGB, no codifica de forma óptima las características más discriminativas del objeto al que representa. Desde el punto de vista del reconocimiento de formas, la matriz bidimensional se ve como un vector de tantas dimensiones como componentes tiene la matriz. La dimensión de estos vectores (el número de componentes) es normalmente elevado, lo que supone un gran coste computacional a la hora de procesar el mismo. Y no solo eso, y más importante aún, es que está comprobado que al intentar clasificar (“reconocer”) vectores de este tamaño aparece un efecto, llamado maldición de la dimensionalidad, que provoca que los resultados, independientemente del método de clasificación utilizado, no sean satisfactorios. Por ello se han desarrollado multitud de técnicas, denominadas “técnicas de selección y extracción de características”, mediante las cuales es posible obtener una representación del objeto a reconocer más eficiente. Eficiencia, en este caso, significa que con una representación más compacta se consigue un poder discriminativo igual o superior al que se tenía con la representación original. Esto no es solo importante por el ahorro de espacio en el almacenamiento de las muestras, sino que durante el proceso de reconocimiento reduce los costes computacionales, debido a la reducción en el volumen de información procesado. La extracción de las características es una de las fases más difíciles en los sistemas de reconocimiento de caracteres, puesto que es muy difícil escoger un conjunto de características óptimo. Para que una característica se pueda considerar buena debe poseer: • Discriminación: Deben ser características diferencien suficientemente una clase de otra. • Deben tener igual valor para mismas clases. • Independencia: Las características incorreladas unas de otras. • Pequeño espacio para características: El número de características debe ser pequeño para la rapidez y facilidad de clasificación. deben que estar En el campo de investigación del reconocimiento de formas se tiene experiencia en el uso de algunos métodos de extracción de características basados en transformaciones del espacio de representación de las muestras. Ejemplos de estos métodos son: • PCA (Principal Component Analysis): El objetivo de esta técnica es definir una transformación lineal desde el espacio de representación original a un nuevo espacio en el que las distintas clases de las muestras quedan mejor separadas. Esta transformación permite reducir la dimensión del nuevo espacio sin perjudicar sensiblemente la capacidad discriminativa de la nueva representación. • LDA (Linear Discriminant Analysis): LDA se parece mucho a PCA ya que ambos utilizan combinaciones lineales de variables para representar a los datos. En concreto, LDA modela la diferencia entre las clases de datos mientras que PCA no tiene en cuenta ninguna diferenciación de clases de datos. • ICA (Independent Component Analysis): ICA es un método computacional para separar señales en subcomponentes aditivas suponiendo independencia estadística de las señales no gaussianas. • NDA (Non-linear Discriminant Analysis): NDA sigue la misma idea que LDA pero representa los datos mediante combinaciones no lineales. 5. RECONOCIMIENTO Una vez se tienen las características más importantes de la imagen a analizar hay que determinar el carácter correspondiente por medio de las técnicas de minería de datos que se explicarán a continuación. 5.1 KNN Para OCR, existe un método muy conveniente, no paramétrico y supervisado, que proporciona resultados muy adecuados para la aplicación que se está tratando, El algoritmo K-NN (K vecinos más próximos). Este método es muy popular debido a su sencillez y a cierto número de propiedades estadísticas bien conocidas que le proporcionan un buen comportamiento para afrontar diversos tipos de problemas de clasificación, siendo uno de ellos el de OCR. Dado un conjunto de objetos prototipo de los que ya se conoce su clase (es decir, dado un conjunto de caracteres de muestra) y dado un nuevo objeto cuya clase no conocemos (imagen de un carácter a reconocer) se busca entre el conjunto de prototipos los “k” más parecidos a nuevo objeto. A este se le asigna la clase más numerosa entre los “k” objetos prototipo seleccionados. Fase de entrenamiento y fase de test. Conociendo el funcionamiento básico del método de clasificación de los “k vecinos más próximos” es obvio que para poder empezar a trabajar con este método es necesario reunir un conjunto de datos etiquetados, es decir, un conjunto de muestras prototipo con las clases a las que pertenecen. En OCR, esta recolección implica disponer de una base de datos de imágenes de los tipos de caracteres que posteriormente se esperen reconocer. A este conjunto de datos se le denomina conjunto de entrenamiento. Sin embargo, la fase de entrenamiento no solo consiste en la recopilación de estos datos, sino que, típicamente, los datos originales que se dedican al entrenamiento deben ser preprocesados adecuadamente para obtener representaciones compactas y coherentes. En el ejemplo de OCR, esto quiere decir que las imágenes deben ser segmentadas (eliminación de ruido y selección de la caja mínima de inclusión), normalizadas y transformadas (extracción de características) para obtener los vectores de baja dimensionalidad que finalmente se almacenan como conjunto de entrenamiento. Con este conjunto de entrenamiento ya construido, el clasificador “knn” ya puede ser utilizado para reconocer la clase de una nueva muestra. Esta es la fase de test y lógicamente, también aquí es necesario aplicar todo el preproceso descrito anteriormente a cada una de las nuevas muestras. Por lo tanto, aquí se ve la necesidad de disponer de métodos rápidos de realizar estas tareas de preproceso, puesto que la velocidad de reconocimiento dependerá, en parte, de ellos. En la práctica se tiene que este preproceso es posible realizarlo muy rápidamente, aunque justo a continuación aparece la parte del proceso de reconocimiento que normalmente más carga computacional conlleva, la clasificación. Técnicas de búsqueda rápida de vecinos Se ha visto que el método de clasificación “knn” requiere la construcción de un conjunto de prototipos. El tamaño, entre otras cosas, de este conjunto influye en la precisión del clasificador. Debido a la naturaleza estadística del método de clasificación, cuantos más prototipos contiene este conjunto mayor exactitud se consigue aunque al mismo tiempo mayor complejidad se introduce para realizar las búsquedas, aumentando el coste computacional. En tareas de OCR es frecuente utilizar conjuntos de referencia de más de 200.000 muestras. Con estos tamaños surge la necesidad de diseñar estructuras de datos adecuadas para realizar las búsquedas de forma optimizada, pues una búsqueda exhaustiva requeriría demasiado tiempo y se degradarían las prestaciones del sistema de OCR. En esta línea se han desarrollado algunos algoritmos de búsqueda rápida de vecinos y sus correspondientes estructuras de datos (voronoy polygons, k-d-trees, r-trees, etc.), que intentar paliar el problema del coste de realizar búsquedas en grandes conjuntos de datos multidimensionales. Para diversas tareas que combinan técnicas de reconocimiento de formas y visión por computador, los k-d-trees son una buena opción para implementar los algoritmos de búsqueda. De hecho, en el ITI se han empleado algoritmos de búsqueda aproximada sobre k-dtrees con diversas tareas (reconocimiento de caras, matrículas y caracteres) obteniendo resultados competitivos, tanto en velocidad como en precisión. 5.2. Árboles de decisión Los árboles de decisión, al igual que el K-NN, es una técnica de minería de datos que se puede aplicar en el contexto de reconocimiento óptico de caracteres. Su aprendizaje es inductivo y no supervisado. Los patrones o atributos que se quieren evaluar de un carácter determinado constituyen los nodos del árbol, mientras que los resultados finales de los mismos se almacenarán en las hojas del mismo. Tras la construcción del árbol y dada la estructura del mismo, toda la evaluación de caracteres se puede tratar como una arquitectura IF-THENELSE, por lo que si el número de parámetros a evaluar es suficientemente grande para tener capacidad expresiva pero suficientemente pequeño para ser eficiente computacionalmente, el árbol resulta una estructura que favorece mucho la velocidad de cálculo, no como el algoritmo K-NN que aunque muy conveniente, puede llegar a ser muy costoso computacionalmente. Durante el aprendizaje, el orden de evaluación de los parámetros es fundamental para alcanzar el ajuste óptimo del árbol. Para ello se emplean una serie de funciones de evaluación que a la vista de los datos, determinan la relevancia o la correlación de unos parámetros en función de los otros, definiendo una ganancia de información, que a la postre es la reducción de la entropía del sistema. La secuencia de aprendizaje del árbol se puede resumir en el siguiente diagrama: Una vez se tiene construido el árbol hay que detallar como recorrerlo. En definitiva, si durante el recorrido se llega a una hoja, esa serie de patrones responden a un carácter reconocido y por tanto se devuelve. Si en el recorrido y después de evaluar todo el árbol no se llega a una hoja, se deduce que esa característica no ha sido consignada en el árbol y por tanto se debe crear una nueva hoja para guardar el nuevo dato. Un esquema muy ilustrativo de cómo recorrer un árbol de decisión es el siguiente: La topología de las redes puede ser muy variada y según esta topología las redes se pueden clasificar en: • • • Feed Fordward: Red clásica, las salidas alimentan las entradas de la etapa siguiente, en la red no se permite la aparición de ciclos o realimentaciones Feed Back: En esta versión si se permiten ciclos cerrados dentro de la red Lateral: Adicionalmente, se permite la comunicación vertical entre neuronas de la misma capa, además de en la dirección horizontal, como en las redes clásicas. La versatilidad de las redes de neuronas permite extender su clasificación también a la naturaleza de sus datos y relacionados con estos, el tipo de aprendizaje que realizan. Por tanto, las redes que atienden a esta clasificación son: No obstante, se puede diseñar un algoritmo de poda, o prunning, para reducir la complejidad del árbol y así conseguir que su evaluación sea todavía más rápida y eficiente. 5.3 Redes neuronales Las redes neuronales son esquemas de minería de datos que intentan imitar la arquitectura del cerebro. Se componen de una serie de unidades básicas, llamadas neuronas, que básicamente reciben una entrada, la multiplican por unos pesos y presentan una salida con una función de ajuste, que depende de la suma de salidas de la etapa anterior. Sirven para representar y ajustar muy eficazmente cualquier función que sería muy difícil de definir en términos algebraicos. En el caso que nos ocupa, las redes de neuronas son una muy buena alternativa para la etapa de reconocimiento de caracteres, ya que una vez se entrenan, si este entrenamiento ha sido adecuado, pueden usarse para reconocer los caracteres que recibe como imágenes. Un esquema funcional de una red de neuronas podría ser el siguiente: En el caso de OCR el aprendizaje es supervisado, pero si se atiende al tipo de datos, según el preporcesado que se haga de los datos scanneados, se puede recurrir a una interpretación continua o discreta de los mismos, resultando en la mayoría de los casos redes basadas en el perceptrón o redes de Hamming si todas las características que se extraen son binarias. 6. EJEMPLO DE FUNCIONAMIENTO Tras analizar los métodos y técnicas que se utilizan para el reconocimiento óptico de caracteres (OCR), vamos a describir de manera más detallada el proceso completo haciendo alusión a los puntos antes expuestos y centrándose en el método de árboles de decisión, aunque sin pérdida de generalidad, ya que estas características se pueden aplicar tanto a redes neuronales como a KNN. Por lo tanto, supondremos que partimos de una imagen de un texto escrito, organizado en renglones. La estrategia de resolución del problema de OCR tendrá los siguientes pasos: • Detección de renglones • Separación de caracteres 6.2 Agujeros • Extracción de características • Introducción en la red de neuronas • Reconocimiento final del texto Tras el análisis de las transiciones y mediante el análisis de las mismas, se puede determinar, según el número, si el carácter en concreto tiene agujeros, es decir, trazos cerrados o no. Esta característica es muy descriptiva, ya que permite un primer descarte muy fuerte entre un grupo y otro. Ejemplo: El esquema básico a seguir será: 6.3 Puntos finales y de bifurcación Para evitar repetir procesos antes descritos, se va a suponer que el texto ya está segmentado y nos centraremos en la parte más interesante del proceso, que es la extracción de características y adecuadas para que la red de neuronas funcione de la manera más adecuada posible. Una vez se tiene una idea de si el carácter tiene agujeros o no, hay que recorrer la matriz normalizada y adelgazada para determinar los punto finales (que de sus ocho vecinos sólo uno es un pixel negro) o los puntos de bifurcación (3 o más de sus vecinos son un pixel negro). Esta característica define y diferencia muy bien unos caracteres de otros, siempre y cuando sean caracteres mecanografiados. Según [4], un proceso de extracción de características muy adecuado sería el siguiente: 6.4 Perímetro y posición relativa 6.1 Transiciones en los ejes Las últimas características a analizar son el perímetro y la posición relativa del carácter en cada renglón. Para esta última característica se requiere el texto sin segmentar. Cuando se tiene la imagen normalizada, se le hacen 2 cortes a la mitad, en el eje X e Y y se cuenta el número de transiones negro blanco y blanco negro, centrándose en 2 características, si hay 2 transiciones únicamente (como en la I,T) o no las hay. Ejemplo: Con todos estos datos, sólo hay que seleccionar uno de los métodos antes explicados y entrenar la máquina con ellos, a fin de conseguir una clasificación óptima de los caracteres obtenido por el scanner. 7. APLICACIONES Existe un gran número de aplicaciones para las técnicas de reconocimiento de caracteres (OCR). A continuación se proporcionan algunos ejemplos: 7.1 Procesado automático de facturas impresas Consiste en un tratamiento digital completo de los documentos con los que se trabaja en un servicio de gestión contable. El tratamiento de estos documentos se traduce en la exploración óptica de los mismos, la determinación de su tipo entre diversos modelos previamente registrados, localización y reconocimiento de los campos informativos, validación manual y finalmente la transferencia de la información obtenida. Figura 2. Ejemplo de segmentación de una matrícula de vehículo. Por último se clasificarían los caracteres de la imagen resultante ajustándose al modelo lingüístico conocido: el formato de las matrículas. 8. REFERENCIAS [1] José R. Hilera González, Juan P. Romero Villaverde, José A. Gutiérrez de Mesa. SISTEMA DE RECONOCIMIENTO ÓPTICO DE CARACTERES (OCR) CON REDES NEURONALES http://www.cc.uah.es/hilera/docs/1996/c_jiacse1/c_jiacse1. htm [2] Javier Cano y Juan Carlos Pérez.OCR (Optical Character Recognition) http://zweb.iti.upv.es/services/reviewtic/public/2003/11/20 03-11-ocr [3] José Ramón Rodón Ortiz, Javier Ráez Rus, Ismael Vargas Pina. 2004.Trabajo dirigido:“OCR basado en árboles binarios”. [4] OCR para caracteres impresos basados en árboles binarios. http://alojamientos.us.es/gtocoma/pid/pid10/OCRarbolbina rio.htm 7.2 Identificación de matrículas de vehículos En el proceso de identificación de una matrícula se distinguen diversas etapas: En la etapa de segmentación se buscan texturas similares a una matrícula. Posteriormente se aplica un postproceso sobre los puntos candidatos a pertenecer a zonas de matrícula y se devuelve el área rectangular en la que se encuentra la matrícula, tal y como se aprecia en la figura 2.