Pergunta

estou usando TESSERACT OCR (através da Pytesser) e PIL (Python Image Library) para teste automatizado de um aplicativo.

Estou verificando se o texto exibido está ok fazendo uma captura de tela e recebendo o texto graças ao TESSERACT.

Eu tive alguns problemas no começo e parece funcionar melhor desde que aumentei o tamanho da captura de tela graças à interpolação bicúbica do PIL.

Infelizmente, ainda tenho alguns erros como confusão entre '0' e 'O'. Posso imaginar que terei outros problemas semelhantes no futuro.

Gostaria de saber se existem algumas técnicas para preparar uma imagem para ajudar o OCR. Qualquer ideia é bem -vinda.

desde já, obrigado

Foi útil?

Solução

Plug e isenção de responsabilidade sem vergonha: minha compania Pacotes TESSERACT para uso em .NET

O TESSERACT é um mecanismo OK OCR. Pode perder muito e fica prontamente confuso com o não texto. A melhor coisa que você pode fazer é garantir que ele obtenha texto apenas. A próxima melhor coisa é dar algo Suramente binarizado (limiar adaptativo ou dinâmico para chegar lá) ou escala de cinza e deixar que ele tente fazer binarização.

Outras dicas

  1. Treine Tesseract para reconhecer sua fonte
  2. Torne a imagem mais limpa e com espaço livre suficiente em torno dos personagens
  3. Lucro :)

Aqui estão poucos exemplos do mundo real.

  • A primeira imagem é a imagem original (números de medidores de energia cortados)
  • A segunda imagem é uma imagem ligeiramente limpa no GIMP, cerca de 50% de precisão de OCR no Tesseract
  • A terceira imagem é completamente limpa de imagem - 100% OCR reconhecido sem nenhum treinamento!

enter image description here enter image description here enter image description here

Mesmo nas melhores condições, as variantes do OCR vão se esgueirar em você. Sua melhor opção será projetar seus testes para estar ciente deles.

Para distinguir entre 0 e O, uma solução simples é escolher uma fonte que distingue entre ambos (por exemplo: 0 tem um traço ou ponto no meio). Isso seria aceitável em seu aplicativo?

Outra solução é aplicar uma etapa baseada no dicionário após a análise de caractere por caracteres do texto-alimentando o texto reconhecido em alguma forma de verificador ou validador de ortografia para diferenciar os caracteres difíceis.

Por exemplo, é provável que um símbolo redondo seguido de outros números seja zero, enquanto o mesmo símbolo seguido de letras provavelmente será um capital O. É um exemplo trivial, mas mostra como o contexto é necessário para criar um sistema OCR mais confiável.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top