Text Recognition Model for Portuguese (pt-BR) & English — RTen / Ocrs
Este modelo de reconhecimento de texto óptico (OCR) foi desenvolvido e ajustado via fine-tuning especificamente para uso nativo no PdfCraft (uma aplicação desktop de alta fidelidade para edição e manipulação de PDFs em pure Rust, padrão Acrobat Pro).
O modelo estende os modelos originais do projeto ocrs (desenvolvido por Robert Knight) e é executado diretamente sobre o runtime de inferência ultraleve em Rust RTen.
🎯 Aplicação Principal: PdfCraft
O PdfCraft possui um pipeline nativo de Scan & OCR ▸ Reconhecer texto (pdfcraft-ocr), onde:
- Uma página renderizada tem suas caixas de texto detectadas pelo
text-detection.rten. - As linhas de texto são recortadas em escala de cinza e enviadas para este modelo (
text-recognition.rten). - O modelo transcreve os caracteres com suporte completo à língua portuguesa e gera a camada de texto pesquisável invisível (Searchable Image / Exact em fonte Helvetica WinAnsi).
🧠 Arquitetura do Modelo
O modelo segue a consagrada arquitetura CRNN (Convolutional Recurrent Neural Network):
- Entrada: Tensor
[1, 1, 64, W](Imagem monocromática de linha de texto, altura normalizada em 64 pixels, largura dinâmica). - Backbone Convolucional (CNN): Extração de características visuais e redução espacial (fator de redução 4x na largura).
- Camada Recorrente (RNN):
Bidirectional GRUde 2 camadas com 256 unidades ocultas (total de 512 saídas por passo temporal). - Decodificador: Projeção Linear
512 ➔ 135 classescomLogSoftmaxdecodificado via CTC Greedy Search. - Tamanho do Arquivo: Apenas ~9,4 MB (inferência extremamente rápida em CPU).
🔤 Alfabeto Suportado (134 caracteres)
Diferente do modelo padrão original (que lia apenas ASCII sem acentos), este modelo cobre todo o conjunto de caracteres da língua portuguesa:
0123456789!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~€ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzáàâãéêíóôõúüçÁÀÂÃÉÊÍÓÔÕÚÜÇ«»“”‘’–—°§ªº
- Inglês / Símbolos: Dígitos
0-9, pontuação padrão, símbolo do Euro€, alfabeto latino maiúsculo e minúsculo. - Português (pt-BR):
- Minúsculas com acento e cedilha:
á, à, â, ã, é, ê, í, ó, ô, õ, ú, ü, ç - Maiúsculas com acento e cedilha:
Á, À, Â, Ã, É, Ê, Í, Ó, Ô, Õ, Ú, Ü, Ç - Pontuações e sinais frequentes em documentos e contratos:
«,»,“,”,‘,’,–,—,°,§,ª,º
- Minúsculas com acento e cedilha:
⚙️ Detalhes do Treinamento e Fine-Tuning
- Ponto de Partida: Checkpoint oficial pré-treinado pelo autor (
text-rec-checkpoint-s52qdbqt.pt), treinado no dataset HierText. - Estratégia de Adaptação:
- Preservação total dos pesos convolucionais e recorrentes (GRU).
- Expansão da camada final de projeção de 97 para 135 classes.
- Inicialização quente (warm-start) para caracteres acentuados herdando representações das letras base correspondentes (ex:
áinicializado a partir dea,ça partir dec), evitando perturbação nos pesos já consolidados.
- Dados de Treinamento:
- Amostras sintéticas balanceadas em Português e Inglês (evitando esquecimento catastrófico).
- 13 famílias de fontes tipográficas TrueType com diferentes pesos, espaçamentos, ruídos e variações de contraste.
- Otimizador:
AdamW(taxa de aprendizado1.5e-4com decaimento cosseno eweight_decay = 1e-4). - Função de Perda:
CTCLoss(blank=0, zero_infinity=True). - Hardware Utilizado: GPU NVIDIA L4 (24 GB VRAM) via Google Colab Pro.
- Métricas Alcançadas:
- Perda de Validação:
0.0045 - Character Error Rate (CER):
0.07%(acurácia superior a 99.9%).
- Perda de Validação:
📦 Como Usar no PdfCraft
Opção 1: Pasta ao lado do executável (Recomendado)
Coloque o arquivo text-recognition.rten dentro da pasta models/ ao lado do pdfcraft.exe:
pasta-do-app/
├── pdfcraft.exe
└── models/
├── text-detection.rten
└── text-recognition.rten
Opção 2: Variável de Ambiente
Defina a variável apontando para a pasta que contém o modelo:
$env:PDFCRAFT_MODELS = "C:\caminho\para\models"
📜 Licenças e Atribuição
- Pesos do Modelo: Licenciados sob Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional (CC-BY-SA-4.0), em conformidade com o dataset HierText e com os modelos originais do projeto
ocrs. - Código de Treinamento e Exportação: Licenciado sob MIT OR Apache-2.0.
- Base Originária: Projeto robertknight/ocrs-models e robertknight/ocrs.