Caracteres limitados TESSERACT está procurando
Pergunta
É possível limitar o conjunto de caracteres que tesseract Procura (por exemplo, pesquisar apenas letras az)? Isso melhoraria muito meus resultados.
Solução
Crie um arquivo de configuração (por exemplo, "letras") no diretório TessData/Configs - geralmente /usr/share/tesseract/tessdata/configs
ou
/usr/share/tesseract-ocr/tessdata/configs
E adicione esta linha ao arquivo de configuração:
tessedit_char_whitelist abcdefghijklmnopqrstuvwxyz
... ou talvez [az] funciona .. não :-)
Em seguida, ligue para o TESSERACT semelhante a este:
tesseract input.tif output nobatch letters
Isso limitará o Tesseract para reconhecer apenas os personagens procurados
Outras dicas
Para usar a lista de permissões em um arquivo de configuração ou usando o -c tessedit_char_whitelist=...
Switch da linha de comando, na versão mais recente 4.0, você precisará definir o modo OCR Engine como o "Somente Tesseract original". Isso ocorre porque o novo modo "Neural Nets LSTM" não respeita a configuração da lista de permissões. Exemplo de linha de comando adequada para versão 4.0:
tesseract input_file output_file --oem 0 -c tedsetit_char_whitelist = abc123
ATUALIZAÇÃO: Em versões mais recentes (4.0), estão corrompidos eng.traineddata
Arquivo instalado por padrão pelo Windows e alguns instaladores do Linux. Solução temporária é substituir tessdata\eng.traineddata
Arquivo com um da versão mais antiga. Este arquivo deve ter cerca de 30 MB. Caso contrário, você receberá um erro: "Tesseract não poderia carregar nenhum idioma!" ou similar.
Além do arquivo de configuração, é o -c
bandeira:
tesseract stdin stdout -c tessedit_char_whitelist=abcdefghijklmnopqrstuvwxyz -psm 6
Basta adicionar isso para qualquer pessoa que use o Tesseract no Android. Na sua função de leitura, onde você define o idioma etc. Adicione a seguinte linha;
tesseract.setVariable("tessedit_char_whitelist","ABCDEFGHIJKLMNOPQRSTUVWXYZ");
Você também pode fazer a lista negra para que os personagens excluam.
Na versão 4.00 do TESSERACT, isso não pode ser feito. Você só pode ajustar seu modelo ou usar o Regex para remover caracteres extras da previsão.