Reconocimiento de texto OCR

Tesseract es un motor de código abierto de reconocimiento óptico de caracteres (OCR) que es la biblioteca de OCR más popular y de alta calidad.


OCR utiliza redes neuronales para buscar y reconocer texto en imágenes.


Tesseract busca patrones en píxeles, letras, palabras y oraciones, y utiliza un enfoque de dos pasos llamado reconocimiento adaptativo. Se necesita una pasada a través de los datos para el reconocimiento de caracteres, luego una segunda pasada para completar las letras en las que no estaba seguro con las letras que probablemente correspondan a la palabra o contexto de la oración.


Uno de los proyectos fue reconocer cheques de fotografías.


La herramienta de reconocimiento utilizada fue Tesseract OCR . Las ventajas de esta biblioteca incluyen modelos de idiomas capacitados (> 192), diferentes tipos de reconocimiento (imagen como palabra, bloque de texto, texto vertical), configuración fácil. Como Tesseract OCR está escrito en C ++, se utilizó un contenedor de terceros con github.


Las diferencias entre las versiones son diferentes modelos entrenados (la versión 4 tiene mayor precisión, por lo que la usamos).


Necesitamos archivos de datos para el reconocimiento de texto, cada idioma tiene su propio archivo. Puede descargar los datos aquí .


Cuanto mejor sea la calidad de la imagen original (tamaño, contraste, materia de iluminación), mejor será el resultado del reconocimiento.


También se encontró un método de procesamiento de imágenes para su posterior reconocimiento mediante el uso de la biblioteca OpenCV. Como OpenCV está escrito en C ++ y no hay un contenedor escrito para nuestra solución, se decidió escribir nuestro propio contenedor para esta biblioteca con las funciones de procesamiento de imágenes necesarias. La principal dificultad es la selección de valores para el filtro para el procesamiento correcto de la imagen. También es posible encontrar los contornos de los cheques / texto, pero no se comprende completamente. El resultado fue mejor (5-10%).


Parámetros:


idioma: el idioma del texto de la imagen, puede seleccionar varios enumerándolos a través de "+";


pageSegmentationMode: tipo de ubicación del texto en la imagen;


charBlacklist: caracteres a ignorar ignorando los caracteres.


El uso de solo Tesseract dio una precisión de ~ 70% con una imagen ideal, con una iluminación / calidad de imagen deficiente, la precisión fue de ~ 30%.



Vision + Tesseract OCR


Como el resultado no fue satisfactorio, se decidió utilizar la biblioteca de Apple - Vision. Utilizamos Vision para encontrar bloques de texto, dividir aún más la imagen en bloques separados y reconocerlos. El resultado fue mejor en ~ 5%, pero aparecieron errores debido a bloques repetidos.


Las desventajas de esta solución fueron:


  1. Velocidad de trabajo. La velocidad de operación ha disminuido> 4 veces (quizás haya una variante de propagación)
  2. Algunos bloques de texto fueron reconocidos más de 1 vez
  3. El texto se reconoce de derecha a izquierda, por lo que el texto del lado derecho del cheque se reconoció antes que el texto de la izquierda.


MLKit


Otro método para detectar texto es el MLKit de Google, implementado en Firebase. Este método mostró los mejores resultados (~ 90%), pero el principal inconveniente de este método es que solo admite caracteres latinos y el complicado procesamiento de texto dividido en una línea (nombre - izquierda, precio - derecha).



Al final, podemos decir que reconocer texto en imágenes es una tarea factible, pero hay algunas dificultades. El principal problema es la calidad (tamaño, iluminación, contraste) de la imagen, que se puede resolver filtrando la imagen. Al reconocer el texto usando Vision o MLKit, hubo problemas con el orden incorrecto del reconocimiento de texto, el procesamiento de texto dividido.


El texto reconocido puede corregirse manualmente y ser adecuado para su uso; En la mayoría de los casos, al reconocer el texto de los cheques, el monto total se reconoce bien y no necesita ajustes.

Source: https://habr.com/ru/post/471542/


All Articles