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 correção é treinar o Tesseract no exato tipo de fonte por conta própria, produzindo um único artefato .traineddata que você pode enviar para qualquer lugar onde o IronOCR funciona.

Este guia percorre o treinamento do tipo de fonte personalizado do Tesseract 5 do início ao fim em C#: instale a cadeia de ferramentas WSL2 Ubuntu, renderize .box e .tif arquivos de treinamento do seu .ttf ou .otf, construa o modelo .traineddata com tesstrain contra um eng.traineddata base, e então 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 treinado .traineddata, e então 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.

WSL2 é suficiente: uma vez que o treinamento estiver concluído, o arquivo .traineddata resultante pode ser enviado com o seu aplicativo IronOCR em 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 motor que executa o reconhecimento; libtesseract-dev expõe os cabeçalhos necessários pelo tesstrain 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.

Windows File Explorer mostrando arquivo de fonte AMGDT Regular.ttf baixado realçado em caixa vermelha 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 que a licença da fonte permite a redistribuição se o seu .traineddata será enviado 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/<letra>, 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 Ubuntu a partir do Windows e então arrastar o .ttf.

Explorador de Arquivos do Windows mostrando o caminho de rede \\wsl$ para acessar o sistema de arquivos do Ubuntu a partir do Windows

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

Arquivo de fonte AMGDT sendo copiado para a pasta de fontes do Ubuntu e reconhecido pelo sistema

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 de .traineddata padrão usados como modelo inicial para treinamento personalizado.
  • tesstrain/data é onde arquivos .box (caixas delimitadoras de caracteres) gerados, imagens .tif, e pontos intermediários de verificação LSTM caem.

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

Terminal executando os quatro comandos git clone e criando a pasta de dados do tesstrain

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 executando split_training_text.py e gerando arquivos .box e .tif na pasta de dados

Como Faço para Corrigir o Aviso Fontconfig?

Terminal mostrando avisos de fontconfig sobre a falta da fonte Apex e erros de diretório de fontes vazio

Se você vir o aviso Aviso do Fontconfig: "/tmp/fonts.co/nf, linha 4: nome de diretório de fonte vazio ignorado", o fontconfig não consegue resolver os diretórios de fontes. Corrija isso editando tesseract_tutorial/fonts.co/nf:

<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.co/nf /etc/fonts
cp fonts.co/nf /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 dividindo 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 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 .traineddata base 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 do langdata_lstm e coloque na pasta tesstrain/data/langdata.

O arquivo .unicharset define quais caracteres o treinador pode emitir. Use o arquivo que cobre todos os caracteres de sua fonte, por exemplo Cyrillic.unicharset para fontes cirílicas ou Devanagari.unicharset para Devanagari.

É assim que uma execução bem-sucedida de treinamento deve parecer quando o tesstrain produz o arquivo .traineddata:

Pipeline de compilação do tesstrain executando as iterações de treinamento e emitindo o arquivo AMGDT.traineddata

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

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

Log de treinamento do Tesseract mostrando melhoras no BCER de 6,388% para 5,771% ao longo das iterações de 2194 a 2298

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

:path=/static-assets/ocr/content-code-examples/how-to/ocr-custom-font-training-13.cs
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. Uma vez que o seu .traineddata seja verificado, veja nosso guia de idioma personalizado para o fluxo de trabalho geral de carregamento de qualquer arquivo de idioma personalizado.

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

Treinar uma fonte personalizada é uma configuração única: gere pares .box / .tif de sua fonte alvo, construa um modelo .traineddata com tesstrain, e então carregue 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 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 controles são expostos (a contagem de amostras do script mais MAX_ITERATIONS) para que você possa ajustar o equilíbrio entre tempo de treinamento e 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 6,136,090 | Versão: 2026.7 recém-lançado
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.