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

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 .

Install-Package IronOcr

Paso 2: Instalar y configurar WSL2 y Ubuntu

Aquí 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

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

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.

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.

Solución de problemas: Acceso a la carpeta de destino denegado

Este problema puede resolverse copiando el archivo mediante la línea de comandos

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 utilizando el siguiente comando;

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;

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

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.

y

<dir>/usr/share/fuentes</dir>
<dir>/usr/local/share/fuentes</dir>
<dir prefix="xdg">fuentes</dir>
<!-- el siguiente elemento se eliminará en el futuro -->
<dir>~/.fuentes</dir>

A continuación, cópielo en /etc/fonts.

cp fonts.conf /etc/fonts

Por último, añade estas líneas de código a split_training_text.py.

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.

Paso 11: Descargar eng.traineddata

Puede encontrar eng.traineddata en la siguiente url: 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.

"Failed to read data from: " puede solucionarse editando líneas de código en Makefile

Antes:

Después:

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.

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

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.