Formación sobre fuentes personalizadas en C# para Tesseract 5 (para usuarios de Windows)

This article was translated from English: Does it need improvement?
Translated
View the article in English

por Kannapat Udompant

Utilice Custom font training for Tesseract 5 para mejorar la precisión y las capacidades de reconocimiento del motor de OCR cuando trabaje con fuentes o estilos de fuente específicos que pueden no estar bien soportados por defecto.

El proceso consiste en proporcionar a Tesseract datos de entrenamiento, como muestras de fuentes y el texto correspondiente, para que pueda aprender las características y patrones específicos de las fuentes personalizadas.


## Paso 1: Descargar la última versión de IronOCR
Biblioteca NuGet C# para OCR

Instalar con NuGet

Install-Package IronOcr
o
Java PDF JAR

Descargar DLL

Descargar DLL

Instalar manualmente en su proyecto

Instalación mediante DLL

Descargar el IronOcr DLL directamente a su máquina.

Instalación mediante NuGet

Alternativamente, puede instalar a través de NuGet . ```shell :ProductInstall ```
## Paso 2: Instalar y configurar WSL2 y Ubuntu [Aquí](https://ubuntu.com/tutorials/install-ubuntu-on-wsl2-on-windows-10) es el tutorial para configurar WSL2 y Ubuntu ** Actualmente, la formación de fuentes personalizadas sólo puede realizarse en Linux. ## Paso 3: Instalar Tesseract 5 en Ubuntu ```bash sudo apt install tesseract-ocr sudo apt install libtesseract-dev ``` ## Paso 4: Descargue la fuente que desea entrenar En este tutorial utilizaremos la fuente AMGDT. El archivo de fuente puede ser tanto .ttf como .otf ![](/static-assets/ocr/how-to/ocr-custom-font-training/example_of_downloaded_font_file.png) ## Paso 5: Monte la unidad de disco de su espacio de trabajo para la formación de fuentes personalizadas El siguiente comando muestra cómo montar la unidad `D:` como espacio de trabajo. ```bash cd / cd /mnt/d ``` ## Paso 6: Copiar el archivo de fuentes a la carpeta de fuentes de Ubuntu Este es el directorio de la carpeta de fuentes de Ubuntu; `Ubuntu/usr/share/fonts` y `Ubuntu/usr/local/share/fonts`. ** Para acceder al archivo en Ubuntu, escriba `\\wsl$` en el directorio del explorador de archivos. ![](/static-assets/ocr/how-to/ocr-custom-font-training/ubutu_folder_directory.png) ### Solución de problemas: Acceso a la carpeta de destino denegado ![](/static-assets/ocr/how-to/ocr-custom-font-training/destination_folder_access_denied.png) Este problema puede resolverse copiando el archivo mediante la línea de comandos ```bash cd / su root cd c/Users/Admin/Downloads/’AMGDT Regular’ cp ‘AMGDT Regular.ttf’ /usr/share/fonts cp ‘AMGDT Regular.ttf’ /usr/local/share/fonts su username ``` ## Paso 7: Clonar tesseract_tutorial desde Github El repositorio `tesseract_tutorial` puede clonarse desde la siguiente url; [https://github.com/astutejoe/tesseract_tutorial.git](https://github.com/astutejoe/tesseract_tutorial.git) utilizando el siguiente comando; ```bash git clone https://github.com/astutejoe/tesseract_tutorial.git ``` ## Paso 8: Clonar tesstrain y tesseract desde Github Vaya al directorio de la carpeta `tesseract_tutorial`, luego git clone https://github.com/tesseract-ocr/tesstrain y https://github.com/tesseract-ocr/tesseract - tesstrain contiene el archivo "Makefile" que se utiliza para crear el archivo .traineddata (objetivo de este tutorial) - tesseract contiene la carpeta "tessdata", que es un contenedor del archivo original .traindata que se utiliza como referencia para la formación de fuentes personalizadas. ## Paso 9: Crear la carpeta "data" para almacenar los resultados Los "datos" deben crearse en `tesseract_tutorial/tesstrain`. ## Paso 10: Ejecute split_training_text.py Vuelve al directorio de la carpeta `tesseract_tutorial` y compila el siguiente comando; ```bash python split_training_text.py ``` Después de ejecutar `split_training_text.py`, se crearán los archivos `.box` y `.tif` en la carpeta "data". ### Solución de problemas: Advertencia de Fontconfig: "/tmp/fonts.conf", línea 4: nombre de directorio de fuentes vacío ignorado ![](/static-assets/ocr/how-to/ocr-custom-font-training/fontconfig_warning.png) Este problema es causado por el directorio de fuentes en la carpeta de Ubuntu no se puede encontrar y se puede resolver mediante la inserción de estas líneas de código en `tesseract_tutorial/fonts.conf`. ![](/static-assets/ocr/how-to/ocr-custom-font-training/fontconfig_dir.png.png) y ```/usr/share/fuentes/usr/local/share/fuentesfuentes~/.fuentes``` A continuación, cópielo en `/etc/fonts`. ```bash cp fonts.conf /etc/fonts ``` Por último, añade estas líneas de código a `split_training_text.py`. ![](/static-assets/ocr/how-to/ocr-custom-font-training/fontconfig_sol.png) y ``` fontconf_dir = '/etc/fonts` ``` ### Nota: Número de archivos de formación (.box y .tif) Actualmente el número de ficheros de entrenamiento es 100. Este número de archivos de entrenamiento puede ser en la edición o eliminación de estas líneas de código en split_training_text.py. ![](/static-assets/ocr/how-to/ocr-custom-font-training/number_of_trainfile.png) ## Paso 11: Descargar eng.traineddata Puede encontrar `eng.traineddata` en la siguiente url: [https://github.com/tesseract-ocr/tessdata_best](https://github.com/tesseract-ocr/tessdata_best). Descárgalo en `tesseract_tutorial/tesseract/tessdata` porque este `eng.traineddata` en `tessdata_best` es mejor que el original en la carpeta `tessdata`. ## Paso 12: Cree su fuente personalizada .traineddata Vaya al directorio de la carpeta `tesstrain` y ponga esta línea de comando en el WSL2 ``` TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100 ``` - Hacer entrenamiento = ejecutar código en `tesstrain/Makefile`. - MODEL_NAME = el nombre de su fuente personalizada - START_MODEL = el nombre del archivo original `.traineddata`. - MAX_ITERATIONS = número de iteraciones (un número mayor significa mayor precisión de `.traineddata`. ![](/static-assets/ocr/how-to/ocr-custom-font-training/makefile_issues.png) ### "Failed to read data from: " puede solucionarse editando líneas de código en Makefile Antes: ![](/static-assets/ocr/how-to/ocr-custom-font-training/makefile_sol_before.png) Después: ![](/static-assets/ocr/how-to/ocr-custom-font-training/makefile_sol_after.png) y ``` make - Makefile ARCHIVO_LISTA_PALABRAS := $(OUTPUT_DIR2)/$(NOMBRE_MODELO).lstm-palabra-dawg FICHERO_NUMEROS := $(OUTPUT_DIR2)/$(NOMBRE_MODELO).lstm-number-dawg ARCHIVO_PUNC := $(OUTPUT_DIR2)/$(NOMBRE_MODELO).lstm-punc-dawg ``` ### "Failed to load script unicharset from:data/langdata/Latin.unicharset" se puede solucionar insertando `Latin.unicharset` en la carpeta `tesstrain/data/langdata`. - Puede encontrar `Latin.unicharset` en la siguiente url; https://github.com/tesseract-ocr/langdata_lstm ## Paso 13: Precisión de los `.traineddata` creados Con 1000 archivos `.box` y `.tif` y 3000 iteraciones de entrenamiento, el resultado `.traineddta` es el siguiente (AMGDT.datosentrenados) tiene un porcentaje mínimo de errores de formación (BCER) alrededor de 5,77 ![](/static-assets/ocr/how-to/ocr-custom-font-training/traineddata_accuracy.png) Para más información y referencias: **ref**: https://www.youtube.com/watch?v=KE4xEzFGSU8ustom

Kannapat Udonpant

Ingeniero de software

Antes de convertirse en ingeniero de software, Kannapat realizó un doctorado en Recursos Medioambientales en la Universidad de Hokkaido (Japón). Mientras cursaba su licenciatura, Kannapat también se convirtió en miembro del Laboratorio de Robótica Vehicular, que forma parte del Departamento de Ingeniería de Bioproducción. En 2022, aprovechó sus conocimientos de C# para unirse al equipo de ingeniería de Iron Software, donde se centra en IronPDF. Kannapat valora su trabajo porque aprende directamente del desarrollador que escribe la mayor parte del código utilizado en IronPDF. Además del aprendizaje entre iguales, Kannapat disfruta del aspecto social de trabajar en Iron Software. Cuando no está escribiendo código o documentación, Kannapat suele jugar con su PS5 o volver a ver The Last of Us.