Tenho algumas perguntas sobre o Tesseract
Contexto
Atualmente estou trabalhando em um antigo algoritmo criptográfico da Alemanha Oriental (RDA), que foi desenvolvido na década de 80. Implementei o algoritmo em C#. Agora tenho cerca de 30 páginas de casos de teste que desejo verificar. Como não quero digitar manualmente cada string binária/hexadecimal, gostaria de fazer o OCR com o Tesseract (ou qualquer software livre que funcione).
Problema
Tenho problemas para obter resultados satisfatórios. Explicado com mais detalhes abaixo.
Status atual
(desculpe, não posso postar imagens diretamente) O documento fica assim: parte de uma página/letras em detalhes
Abordagem ingênua
Com as configurações padrão (eu uso o alemão, não importa para as partes relevantes), obtenho resultados péssimos.
tesseract -l deu input.tiff output pdf
O resultado pareceesse
Especialmente os zeros causam problemas. Palavras, letras e uns são reconhecidos um pouco melhor.
O que eu tentei (pré-processamento)
- Girar a página
- Aumentar contraste
- Binarizar a imagem
- Erodir/dilatar a imagem para preencher pequenas lacunas entre as letras
O resultado final pareceesse. Pelo que sei sobre OCR, isso deve melhorar um pouco as coisas.
O que eu tentei (configurações do Tesseract)
Meu arquivo de configuração se parece com o seguinte:
load_system_dawg F
load_freq_dawg F
language_model_penalty_non_dict_word 0
language_model_penalty_non_freq_dict_word 0
tessedit_create_pdf T
tessedit_char_whitelist 0123456789ABCDEF
Basicamente, digo ao Tesseract para não tentar transformar as letras em palavras úteis e permitir apenas os caracteres necessários para strings hexadecimais.
Como você pode veraquiisso leva a resultados ligeiramente melhores, mas não em todos os casos. Alguns zeros na última linha são detectados significativamente melhor. Entre o F nada de útil acontece.
Brincar com as configurações Rede Neural vs OCR Clássico (--oem 0/1) faz uma pequena diferença. O algoritmo clássico detecta muitos 0 como 9 (nunca como 0), mas de forma muito mais consistente (mas não é bom)
Pergunta
O que mais eu poderia fazer para melhorar os resultados? Eu sei que poderia treinar a rede neural adicionalmente, mas pelo que li isso exige algum esforço que eu gostaria de evitar (construir o Tesseract para você mesmo, fazer o material de ML funcionar, criar dados de teste rotulados, etc.).
Algo mais?
Obrigado pela ajuda.