OCR: Como melhorar a precisão - bibliotecas existentes para remover 'móveis', formas, etc. para evitar confundir OCR?

StackOverflow https://stackoverflow.com/questions/2448106

Pergunta

Quero remover retângulos etc que incluam texto em uma imagem de captura de tela, para que eu possa executar o reconhecimento óptico de caracteres para obter texto preciso da captura de tela.

Fundo:

Fazendo isso para extrair dados de um aplicativo legado para uso com outros aplicativos. Essa é a única maneira de obter esses dados, pois os arquivos associados estão em um formato binário fechado, proprietário e binário.

Usarei o AutoitScript para direcionar o aplicativo para mostrar dados em sua interface do usuário, então vou criar isso e alimentarei isso para o Tesseract.

Eu já tive algum Sucesso na automação da interface do usuário e conseguiu usar o TESSERACT para obter o texto ASCII simples do bitmap.

Existem vários artigos do fórum AutoitsCript que discutem seu uso com o TESSERACT/OCR, mas não especificamente para minha pergunta.http://www.autoitscript.com/forum/index.php?s=6C32C3ECE12756E635A619CDF175EFF9&ShowFOWFOWFORUM=2

O que eu preciso fazer

Existem retângulos finos e largos de 1 pixel que incluem um pouco de texto, quando alimentados com tesserato, os vê como eu, por exemplo, para uma linha vertical do retângulo.

Alguma idéia de como remover os retângulos ou práticas recomendadas?

Estou perguntando se existe um conjunto de ferramentas baseado em linha de comando genérico para substituir os retângulos, por exemplo, em arquivos .png. Eu poderia passar o .png por isso e depois passá -lo para o Tesseract.

Detalhes sobre a liberação/configuração do TESSERACT que eu usei são os seguintes:

Vá aqui: http://code.google.com/p/tesseract-ocr/downloads/list- Para o conjunto de caracteres genéricos básicos do inglês para obter o tesseract em funcionamento e reconhecer seu texto bitmap no texto ASCII, use o tesseract-2.00.eng.tar.gz (versão atual no momento da redação é: "Dados de idioma inglês para teseract (2,00 e UP) julho de 2007 989 KB 84845 ")

Perguntas relacionadas que já vi no transbordamento da pilha

Nestes, minha pergunta não é completamente respondida ou uma solução comercial está sendo vendida. Não quero considerar uma solução comercial nesta fase.

Foi útil?

Solução

Provavelmente não haverá uma solução gratuita da prateleira para isso, mas codificar o seu não deve ser muito difícil, pois provavelmente é seguro assumir que um retângulo nunca será um personagem válido no alfabeto da sua fonte e, portanto, pode ser removido com segurança . Também ajuda que todas as suas bordas de retângulo tenham exatamente um pixel de largura.

Portanto, procure uma linha horizontal contígua que seja unida a outra linha paralela do mesmo comprimento por exatamente duas linhas verticais. Repita a pesquisa até encontrar todos os retângulos da imagem e depois os renderizem Graphics.DrawRectangle e Pens.Transparent. Não renderize um retângulo transparente até que você termine de pesquisar outra pessoa que corre o risco de eliminar partes de retângulos sobrepostos antes de encontrá -los. Esta é apenas uma sugestão inicial, não implementei ou depurei esse algoritmo.

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