Training Tesseract 3 para reconhecer números de imagens reais de medidores de gás

9

Estou tentando treinar o tesseract para reconhecer números de imagens reais de medidores de gás.

As imagens que eu uso para treinamento são feitas com uma câmera, por isso há muitos problemas: má resolução de imagens, imagens tremidas, pouca luz ou baixo contraste como resultado da superexposição, reflexos, sombras, etc. .

Para treinamento, criei uma imagem grande com uma série de dígitos capturados pelas imagens do medidor de gás e editei manualmente a caixa de arquivos para criar os arquivos .tr. O resultado é que apenas os dígitos das imagens mais nítidas e claras são reconhecidos, enquanto os dígitos das imagens desfocadas não são capturados pelo tesseract.

    
por Alessandro 18.07.2011 в 15:21
fonte

4 respostas

2

Tanto quanto eu posso dizer que você precisa OpenCV para reconhecer caixa em que os números estão localizados, mas OpenCV não é deus para OCR. Depois de localizar a caixa, apenas recorte essa parte, faça o processamento da imagem e entregue-a para realizar o OCR.

Preciso de ajuda com o OpenCV porque não sei programar no OpenCV.

Aqui estão alguns exemplos do mundo real.

  • A primeira imagem é a imagem original (números do medidor de energia)
  • A segunda imagem é ligeiramente limpa no GIMP, com cerca de 50% de precisão do OCR no tesseract
  • Terceira imagem é totalmente limpa imagem - OCR 100% reconhecido sem qualquer treinamento!

    
por valentt 05.11.2013 / 12:52
fonte
1

Eu tentaria este simples comando ImageMagick primeiro:

 convert          \
    original.jpg  \
   -threshold 50% \
    result.jpg

(Jogue um pouco com o parâmetro 50% - tente com valores menores e mais altos ...)

Limiar basicamente deixa apenas 2 valores, zero ou máximo, para cada canal de cor. Valores abaixo do limiar são ajustados para 0, valores acima dele são configurados para 255 (ou 65535 se estiver trabalhando com profundidade de 16 bits).

Dependendo do seu original.jpg, você pode ter como resultado uma imagem de alto contraste e com alto nível de trabalho.

    
por Kurt Pfeifle 19.08.2012 / 20:30
fonte
1

Eu sugiro que você:

  • use uma ferramenta para editar as caixas, como jTessBoxEditor , é muito útil e permite que você ganhe um tempo. Você pode instalá-lo facilmente em aqui
  • é uma boa ideia treinar as letras da situação real (barulhenta, borrada). Seu conjunto de treinamento ainda é limitado, você pode adicionar mais amostras de treinamento.
  • Eu recomendo que você use a API da Tesseract para melhorar a imagem (denoise, normalize, sharpen ...) por exemplo: Boxa * tesseract::TessBaseAPI::GetConnectedComponents(Pixa** pixa) (permite que você chegue às caixas delimitadoras de cada caractere)

    Pix * pimg = tess_api- > GetThresholdedImage ();

Aqui você encontra alguns exemplos

    
por Y.AL 10.01.2014 / 18:12
fonte
1

O Tesseract é um pacote OCR bastante decente, mas não processa imagens adequadamente. Minha experiência é que você pode obter um bom resultado de OCR se apenas fizer um pré-processamento antes de passá-lo para o tesseract.

Existem alguns indicadores-chave que melhoram significativamente o reconhecimento:

  1. Remove o ruído de fundo. Basicamente, isso significa usar limites médios adaptativos. Eu também asseguraria que os personagens são pretos e o fundo é branco.
  2. Use a resolução correta. Se você obtiver resultados ruins, aumente ou diminua a imagem até obter bons resultados. Você quer mirar em aprox. tamanho da fonte 14 a 300 dpi; no meu software que processa faturas que funcionam melhor.
  3. Não armazene imagens como JPEG; use BMP ou PNG ou qualquer outra coisa que não torne a imagem barulhenta.
  4. Se você estiver usando apenas uma ou duas fontes, tente treinar o tesseract nessas fontes.

Quanto ao ponto 4, se você souber a fonte que será usada, há algumas soluções melhores do que usar o Tesseract como se elas estivessem combinando diretamente com as imagens ... O algoritmo básico é encontrar os dígitos e combiná-los todos os personagens possíveis (que são apenas 10) ... ainda assim, a implementação é complicada.

    
por atlaste 18.07.2014 / 11:31
fonte