# Como Treinar uma Fonte Personalizada com Tesseract 5 em C#
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.
*as-heading:2(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.
```cs
:title=Quickly Load Your Custom Trained Font with IronOCR
using IronOcr;
var ocr = new IronTesseract();
ocr.UseCustomTesseractLanguageFile("path/to/YourCustomFont.traineddata");
string text = ocr.Read(new OcrInput("image-with-special-font.png")).Text;
```
<div class="hsg-featured-snippet">
<h3>Fluxo de trabalho mínimo (5 etapas)</h3>
<ol>
<li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://nuget.org/packages/IronOcr/">Baixar IronOCR via NuGet para ler com fontes treinadas personalizadas</a></li>
<li>Instale o Tesseract 5 no WSL2 Ubuntu e clone os repositórios de treinamento <code>tesstrain</code></li>
<li>Gere arquivos de treinamento para sua fonte alvo com <code>split_training_text.py</code></li>
<li>Construa seu arquivo .traineddata personalizado usando <code>tesstrain</code> e um modelo de linguagem base</li>
<li>Carregue o arquivo treinado no IronOCR com <code>UseCustomTesseractLanguageFile</code> e chame <code>Read</code></li>
</ol>
</div>
## Como Configuro o Ambiente de Treinamento?
### Como Instalo o IronOCR?
Instale o IronOCR via [NuGet](https://www.nuget.org/packages/IronOcr/):
```shell
:ProductInstall
```
O [pacote DLL](/csharp/ocr/packages/IronOcr.zip) é uma alternativa manual se você não puder usar o NuGet. Para o motor subjacente, veja o [guia de recursos do Tesseract 5](https://ironsoftware.com/csharp/ocr/tutorials/c-sharp-tesseract-ocr/) e a [referência de idioma personalizado](https://ironsoftware.com/csharp/ocr/examples/ocr-tesseract-custom-languages/).
### Como Instalo e Configuro o WSL2 e o Ubuntu?
Consulte o tutorial sobre [como configurar o WSL2 e o Ubuntu](https://ubuntu.com/tutorials/install-ubuntu-on-wsl2-on-windows-10) .
[[i:(O 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](https://ironsoftware.com/csharp/ocr/get-started/linux/).
### Como Instalo o Tesseract 5 no Ubuntu?
Utilize estes comandos para instalar o Tesseract 5:
```bash
sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
```
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](https://ironsoftware.com/csharp/ocr/examples/csharp-configure-setup-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`.

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:
```bash
cd /
cd /mnt/d
```
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`.

Veja como a cópia da fonte deve parecer quando ela chega no diretório de fontes do Ubuntu:
<img src="/static-assets/ocr/how-to/ocr-custom-font-training/amdfont.gif" alt="Arquivo de fonte AMGDT sendo copiado para a pasta de fontes do Ubuntu e reconhecido pelo sistema" class="img-responsive add-shadow" style="max-width: 720px; width: 100%; display: block; margin: 0 auto 30px auto;"/>
#### 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:
```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
exit
```
## 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:
```bash
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
```
- 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:
<img src="/static-assets/ocr/how-to/ocr-custom-font-training/gitlogs.gif" alt="Terminal executando os quatro comandos git clone e criando a pasta de dados do tesstrain" class="img-responsive add-shadow" style="max-width: 720px; width: 100%; display: block; margin: 0 auto 30px auto;"/>
Para trabalhar com múltiplos pacotes de idiomas juntamente com um personalizado, consulte nosso [guia de idiomas internacionais](https://ironsoftware.com/csharp/ocr/examples/intl-languages/).
## Como Faço para Gerar Arquivos de Treinamento?
### Como Faço para Executar o Script split_training_text.py?
Na pasta Tesseract_tutorial, execute:
```shell
python split_training_text.py
```
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:
<img src="/static-assets/ocr/how-to/ocr-custom-font-training/pythontest.gif" alt="Terminal executando split_training_text.py e gerando arquivos .box e .tif na pasta de dados" class="img-responsive add-shadow" style="max-width: 720px; width: 100%; display: block; margin: 0 auto 30px auto;"/>
#### Como Faço para Corrigir o Aviso Fontconfig?

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`:
```xml
<dir>/usr/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir prefix="xdg">fonts</dir>
<!-- the following element will be removed in the future -->
<dir>~/.fonts</dir>
```
Copie-o para /etc/fonts:
```bash
cp fonts.co/nf /etc/fonts
```
Em seguida, aponte `split_training_text.py` para o mesmo caminho:
```python
fontconf_dir = '/etc/fonts'
```
#### 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`:

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](https://github.com/tesseract-ocr/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](https://ironsoftware.com/csharp/ocr/troubleshooting/custom-ocr-language-packs/).
## Como eu construo meu arquivo de dados de fonte personalizada treinado?
Da pasta tesstrain, execute:
```bash
TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100
```
- 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:
```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](https://github.com/tesseract-ocr/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`:
<img src="/static-assets/ocr/how-to/ocr-custom-font-training/trainingdatagen.gif" alt="Pipeline de compilação do tesstrain executando as iterações de treinamento e emitindo o arquivo AMGDT.traineddata" class="img-responsive add-shadow" style="max-width: 720px; width: 100%; display: block; margin: 0 auto 30px auto;"/>
## 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%.

Para testar o modelo treinado com o IronOCR, aponte `UseCustomTesseractLanguageFile` para o arquivo e leia uma imagem de amostra:
```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}%");
```
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](https://ironsoftware.com/csharp/ocr/how-to/ocr-custom-language/) 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](https://ironsoftware.com/csharp/ocr/how-to/ocr-multiple-languages/), [correção de qualidade de imagem](https://ironsoftware.com/csharp/ocr/how-to/image-quality-correction/), e [ajuste de DPI](https://ironsoftware.com/csharp/ocr/how-to/dpi-setting/) 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](https://ironsoftware.com/csharp/ocr/how-to/progress-tracking/) e [processamento assíncrono](https://ironsoftware.com/csharp/ocr/how-to/async/) ao aplicar seu modelo treinado em vários documentos.
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.
1Install IronOCR with NuGet Package Manager
PM > Install-Package IronOcr
Install-Package IronOcr
2Copie 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;
using IronOcr;
var ocr = new IronTesseract();
ocr.UseCustomTesseractLanguageFile("path/to/YourCustomFont.traineddata");
string text = ocr.Read(new OcrInput("image-with-special-font.png")).Text;
C#
3Implante para testar em seu ambiente de produção.
Observe: O 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:
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.
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.
Veja como a cópia da fonte deve parecer quando ela chega no diretório de fontes do Ubuntu:
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
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:
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:
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:
Como Faço para Corrigir o Aviso Fontconfig?
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><!-- the following element will be removed in the future --><dir>~/.fonts</dir>
<dir>/usr/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir prefix="xdg">fonts</dir>
<!-- the following element will be removed in the future -->
<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:
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:
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:
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%.
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 orientationvar ocr = new IronTesseract();ocr.UseCustomTesseractLanguageFile("path/to/AMGDT.traineddata");ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;// Preprocess so the model sees clean glyphsusing var input = new OcrInput();input.LoadImage("test-image-with-amgdt-font.png");input.EnhanceResolution(300);input.DeNoise();// Confidence reflects training qualityvar 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}%");
ImportsIronOcr' Load the trained model; AutoOsd handles orientationDim ocr As New IronTesseract()ocr.UseCustomTesseractLanguageFile("path/to/AMGDT.traineddata")ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd' Preprocess so the model sees clean glyphsUsing 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}%")EndUsing
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
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.
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.
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.
Can I deploy my custom-trained Tesseract model on multiple platforms?
Yes, once trained on a Linux environment, the `.traineddata` file is portable and can be used in applications running on Windows, macOS, Linux, and Docker.
What accuracy can I expect from a custom-trained font model in IronOCR?
The accuracy depends on training samples and iterations during the training process. More samples and iterations generally enhance accuracy, and IronOCR provides confidence scores to evaluate the model.
How can I troubleshoot 'Failed to Read Data' errors during training?
This error can often be resolved by patching the Makefile to correctly point it toward the output directory for dictionary files.
What is the role of the `eng.traineddata` file in custom font training?
`eng.traineddata` serves as the base language model providing linguistic context, which improves the accuracy of the custom-trained font over models built entirely from scratch.
What should I do if I encounter permission issues copying font files during setup?
If you receive a 'Destination Folder Access Denied' message, perform the file copy operation from a root shell in the terminal to ensure proper permissions.