Análisis técnico OCR
Hoy analizaremos brevemente los principios de la tecnología OCR y no involucraremos explicaciones ni derivaciones de algoritmos específicos. Después de todo, cada algoritmo puede ocupar mucho espacio y cada algoritmo se puede reescribir.
En general, el OCR se suele dividir en dos pasos principales: procesamiento de imágenes y reconocimiento de texto.
Antes del reconocimiento de caracteres, necesitamos preprocesar la imagen original para su posterior extracción y aprendizaje de características. Este proceso suele incluir: escala de grises, binarización, reducción de ruido, corrección de inclinación, segmentación de texto y otros subpasos. Cada paso implica un algoritmo diferente. Tomemos la imagen original como ejemplo para explicar cada paso.
Procesamiento de escala de grises, en el modelo RGB, si R=G=B, el color representa un tipo de gris, donde el valor de R=G=B se llama valor de escala de grises, por lo que cada imagen en escala de grises solo píxeles Requiere un byte para almacenar valores de escala de grises (también llamados valores de intensidad y valores de brillo), con un rango de escala de grises de 0-255. Para decirlo sin rodeos, significa convertir imágenes en color en imágenes en blanco y negro.
En términos generales, existen cuatro métodos para imágenes en color en escala de grises: método de componentes, método máximo, método promedio y método promedio ponderado.
La imagen incluye objetos de destino, fondo y ruido. Para extraer directamente objetos de destino de imágenes digitales de valores múltiples, el método más común es establecer un umbral T y usar T para dividir los datos de la imagen en dos partes: un grupo de píxeles mayor que T y un grupo de píxeles menor que T. Esto es El método más común para estudiar la transformación en escala de grises. El método especial se llama binarización de imágenes.
Las imágenes binarias en blanco y negro no contienen grises, solo blanco puro y negro puro.
Lo más importante de la binarización es la selección del umbral, que generalmente se divide en umbral fijo y umbral adaptativo. Los métodos de binarización comúnmente utilizados incluyen: método bimodal, método del parámetro P, método iterativo y método OTSU.
Durante el proceso de digitalización y transmisión, las imágenes digitales en realidad a menudo se ven interferidas por el ruido de los equipos de imágenes y el entorno externo, lo que se denomina imágenes con ruido o imágenes ruidosas. El proceso de reducir el ruido en imágenes digitales se llama eliminación de ruido de imagen.
El ruido en las imágenes proviene de muchas fuentes, incluida la recopilación, transmisión, compresión y otros aspectos de las imágenes. También existen diferentes tipos de ruido, como el ruido de sal y pimienta, el ruido gaussiano, etc. Diferentes ruidos tienen diferentes algoritmos de procesamiento.
En la imagen obtenida en el paso anterior, podemos ver muchos pequeños puntos negros dispersos. Este es el ruido en la imagen, lo que interferirá en gran medida con el corte y reconocimiento de la imagen por parte de nuestro programa. es necesario reducir el ruido. La reducción de ruido es muy importante en esta etapa y la calidad del algoritmo de reducción de ruido tiene un gran impacto en la extracción de características.
Los métodos de eliminación de ruido de imágenes generalmente incluyen filtrado medio, filtrado de Wiener adaptativo, filtrado de mediana, filtrado de ruido morfológico, eliminación de ruido de ondas, etc.
Para los usuarios, es imposible alcanzar un nivel absoluto al tomar fotografías. Entonces necesitamos rotar la imagen a través del programa y encontrar una posición que se considere más horizontal, para que la imagen cortada pueda tener el mejor efecto.
El método de corrección de inclinación más utilizado es la transformación de Hough. Su principio es expandir la pantalla y conectar caracteres intermitentes en una línea recta para facilitar la detección de líneas rectas. Después de calcular el ángulo de la línea recta, podemos usar un algoritmo de rotación para corregir la imagen inclinada a una posición horizontal.
Para un texto de texto múltiple, la segmentación de texto incluye dos pasos: segmentación de líneas y segmentación de caracteres, y la corrección de inclinación es el requisito previo para la segmentación de texto. Proyectamos el texto con corrección de inclinación en el eje Y y acumulamos todos los valores para obtener un histograma en el eje Y.
La parte inferior del histograma es el fondo y el pico es el área donde se encuentra el primer plano (texto). Entonces determinamos la posición de cada línea de texto.
La segmentación de caracteres es similar a la segmentación de líneas, excepto que esta vez proyectamos cada línea de texto en el eje X.
Sin embargo, cabe señalar que dos caracteres en la misma línea suelen estar muy cerca uno del otro y, en ocasiones, se superponen verticalmente. Cuando se proyecta, se considerará como un carácter, lo que provocará errores de corte (principalmente caracteres en inglés, a veces hay un pequeño espacio en la proyección de las estructuras izquierda y derecha del mismo carácter en el eje X, y se mostrará un carácter); dividirse por error en dos caracteres (principalmente caracteres ingleses) durante el corte. Entonces la segmentación de caracteres es más difícil que la segmentación de líneas.
En este caso, podemos preestablecer un valor esperado de ancho de carácter. Si la proyección del carácter cortado excede demasiado el valor esperado, se considera que son dos caracteres; Si es más pequeño que el valor esperado, se ignora y se combinan los "caracteres" en los lados izquierdo y derecho del espacio en un solo carácter para su reconocimiento.
Después del preprocesamiento, es la etapa de reconocimiento de caracteres. Esta etapa implicará algunos conocimientos de inteligencia artificial, que son relativamente abstractos y no se pueden expresar en imágenes. Intentaré mantenerlo simple y comprensible.
Las características son información clave que se utiliza para identificar personajes. Cada personaje diferente se puede distinguir de otros personajes a través de características. Para números y letras en inglés, esta extracción de características es relativamente fácil. El total * * * es 126 x 2 = 52 caracteres, y todos son conjuntos de caracteres pequeños. Para los caracteres chinos, la extracción de características es más difícil porque, en primer lugar, los caracteres chinos son un conjunto de caracteres grande y, en segundo lugar, hay 3755 caracteres chinos de primer nivel en el estándar nacional. Finalmente, la estructura de los caracteres chinos es compleja y hay muchas palabras similares, por lo que la dimensión de la característica es relativamente grande.
Después de determinar qué funciones utilizar, puede ser necesario reducir el tamaño de las funciones. En este caso, si la dimensionalidad de las características es demasiado alta, la eficiencia del clasificador se verá muy afectada. Para mejorar la tasa de reconocimiento, a menudo se requiere una reducción de dimensionalidad. Este proceso también es muy importante, no solo para reducir la dimensión de la característica, sino también para permitir que el vector de características reducido retenga suficiente información (para distinguir diferentes caracteres).
Para una imagen de texto, extraiga las características y tírelas al clasificador. El clasificador la clasificará y le dirá qué texto debe reconocerse esta característica. El diseño del clasificador es nuestra tarea. Los métodos de diseño de clasificadores generalmente incluyen: método de coincidencia de plantillas, método de función discriminante, método de clasificación de redes neuronales, método de inferencia basado en reglas, etc., que no se describirán aquí. Antes del reconocimiento real, a menudo es necesario capacitar a un clasificador, que es un proceso de aprendizaje supervisado. Existen muchos clasificadores maduros como SVM y CNN.
De hecho, es para optimizar los resultados de clasificación del clasificador, que generalmente involucra la categoría de comprensión del lenguaje natural.
El primero es el procesamiento de palabras similares: por ejemplo, las dos palabras "fen" y "xi" tienen formas similares, pero si encuentra las dos palabras "fracción", no las reconozca como " número xi", porque "puntuación" es una palabra normal. Esto debe corregirse mediante modelos de lenguaje.
El segundo es el procesamiento del diseño del texto: por ejemplo, algunos libros se dividen en columnas izquierda y derecha, las columnas izquierda y derecha de la misma línea no pertenecen a la misma oración y no tienen conexión gramatical. . Si cortas por línea, el final de la línea izquierda y el punto inicial de la línea derecha estarán conectados, que es lo que no queremos ver. Esta situación requiere un tratamiento especial.
Este es el principio general del OCR. En general, el OCR tiene muchos pasos y los algoritmos involucrados son relativamente complejos. Hay muchos artículos de investigación separados para cada algoritmo y cada paso y no se pueden analizar en profundidad en este artículo. Si inicia el OCR desde cero, será un proyecto enorme. Estoy un poco confundido y estoy en las primeras etapas del reconocimiento de patrones y el aprendizaje automático. Si hay algún error, corríjalo.