Esta es mi primera publicación sobre Reconocimiento óptico de caracteres (OCR) con Tesseract. Tesserast es una biblioteca de código abierto muy popular para OCR compatible con Google, que ofrece resultados de alta precisión y admite más de 100 idiomas. En esta publicación, le diré cómo trabajar con el diccionario estándar para el modelo de lenguaje Tesseract y personalizarlo para satisfacer sus necesidades. A quién le importa, por favor, debajo del gato.
Modelos y diccionarios de lenguaje Tesseract
Tesseract utiliza modelos de lenguaje y diccionarios para reconocer texto en un idioma específico. El modelo de lenguaje contiene los valores de los parámetros del modelo de red neuronal y otros datos de aprendizaje. Por ejemplo, el modelo de idioma para el idioma inglés se almacena en el archivo eng.traineddata. El usuario puede crear su propia lista de palabras para Tesseract para que Tesseract pueda aprender a reconocerlas.
Tesseract le permite expandir el diccionario estándar para cualquier idioma compatible agregando sus propias palabras o enseñar el modelo de idioma reemplazando completamente las palabras del diccionario estándar con sus propias palabras.
Tesseract utiliza archivos .dawg especiales para varias categorías de palabras en el diccionario. Por ejemplo, el archivo .word-dawg se usa para las palabras principales del diccionario, y el archivo freq-dawg se usa para las palabras más comunes. Puede encontrar más información sobre el tema
aquí .
Personalización del modelo de lenguaje Tesseract
Esta guía se puede aplicar a las versiones de Tesseract 3.0.5 y 4.0.0. La única diferencia entre Tesseract 4.0.0 y versiones anteriores 3.0.x es que en la versión 4 Tesseract se basa en el modelo LSTM y los archivos de diccionario dawg tienen la extensión lstm - dawg (en la versión v3.0.5 tienen la extensión -dawg). Por ejemplo, el archivo de las palabras más comunes ahora tiene la extensión lstm-freq-dawg en lugar de freq-dawg, y el archivo unicharset recibió la extensión lstm-unicharset (anteriormente .unicharset).
Primero, instale la biblioteca Tesseract OCR. En este tutorial, uso Ubuntu OS (usé Ubuntu 18.04) y Tesseract v4. Simplemente instale Tesseract usando el paquete apt:
sudo apt update && sudo apt install tesseract-ocr
Además de la propia biblioteca Tesseract, este equipo también instalará todas las herramientas necesarias para enseñar el modelo de lenguaje (herramientas de capacitación).
Para empezar, ampliaremos el modelo de lenguaje con nuestras propias palabras. Por ejemplo, queremos expandir el modelo para inglés. Cree un archivo de texto plano llamado wordlistfile y agregue las palabras que queremos agregar al diccionario modelo, una por línea.
Luego irá a la carpeta tessdata. Necesitamos privilegios de root para realizar operaciones en esta carpeta del sistema.
sudo su
Copie el archivo de lista de palabras a esta carpeta. Descomprima el archivo de modelo de idioma eng.traineddata en la carpeta trainingdat_backup
combine_tessdata -u eng.traineddata traineddat_backup/eng.
Este comando extrae todos los archivos necesarios para compilar el modelo de idioma en la carpeta trainingdat_backup.
Ahora cree el archivo eng.lstm-word-dawg de nuestro wordlistfile usando la utilidad wordlistfile
wordlist2dawg wordlistfile eng.lstm-word-dawg traineddat_backup/eng.lstm-unicharset
y compilar un nuevo archivo de modelo de idioma eng.traineddata
combine_tessdata -o eng.traineddata eng.lstm-word-dawg
Obtendremos el archivo de modelo de idioma eng.traineddata de nuestras propias palabras del diccionario.
Ahora enseñaremos el modelo de lenguaje eng al reemplazar completamente las palabras del diccionario estándar con nuestras propias palabras. Primero debemos hacer una copia de seguridad de todos los archivos dawg (.lstm-word-dawg, .lstm-freq-dawg, etc.) ubicados en la carpeta trainingdat_backup, ya que los reemplazaremos por otros nuevos. Simplemente cree la carpeta tmp y transfiera todos los archivos dawg a ella.
Después de eso, copie nuestro archivo eng.lstm-word-dawg creado anteriormente en la carpeta trainingdat_backup. Vayamos a esta carpeta y compilemos un nuevo modelo de idioma.
combine_tessdata eng. </source tessdata ( cus - custom). OCR Tesseract : <source lang="bash"> tesseract <image> -l <your_model> <output>
donde salida es el nombre del archivo de texto para escribir el resultado de OCR o 'stdout' para la salida al terminal.
Archivos de configuración en Tesseract OCR
Tesseract utiliza archivos de configuración (archivos de texto sin formato que contienen variables y sus valores clave-valor, separados por espacios) que permiten al usuario controlar el resultado de OCR. Puede crear su propia configuración (myconf) y ponerla en la carpeta configs dentro de la carpeta tessdata y especificar el nombre de la configuración cuando use Tesseract:
tesseract <image> <options> myconf
donde options: out es el nombre del archivo para generar el resultado o 'stdout', - l es el modelo de lenguaje, - psm es el
método de segmentación de página .
Tesseract ofrece muchas opciones de control para personalizar la salida y mejorar la precisión del OCR. Entonces, aquí hay variables que controlan el uso de diccionarios, por ejemplo, la exclusión de palabras que no están en word_dawg / user_words (language_model_penalty_non_freq_dict_word e language_model_penalty_non_dict_word). Más detalles sobre los parámetros de control se pueden encontrar
aquí .
Usé los siguientes valores en mi configuración:
language_model_penalty_non_freq_dict_word 1 language_model_penalty_non_dict_word 1
Esto me permitió reconocer algunas palabras de mi diccionario.
Eso es todo por ahora. ¡Buena suerte con el uso de Tesseract para la tarea de OCR y hasta pronto!