Como personalizar a fonte do Tesseract 5 em C#

Como Treinar uma Fonte Personalizada com Tesseract 5 em C

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

O modelo padrão de inglês do Tesseract interpreta erroneamente muitos inputs do mundo real: formulários de admissão manuscritos de hospitais, digitalizações de livros antigos, o tipo decorativo sob medida de um estúdio de jogos, ou símbolos específicos de indústria que um motor OCR genérico nunca viu. A solução é treinar o Tesseract com a fonte exata você mesmo, produzindo um único artefato .traineddata que você pode distribuir em qualquer lugar onde o IronOCR seja executado.

Este guia mostra o treinamento de fontes personalizadas do Tesseract 5 de ponta a ponta em C#: instale o conjunto de ferramentas WSL2 Ubuntu, renderize os arquivos de treinamento .box e .tif do seu .ttf ou .otf, construa o modelo .traineddata com tesstrain em relação a uma base eng.traineddata e, em seguida, carregue o resultado no IronOCR. Uma vez treinado, o arquivo é portátil em Windows, macOS, Linux e Docker.

Início Rápido: Use Seu Arquivo de Fonte Treinado em C#

Configure o IronOCR apontando UseCustomTesseractLanguageFile para o seu arquivo .traineddata treinado e, em seguida, chame Read em qualquer imagem como você faria com um pacote de idioma padrão.

  1. Instale IronOCR com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronOcr
  2. Copie e execute este trecho 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. Implante para testar em seu ambiente de produção.

    Comece a usar IronOCR em seu projeto hoje com uma avaliação gratuita

    arrow pointer

Como Configuro o Ambiente de Treinamento?

Como Instalo o IronOCR?

Instale o IronOCR via NuGet:

Install-Package IronOcr

O pacote DLL é uma alternativa manual se você não puder usar o NuGet. Para o motor subjacente, veja o guia de recursos do Tesseract 5 e a referência de idioma personalizado.

Como Instalo e Configuro o WSL2 e o Ubuntu?

Consulte o tutorial sobre como configurar o WSL2 e o Ubuntu .

ObserveO treinamento de fontes personalizadas requer Linux.

O WSL2 é suficiente: uma vez concluído o treinamento, o arquivo .traineddata resultante é distribuído com seu aplicativo IronOCR no Windows, macOS, Linux ou Docker. Para detalhes de implantação, consulte o guia de implantação do Linux.

Como Instalo o Tesseract 5 no Ubuntu?

Utilize estes comandos para instalar o Tesseract 5:

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

O pacote tesseract-ocr é o mecanismo que executa o reconhecimento; libtesseract-dev expõe os cabeçalhos que o tesstrain precisa para construir um modelo. Uma vez que seu arquivo treinado esteja em uso, o guia de configuração do Tesseract cobre ajustes em tempo de execução.

Como Preparo a Fonte para o Treinamento?

Qual Fonte Devo Baixar?

Este tutorial utiliza a fonte AMGDT, no formato .ttf ou .otf.

O Explorador de Arquivos do Windows mostra o arquivo de fonte AMGDT Regular.ttf baixado, destacado em vermelho para treinamento

Ao escolher uma fonte para treinar:

  • Escolha fontes que o modelo padrão de inglês já interpreta erroneamente. Treinar uma fonte que já é reconhecida é uma perda de tempo.
  • Confirme se a licença da fonte permite a redistribuição caso seu .traineddata seja distribuído com um aplicativo.
  • Fontes decorativas, manuscritas e específicas de indústria (médica, legal, cartográfica) ganham mais precisão com o treinamento.
  • Combine as amostras de treinamento com o que a produção verá de fato, incluindo resolução e iluminação.

Como Montar a Unidade de Disco?

Monte a unidade D: como seu espaço de trabalho:

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

WSL2 monta todas as unidades Windows sob /mnt/, para que você possa editar arquivos no Windows e executar comandos de treinamento contra eles na mesma sessão.

Como Copiar o Arquivo de Fonte para a Pasta de Fontes do Ubuntu?

O Tesseract renderiza texto de amostra na sua fonte para construir imagens de treinamento, portanto, a fonte tem que estar instalada no lado do Linux, não apenas no Windows. Copie o arquivo de fonte para ambos os diretórios de fonte do Ubuntu: /usr/share/fonts e /usr/local/share/fonts. A maneira mais simples é digitar \wsl$ na barra de endereços do Explorador de Arquivos para navegar pelo sistema de arquivos do Ubuntu a partir do Windows e, em seguida, arrastar o .ttf para lá.

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

Veja como a cópia da fonte deve parecer quando ela chega no diretório de fontes do Ubuntu:

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

O que Faz se Eu Receber Acesso Negado na Pasta de Destino?

Se o File Explorer rejeitar a cópia, execute-a de um shell root em vez disso:

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

Como Faço para Clonar os Repositórios de Treinamento do GitHub?

O pipeline de treinamento depende de três repositórios. Clone o invólucro do tutorial primeiro, depois os dois repositórios Tesseract dentro dele, depois crie a pasta de saída:

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 reúne os scripts Python e arquivos de configuração que conduzem cada etapa de treinamento (geração de texto, renderização de imagens, criação de pares de treinamento).
  • tesstrain contém o Makefile que conduz a execução real do treinamento.
  • O Tesseract contém a pasta tessdata com arquivos padrão .traineddata usados ​​como modelo inicial para treinamento personalizado.
  • tesstrain/data é onde os arquivos .box gerados (caixas delimitadoras de caracteres), as imagens .tif e os pontos de verificação LSTM intermediários são armazenados.

Veja como a sequência de clonagem deve parecer no terminal:

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

Para trabalhar com múltiplos pacotes de idiomas juntamente com um personalizado, consulte nosso guia de idiomas internacionais.

Como Faço para Gerar Arquivos de Treinamento?

Como Faço para Executar o Script split_training_text.py?

Na pasta Tesseract_tutorial, execute:

python split_training_text.py
python split_training_text.py
SHELL

O script gera um par .box / .tif por amostra de treinamento e os grava na pasta de dados.

Veja como a execução do script deve parecer ao gerar os pares de treinamento:

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

Como Faço para Corrigir o Aviso Fontconfig?

Terminal exibindo avisos do fontconfig sobre erros de fonte Apex ausente e diretório de fontes vazio

Se você vir o aviso Aviso do Fontconfig: "/tmp/fonts.conf, linha 4: nome de diretório de fonte vazio ignorado", o fontconfig não consegue resolver os diretórios de fontes. Corrija 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

Copie-o para /etc/fonts:

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

Em seguida, aponte split_training_text.py para o mesmo caminho:

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

Quantos Arquivos de Treinamento Devo Gerar?

Por padrão, o script gera 100 pares de treinamento. Altere a contagem perto do topo de split_training_text.py:

Código Python definindo count=100 e fatiando o array de linhas para limitar o tamanho dos dados de treinamento

Orientação sobre tamanho:

  • 100-500 amostras são suficientes para confirmar que o pipeline funciona de ponta a ponta.
  • 1000-5000 amostras são a faixa de trabalho para precisão de produção.
  • O texto de treinamento deve cobrir todos os caracteres que a sua fonte precisa reconhecer, idealmente várias vezes cada.
  • Mais amostras significam mais tempo de treinamento; escolha o menor número que atinja sua meta de precisão.

Onde posso baixar o arquivo eng.traineddata?

Baixe eng.traineddata do repositório tessdata_best e coloque-o em Tesseract_tutorial/tesseract/tessdata.

O modelo base dá ao treinador um contexto linguístico (quais sequências de caracteres formam palavras plausíveis), então a precisão é muito melhor do que treinar do zero. Escolha um modelo base no mesmo idioma que o seu texto de treinamento. Se encontrar problemas, veja o guia de solução de problemas de pacotes de idiomas personalizados do OCR.

Como eu construo meu arquivo de dados de fonte personalizada treinado?

Da pasta tesstrain, execute:

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 é o nome da sua fonte personalizada (usado para o nome do arquivo de saída).
  • START_MODEL é o modelo base .traineddata que você baixou acima.
  • MAX_ITERATIONS limita a execução do treinamento; valores mais altos geralmente reduzem a taxa de erro.

O que acontece se eu receber a mensagem "Falha ao ler os dados" no Makefile?

Para corrigir erros "Falha ao ler dados", ajuste o 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

O patch aponta o Makefile para o diretório de saída real para que ele possa localizar os arquivos de dicionário.

Como faço para corrigir o erro "Falha ao carregar o script Unicharset"?

Baixe Latin.unicharset de langdata_lstm e coloque-o na pasta tesstrain/data/langdata.

O arquivo .unicharset define quais caracteres o treinador tem permissão para emitir. Use o arquivo que abrange todos os caracteres da sua fonte, por exemplo, Cyrillic.unicharset para fontes cirílicas ou Devanagari.unicharset para devanágari.

Eis como uma execução de treinamento bem-sucedida deve se parecer, conforme o tesstrain produz o arquivo .traineddata:

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

Como verifico a precisão do meu arquivo de dados treinado?

Com 1000 arquivos .box e .tif e 3000 iterações de treinamento, a saída AMGDT.traineddata atinge uma taxa de erro de treinamento (BCER) de cerca de 5,77%.

Log de treinamento do Tesseract mostrando a melhoria do BCER de 6,388% para 5,771% nas iterações 2194-2298

Para testar o modelo treinado com o IronOCR, aponte UseCustomTesseractLanguageFile para o arquivo e leia uma imagem de amostra:

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

A propriedade Confidence é a pontuação por documento; se ela permanecer baixa mesmo em entradas limpas, as causas mais comuns são poucas amostras de treinamento ou um modelo base que não corresponde ao script. Após a verificação do seu .traineddata, consulte nosso guia de idiomas personalizados para obter informações sobre o fluxo de trabalho geral de carregamento de qualquer arquivo de idioma personalizado.

Quais são os principais pontos para treinamento de fontes personalizadas?

O treinamento de uma fonte personalizada é uma configuração única: gere pares .box / .tif a partir da sua fonte alvo, construa um modelo .traineddata com tesstrain e, em seguida, carregue-o através de UseCustomTesseractLanguageFile. A partir daí, o IronOCR lê imagens com o novo modelo exatamente da mesma forma que lê inglês padrão.

Vantagens principais de usar IronOCR com um modelo Tesseract personalizado:

  • Reutiliza artefatos padrão do Tesseract : qualquer arquivo .traineddata que você possa construir com o tesstrain funciona no IronOCR sem conversão.
  • Saída multiplataforma: o treinamento requer Linux (ou WSL2), mas o arquivo treinado é enviado com sua aplicação em Windows, macOS, Linux e Docker.
  • Integra-se como o restante da API: combine fontes personalizadas com múltiplos idiomas secundários, correção de qualidade de imagem, e ajuste de DPI sem alterar o caminho de reconhecimento.
  • Precisão ajustável: a taxa de erro é uma função do número de amostras de treinamento vezes iterações. Ambos os parâmetros estão expostos (a contagem de amostras do script Plus MAX_ITERATIONS), permitindo ajustar o equilíbrio entre o tempo de treinamento e o BCER sem sair do Tesseract.

Para pipelines maiores, considere monitoramento de progresso e processamento assíncrono ao aplicar seu modelo treinado em vários documentos.

Perguntas frequentes

Como faço para usar um arquivo de fonte personalizado em C#?

Você pode usar seu arquivo de fonte Tesseract personalizado no IronOCR com apenas algumas linhas de código. Basta criar uma instância do IronTesseract, chamar o método UseCustomTesseractLanguageFile() com o caminho para o seu arquivo .traineddata e, em seguida, usar o método Read() para realizar o OCR em imagens que contenham sua fonte personalizada.

Quais são os requisitos para o treinamento de fontes personalizadas para OCR?

O treinamento de fontes personalizadas requer um ambiente Linux (WSL2 com Ubuntu é recomendado para usuários do Windows), o Tesseract 5 instalado com as bibliotecas de desenvolvimento e o arquivo da fonte que você deseja treinar (no formato .ttf ou .otf). Os arquivos .traineddata resultantes, criados no Linux, funcionam perfeitamente com o IronOCR em todas as plataformas.

Por que devo treinar fontes personalizadas em vez de usar o OCR padrão?

O treinamento de fontes personalizadas melhora a precisão do OCR para fontes específicas, especialmente fontes decorativas ou especiais que diferem significativamente dos modelos padrão do Tesseract. O IronOCR pode então usar esses arquivos de fontes treinados para reconhecer com precisão o texto em imagens que contêm essas fontes exclusivas, que seriam difíceis de ler com modelos de OCR padrão.

Posso usar fontes personalizadas em diferentes plataformas?

Sim, embora o processo de treinamento exija Linux, os arquivos .traineddata resultantes funcionam perfeitamente em todas as plataformas com o IronOCR. Isso significa que você pode treinar uma vez no Linux e usar o arquivo de dados treinado em implantações do Windows, macOS ou Linux.

Qual método de instalação é recomendado para começar?

Para uma configuração rápida, você pode baixar a DLL do IronOCR diretamente ou instalá-la através do Gerenciador de Pacotes NuGet. O NuGet é recomendado, pois gerencia as dependências automaticamente e facilita as atualizações. O IronOCR oferece suporte completo aos recursos do Tesseract 5 e implementações de idiomas personalizados.

O IronOCR suporta vários idiomas?

O IronOCR suporta múltiplos idiomas, tornando-se uma ferramenta versátil para aplicações globais que requerem reconhecimento de texto em diferentes idiomas.

O IronOCR pode ser integrado em aplicações existentes?

O IronOCR é projetado para ser facilmente integrado em aplicações existentes usando C#, permitindo que os desenvolvedores adicionem funcionalidades de OCR ao seu software com esforço mínimo.

Quais são os benefícios de usar o IronOCR para gestão de documentos?

Usar o IronOCR para gestão de documentos simplifica o fluxo de trabalho convertendo documentos escaneados em texto pesquisável e editável, reduzindo a necessidade de inserção manual de dados e melhorando a acessibilidade dos documentos.

Como o IronOCR pode melhorar a precisão dos dados?

O IronOCR melhora a precisão dos dados através de seus algoritmos avançados de reconhecimento e recursos de correção de imagem, assegurando que o processo de extração de texto seja tanto confiável quanto preciso.

Há uma avaliação gratuita disponível para o IronOCR?

Sim, o Iron Software oferece uma avaliação gratuita do IronOCR, permitindo que os usuários testem seus recursos e capacidades antes de tomar uma decisão de compra.

Kannaopat Udonpant
Engenheiro de Software
Antes de se tornar Engenheiro de Software, Kannapat concluiu um doutorado em Recursos Ambientais pela Universidade de Hokkaido, no Japão. Durante o doutorado, Kannapat também integrou o Laboratório de Robótica Veicular, que faz parte do Departamento de Engenharia de Bioprodução. Em 2022, ele utilizou suas habilidades ...
Leia mais
Analisado por
Jeff Fritz
Jeffrey T. Fritz
Gerente de Programa Principal - Equipe da Comunidade .NET
Jeff também é Gerente de Programa Principal das equipes do .NET e do Visual Studio. Ele é o produtor executivo da série de conferências virtuais .NET Conf e apresenta o "Fritz and Friends", uma transmissão ao vivo para desenvolvedores que vai ao ar duas vezes por semana, onde ele conversa sobre tecnologia e escreve código junto com os espectadores. Jeff cria workshops, apresentações e planeja conteúdo para os maiores eventos de desenvolvedores da Microsoft, incluindo o Microsoft Build, o Microsoft Ignite, a .NET Conf e o Microsoft MVP Summit.
Pronto para começar?
Nuget Baixar 5,896,332 | Versão: 2026.5 just released
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronOcr
executar um exemplo Veja sua imagem se transformar em texto pesquisável.