Cómo entrenar fuentes personalizadas para Tesseract 5 en C#

Cómo Entrenar una Fuente Personalizada con Tesseract 5 en C

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

El modelo inglés predeterminado de Tesseract interpreta incorrectamente muchos inputs del mundo real: formularios de admisión manuscritos de hospitales, digitalizaciones de libros antiguos, una tipografía decorativa personalizada de un estudio de juegos, o símbolos específicos de la industria que un motor OCR genérico nunca ha visto. La solución es entrenar Tesseract en la fuente exacta tú mismo, produciendo un único .traineddata artefacto que puedes enviar a cualquier lugar donde IronOCR se ejecute.

Esta guía recorre el entrenamiento de fuente personalizada en Tesseract 5 de principio a fin en C#: instala la cadena de herramientas WSL2 Ubuntu, renderiza .box y .tif archivos de entrenamiento desde tu .ttf o .otf, construye el modelo .traineddata con tesstrain contra una base eng.traineddata, luego carga el resultado en IronOCR. Una vez entrenado, el archivo es portátil entre Windows, macOS, Linux y Docker.

Inicio rápido: Use su archivo de fuente entrenada en C#

Configura IronOCR apuntando UseCustomTesseractLanguageFile a tu archivo .traineddata entrenado, luego llama Read en cualquier imagen como lo harías con un paquete de idioma estándar.

  1. Instala IronOCR con el Administrador de Paquetes NuGet

    PM > Install-Package IronOcr
  2. Copie y ejecute este fragmento de código.

    using IronOcr;
    
    var ocr = new IronTesseract();
    ocr.UseCustomTesseractLanguageFile("path/to/YourCustomFont.traineddata");
    string text = ocr.Read(new OcrInput("image-with-special-font.png")).Text;
  3. Despliegue para probar en su entorno real

    Comienza a usar IronOCR en tu proyecto hoy mismo con una prueba gratuita

    arrow pointer

¿Cómo Configuro el Entorno de Entrenamiento?

¿Cómo Instalo IronOCR?

Instale IronOCR a través de NuGet:

Install-Package IronOcr

El paquete DLL es una alternativa manual si no puede usar NuGet. Para el motor subyacente, consulte la guía de características de Tesseract 5 y la referencia de idiomas personalizados.

¿Cómo Instalo y Configuro WSL2 y Ubuntu?

Consulta el tutorial en Configuración de WSL2 y Ubuntu.

Por favor notaEl entrenamiento de fuentes personalizadas requiere Linux.

WSL2 es suficiente: una vez finalizado el entrenamiento, el archivo resultante .traineddata se envía con tu aplicación IronOCR en Windows, macOS, Linux o Docker. Para detalles de implementación, vea la guía de implementación en Linux.

¿Cómo Instalo Tesseract 5 en Ubuntu?

Utilice estos comandos para instalar Tesseract 5:

sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
SHELL

El paquete tesseract-ocr es el motor que ejecuta el reconocimiento; libtesseract-dev expone los encabezados que tesstrain necesita para construir un modelo. Una vez que su archivo entrenado está en uso, la guía de configuración de Tesseract cubre la afinación en tiempo de ejecución.

¿Cómo Preparo la Fuente para Entrenamiento?

¿Qué Fuente Debería Descargar?

Este tutorial utiliza la fuente AMGDT, en formato .ttf o .otf.

Explorador de archivos de Windows mostrando el archivo de fuente descargado AMGDT Regular.ttf resaltado en un cuadro rojo para entrenamiento

Al elegir una fuente para entrenar:

  • Elija fuentes que el modelo inglés predeterminado ya interprete incorrectamente. Entrenar una fuente que ya es reconocida desperdicia tiempo.
  • Confirma que la licencia de la fuente permite la redistribución si tu .traineddata se enviará con una aplicación.
  • Las fuentes decorativas, manuscritas y específicas de la industria (médica, legal, cartográfica) obtienen la mayor precisión del entrenamiento.
  • Haga coincidir las muestras de entrenamiento con lo que realmente verá en producción, incluyendo resolución e iluminación.

¿Cómo Montar la Unidad de Disco?

Monte la unidad D: como su espacio de trabajo:

cd /
cd /mnt/d
cd /
cd /mnt/d
SHELL

WSL2 monta cada unidad de Windows bajo /mnt/, por lo que puede editar archivos en Windows y ejecutar comandos de entrenamiento contra ellos en la misma sesión.

¿Cómo Copiar el Archivo de Fuente a la Carpeta de Fuentes de Ubuntu?

Tesseract renderiza texto de muestra en su fuente para construir imágenes de entrenamiento, por lo que la fuente debe estar instalada en el lado de Linux, no solo en Windows. Copie el archivo de fuente a ambos directorios de fuentes de Ubuntu: /usr/share/fonts y /usr/local/share/fonts. La forma más sencilla es escribir \wsl$ en la barra de direcciones del Explorador de Archivos para navegar por el sistema de archivos de Ubuntu desde Windows, luego arrastrar el .ttf.

Windows File Explorer showing \\wsl$ network path for accessing Ubuntu filesystem from Windows

Así es como debería verse la copia de la fuente una vez que llega al directorio de fuentes de Ubuntu:

AMGDT font file being copied into the Ubuntu fonts folder and recognized by the system

¿Qué Pasa Si Obtengo Acceso Denegado a la Carpeta de Destino?

Si el Explorador de archivos rechaza la copia, ejecútelo desde una shell root en su lugar:

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
exit
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
exit
SHELL

¿Cómo Clonar los Repositorios de Entrenamiento desde GitHub?

La tubería de entrenamiento depende de tres repositorios. Clone primero el wrapper del tutorial, luego los dos repositorios upstream de Tesseract dentro de él, luego cree la carpeta de salida:

git clone https://github.com/astutejoe/tesseract_tutorial.git
cd tesseract_tutorial
git clone https://github.com/tesseract-ocr/tesstrain
git clone https://github.com/tesseract-ocr/tesseract
mkdir tesstrain/data
git clone https://github.com/astutejoe/tesseract_tutorial.git
cd tesseract_tutorial
git clone https://github.com/tesseract-ocr/tesstrain
git clone https://github.com/tesseract-ocr/tesseract
mkdir tesstrain/data
SHELL
  • Tesseract_tutorial agrupa los scripts de Python y archivos de configuración que impulsan cada paso de entrenamiento (generación de texto, renderizado de imagen, creación de pares de entrenamiento).
  • tesstrain contiene el Makefile que impulsa la ejecución real del entrenamiento.
  • Tesseract contiene la carpeta tessdata con archivos .traineddata predeterminados utilizados como modelo de inicio para entrenamiento personalizado.
  • tesstrain/data es donde se generan archivos .box (cajas delimitadoras de caracteres), imágenes .tif, y todos los puntos de control intermedios LSTM.

Así es como debería verse la secuencia de clonación en la terminal:

Terminal running the four git clone commands and creating the tesstrain data folder

Para trabajar con múltiples paquetes de idioma junto con uno personalizado, consulte nuestra guía de idiomas internacionales.

¿Cómo Generar Archivos de Entrenamiento?

¿Cómo Ejecutar el Script split_training_text.py?

Desde la carpeta Tesseract_tutorial, ejecute:

python split_training_text.py
python split_training_text.py
SHELL

El script genera un par .box / .tif por muestra de entrenamiento y los escribe en la carpeta de datos.

Así es como debería verse la ejecución del script mientras genera los pares de entrenamiento:

Terminal running split_training_text.py and generating .box and .tif files in the data folder

¿Cómo Corregir la Advertencia de Fontconfig?

Terminal mostrando advertencias de fontconfig sobre fuente Apex faltante y errores de directorio de fuentes vacío

Si ve la advertencia Fontconfig warning: "/tmp/fonts.conf, línea 4: el nombre del directorio de fuentes vacío fue ignorado", fontconfig no puede resolver los directorios de fuentes. Arréglalo editando tesseract_tutorial/fonts.conf:

<dir>/usr/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir prefix="xdg">fonts</dir>

<dir>~/.fonts</dir>
<dir>/usr/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir prefix="xdg">fonts</dir>

<dir>~/.fonts</dir>
XML

Cópielo a /etc/fonts:

cp fonts.conf /etc/fonts
cp fonts.conf /etc/fonts
SHELL

Luego apunta split_training_text.py a la misma ruta:

fontconf_dir = '/etc/fonts'
fontconf_dir = '/etc/fonts'
PYTHON

¿Cuántos Archivos de Entrenamiento Debería Generar?

Por defecto, el script genera 100 pares de entrenamiento. Cambia el recuento cerca de la parte superior de split_training_text.py:

Código Python estableciendo count=100 y dividiendo la matriz de líneas para limitar el tamaño de los datos de entrenamiento

Guía de dimensionamiento:

  • 100-500 muestras son suficientes para confirmar que la tubería funciona de principio a fin.
  • 1000-5000 muestras son el rango de trabajo para la precisión en producción.
  • El texto de entrenamiento debe cubrir cada carácter que su fuente necesita reconocer, idealmente varias veces cada uno.
  • Más muestras significan más tiempo de entrenamiento; elija el conteo más pequeño que logre su objetivo de precisión.

¿Dónde Descargo el Archivo eng.traineddata?

Descarga eng.traineddata del repositorio tessdata_best y colócalo en Tesseract_tutorial/tesseract/tessdata.

El modelo base da al entrenador contexto lingüístico (qué secuencias de caracteres forman palabras plausibles), por lo que la precisión es mucho mejor que entrenar desde cero. Elija un modelo base en el mismo idioma que su texto de entrenamiento. Si enfrenta problemas, vea la guía de solución de problemas de paquetes de idiomas OCR personalizados.

¿Cómo Construyo Mi Archivo de Datos de Fuente Entrenado Personalizado?

Desde la carpeta tesstrain, ejecute:

TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100
TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100
SHELL
  • MODEL_NAME es el nombre de su fuente personalizada (utilizado para el nombre del archivo de salida).
  • START_MODEL es la base .traineddata que descargaste arriba.
  • MAX_ITERATIONS limita la ejecución del entrenamiento; valores más altos típicamente reducen la tasa de error.

¿Qué ocurre si aparece el mensaje "Failed to Read Data" en Makefile?

Para resolver errores "Failed to read data", parche el Makefile:

WORDLIST_FILE := $(OUTPUT_DIR2)/$(MODEL_NAME).lstm-word-dawg
NUMBERS_FILE := $(OUTPUT_DIR2)/$(MODEL_NAME).lstm-number-dawg
PUNC_FILE := $(OUTPUT_DIR2)/$(MODEL_NAME).lstm-punc-dawg

El parche apunta el Makefile al directorio de salida real para que pueda localizar los archivos de diccionario.

¿Cómo solucionar el error "Failed to Load Script Unicharset"?

Descarga Latin.unicharset de langdata_lstm y colócalo en la carpeta tesstrain/data/langdata.

El archivo .unicharset define qué caracteres el entrenador está permitido emitir. Usa el archivo que cubra todos los caracteres en tu fuente, por ejemplo Cyrillic.unicharset para fuentes cirílicas o Devanagari.unicharset para devanagari.

Así debería verse una ejecución de entrenamiento exitosa mientras tesstrain produce el archivo .traineddata:

tesstrain build pipeline running through training iterations and emitting the AMGDT.traineddata file

¿Cómo Verifico la Precisión de Mi Archivo de Datos de Fuente Entrenado?

Con 1000 archivos .box y .tif y 3000 iteraciones de entrenamiento, el resultado AMGDT.traineddata alcanza una tasa de error de entrenamiento (BCER) de alrededor del 5.77%.

Registro de entrenamiento de Tesseract mostrando mejora de BCER del 6.388% al 5.771% entre las iteraciones 2194-2298

Para probar el modelo entrenado con IronOCR, apunta UseCustomTesseractLanguageFile al archivo y lee una imagen de muestra:

using IronOcr;

// Load the trained model; AutoOsd handles orientation
var ocr = new IronTesseract();
ocr.UseCustomTesseractLanguageFile("path/to/AMGDT.traineddata");
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Preprocess so the model sees clean glyphs
using var input = new OcrInput();
input.LoadImage("test-image-with-amgdt-font.png");
input.EnhanceResolution(300);
input.DeNoise();

// Confidence reflects training quality
var result = ocr.Read(input);
Console.WriteLine($"Text: {result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
using IronOcr;

// Load the trained model; AutoOsd handles orientation
var ocr = new IronTesseract();
ocr.UseCustomTesseractLanguageFile("path/to/AMGDT.traineddata");
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Preprocess so the model sees clean glyphs
using var input = new OcrInput();
input.LoadImage("test-image-with-amgdt-font.png");
input.EnhanceResolution(300);
input.DeNoise();

// Confidence reflects training quality
var result = ocr.Read(input);
Console.WriteLine($"Text: {result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
Imports IronOcr

' Load the trained model; AutoOsd handles orientation
Dim ocr As New IronTesseract()
ocr.UseCustomTesseractLanguageFile("path/to/AMGDT.traineddata")
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd

' Preprocess so the model sees clean glyphs
Using input As New OcrInput()
    input.LoadImage("test-image-with-amgdt-font.png")
    input.EnhanceResolution(300)
    input.DeNoise()

    ' Confidence reflects training quality
    Dim result = ocr.Read(input)
    Console.WriteLine($"Text: {result.Text}")
    Console.WriteLine($"Confidence: {result.Confidence}%")
End Using
$vbLabelText   $csharpLabel

La propiedad Confidence es la puntuación por documento; si se mantiene baja incluso en inputs limpios, las causas más comunes son muy pocas muestras de entrenamiento o un modelo base que no coincide con el script. Una vez que tu .traineddata esté verificado, consulta nuestra guía de lenguaje personalizado para el flujo de trabajo general de carga de cualquier archivo de idioma personalizado.

¿Cuáles Son los Puntos Clave para el Entrenamiento de Fuentes Personalizadas?

Entrenar una fuente personalizada es una configuración única: genera pares .box / .tif desde tu fuente objetivo, construye un modelo .traineddata con tesstrain, luego cárgalo a través de UseCustomTesseractLanguageFile. Desde allí, IronOCR lee imágenes con el nuevo modelo exactamente de la misma manera que lee el inglés estándar.

Ventajas clave de usar IronOCR con un modelo Tesseract personalizado:

  • Reutiliza artefactos estándar de Tesseract: cualquier archivo .traineddata que puedas construir con tesstrain funciona en IronOCR sin conversión.
  • Salida multiplataforma: el entrenamiento requiere Linux (o WSL2), pero el archivo entrenado se envía con su aplicación en Windows, macOS, Linux y Docker.
  • Integración con el resto de la API: combine fuentes personalizadas con múltiples idiomas secundarios, corrección de calidad de imagen, y ajuste de DPI sin cambiar la ruta de reconocimiento.
  • Precisión ajustable: la tasa de error es una función de las muestras de entrenamiento por iteraciones. Ambos controles están expuestos (el conteo de muestras del script más MAX_ITERATIONS) para que puedas ajustar el compromiso entre tiempo de entrenamiento y BCER sin salir de Tesseract.

Para pipelines más grandes, considere el seguimiento del progreso y procesamiento asíncrono al aplicar su modelo entrenado en muchos documentos.

Preguntas Frecuentes

¿Cómo se utiliza un archivo de fuentes personalizadas en C#?

Puede utilizar su archivo de fuentes Tesseract personalizado en IronOCR con sólo unas pocas líneas de código. Simplemente crea una instancia de IronTesseract, llama a UseCustomTesseractLanguageFile() con la ruta a tu archivo .traineddata, y luego usa el método Read() para realizar el OCR en imágenes que contengan tu fuente especial.

¿Cuáles son los requisitos para la formación de fuentes personalizadas para OCR?

La formación personalizada de fuentes requiere un entorno Linux (se recomienda WSL2 con Ubuntu para los usuarios de Windows), Tesseract 5 instalado con las bibliotecas de desarrollo y el archivo de fuentes que desee formar (en formato .ttf u .otf). Los archivos .traineddata resultantes creados en Linux funcionan perfectamente con IronOCR en todas las plataformas.

¿Por qué debería entrenar fuentes personalizadas en lugar de utilizar OCR estándar?

El entrenamiento de fuentes personalizadas mejora la precisión del OCR para fuentes específicas, especialmente fuentes decorativas o especiales que difieren significativamente de los modelos estándar de Tesseract. IronOCR puede utilizar estos archivos de fuentes entrenadas para reconocer con precisión el texto en imágenes que contienen estas fuentes únicas que, de otro modo, serían difíciles de leer con los modelos de OCR estándar.

¿Puedo utilizar fuentes personalizadas en distintas plataformas?

Sí, aunque el proceso de formación requiere Linux, los archivos .traineddata resultantes funcionan sin problemas en todas las plataformas con IronOCR. Esto significa que puede entrenar una vez en Linux y utilizar el archivo de datos entrenado en implementaciones de Windows, macOS o Linux.

¿Qué método de instalación se recomienda para empezar?

Para una instalación rápida, puede descargar la DLL IronOCR directamente o instalarla a través del gestor de paquetes NuGet. Se recomienda NuGet, ya que gestiona las dependencias automáticamente y facilita las actualizaciones. IronOCR proporciona soporte completo para las características de Tesseract 5 y las implementaciones de lenguajes personalizados.

¿IronOCR soporta múltiples idiomas?

IronOCR soporta múltiples idiomas, convirtiéndose en una herramienta versátil para aplicaciones globales que requieren reconocimiento de texto en diferentes idiomas.

¿Puede integrarse IronOCR en aplicaciones existentes?

IronOCR está diseñado para integrarse fácilmente en aplicaciones existentes usando C#, permitiendo a los desarrolladores agregar funcionalidad de OCR a su software con un esfuerzo mínimo.

¿Cuáles son los beneficios de usar IronOCR para la gestión de documentos?

Usar IronOCR para la gestión de documentos agiliza el flujo de trabajo al convertir documentos escaneados en texto buscable y editable, reduciendo la necesidad de entrada manual de datos y mejorando la accesibilidad del documento.

¿Cómo puede IronOCR mejorar la precisión de los datos?

IronOCR mejora la precisión de los datos a través de sus algoritmos de reconocimiento avanzados y características de corrección de imágenes, asegurando que el proceso de extracción de texto sea tanto confiable como preciso.

¿Hay una prueba gratuita disponible para IronOCR?

Sí, Iron Software ofrece una prueba gratuita de IronOCR, permitiendo a los usuarios probar sus características y capacidades antes de tomar una decisión de compra.

Kannaopat Udonpant
Ingeniero de Software
Antes de convertirse en Ingeniero de Software, Kannapat completó un doctorado en Recursos Ambientales de la Universidad de Hokkaido en Japón. Mientras perseguía su grado, Kannapat también se convirtió en miembro del Laboratorio de Robótica de Vehículos, que es parte del Departamento de Ingeniería ...
Leer más
Revisado por
Jeff Fritz
Jeffrey T. Fritz
Gerente Principal de Programas - Equipo de la Comunidad .NET
Jeff también es Gerente Principal de Programas para los equipos de .NET y Visual Studio. Es el productor ejecutivo de la serie de conferencias virtuales .NET Conf y anfitrión de 'Fritz and Friends', una transmisión en vivo para desarrolladores que se emite dos veces a la semana donde habla sobre tecnología y escribe código junto con la audiencia. Jeff escribe talleres, presentaciones, y planifica contenido para los eventos de desarrolladores más importantes de Microsoft, incluyendo Microsoft Build, Microsoft Ignite, .NET Conf y la Cumbre de Microsoft MVP.
¿Listo para empezar?
Nuget Descargas 5,887,215 | Versión: 2026.5 just released
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronOcr
ejecuta una muestra y observa cómo tu imagen se convierte en texto buscable.