Pergunta

Bem, estou usando uma versão .NET compatível deste OCR que pode ser encontrada em @ http : //www.pixel-technology.com/freeware/tessnet2/

Estou funcionando, mas o objetivo disso é traduzir placas, infelizmente o motor realmente não traduz com precisão algumas letras, por exemplo, aqui está uma imagem que fiz a varredura para determinar os problemas de caracteres

insira a descrição da imagem aqui

Resultado:

12345B7B9U ABCDEFGHIJKLMNUPIJRSTUVHXYZ

Portanto, os seguintes caracteres estão sendo traduzidos incorretamente:

1, O, Q, W

Isso não parece tão ruim, no entanto, nas minhas placas de carro, o resultado não é tão bom:

insira a descrição da imagem aqui= H4 ODM

insira a descrição da imagem aqui= LDH IFW

Teste falso

insira a descrição da imagem aqui= NR4 y2k

Como você deve saber, tentei reduzir o ruído, aumentar o contraste e remover pixels que não são totalmente pretos, sem melhorias reais.

Aparentemente, você pode 'aprender' as novas fontes do mecanismo, mas acho que precisaria recompilar a biblioteca para .NET, também parece que isso é executado em um sistema operacional Linux que eu não tenho.

http://www.scribd.com/doc/ 16747664 / Tesseract-Trainingfor-Khmer-LanguageFor-Posting

Portanto, estou sem saber o que tentar a seguir. Escrevi um aplicativo de console rápido exclusivamente para fins de teste, se alguém quiser experimentá-lo. Se alguém tiver alguma ideia / manipulação gráfica / pensamento sobre a biblioteca, gostaria de ouvi-lo.

Foi útil?

Solução

Eu usei o Tesseract via Tessnet2 recentemente (Tessnet2 é um wrapper VS2008 C ++ em torno do Tesseract 2.0 feito por Rémy Thomas, se bem me lembro). Deixe-me tentar ajudá-lo com o pouco conhecimento que tenho sobre esta ferramenta:

  • primeiro, como eu disse acima, este wrapper é apenas para o Tesseract 2.0 e o a versão mais recente do Tesseract no Google Code é 3.00 (o código não está mais hospedado no Source Forge). Existem contribuidores regulares: eu vi que a versão 3.01 ou mais está planejada. Portanto, você não se beneficia das últimas melhorias, incluindo a análise do layout da página, que pode ajudar quando as placas dos seus carros não são 100% horizontais.

  • Pedi a Rémy um wrapper Tessnet2 .NET para a versão 3, ele não planeja nenhum por enquanto. Então, como eu fiz, você terá que fazer isso sozinho!

  • Portanto, se você deseja obter a versão mais recente dos fontes, pode baixá-los do Subversion repositório (tudo está descrito na página dedicada do site ) e você ' poderei compilá-los se você tiver o Visual Studio 2008, uma vez que as fontes contêm uma solução VS2008 na subpasta vs2008. Esta solução é feita de projetos VS2008 C ++, então para obter resultados em C # você terá que usar .NET P / Invoke com o tessDll construído pelo projeto. Novamente, se você precisar disso, eu tenho exemplos de código que podem interessar a você, mas você pode querer ficar com C ++ e fazer seus próprios novos projetos WinForm, por exemplo!

  • Quando você tiver conseguido compilar (não deve haver grandes problemas para isso, mas diga-me se você encontrar alguns, talvez eu os tenha conhecido também :-)), você terá na saída vários binários que vai permitir que você faça um treinamento específico! Novamente, há uma página especialmente dedicada ao treinamento do Tesseract 3 . Graças a este treinamento, você pode:

    • restringir seu conjunto de caracteres, o que removerá automaticamente a pontuação ('/ - \' em vez de 'A', por exemplo)

    • indique as ambigüidades que você detectou ('D' em vez de 'O' como você pode ver, 'B' em vez de '8' etc.) que serão levadas em consideração quando você usar o seu treinamento.

  • Também vi que os resultados do Tesseract são melhores se você restringir a imagem à zona onde as letras estão localizadas (ou seja, sem rosto, sem paisagem ao redor): no meu caso, eu precisava reconhecer apenas uma zona específica de cartões fotos tiradas de uma webcam, então usei o processamento de imagem para restringir a zona. Isso demorou muito, é claro, mas minhas imagens vieram de muitas fontes diferentes, então não tive escolha. Se você conseguir obter imagens restritas ao mínimo, será ótimo!

Espero que tenha ajudado, não hesite em me enviar suas observações e perguntas!

Outras dicas

Olá, fiz muito ocr com tesseract e também tive alguns dos seus problemas. Você pergunta sobre as ferramentas de PROCESSAMENTO DE IMAGEM e eu recomendo "unpaper" (existem portas do Windows também, consulte o google) Esse é um bom programa de redução de distorção, não rotação, remoção de bordas e ruído e assim por diante. Ótimo para correr antes de outubro.

Se você tiver uma cor de fundo (um pouco) variável em suas imagens, recomendo o script imagemagick "textcleaner" Acho que é a detecção de bordas e o clareamento de todas as coisas não nervosas.

E se você tiver texto complexo, "ocropus" pode ser útil. A sintaxe é (no linux): "ocroscript rec-tess"

Minha configuração é 1. textcleaner 2. desenrolar 3. ocrupos

Com essas três etapas, posso ler quase tudo. Mesmo imagens bastante desfocadas + barulhentas tiradas com iluminação irregular, com duas colunas de texto compactado tornam-se muito legíveis. OK, talvez suas necessidades não sejam muito texto, mas as etapas 1) e 2) podem ser úteis para você.

No momento, estou construindo um mecanismo de reconhecimento de placas de veículos para ispy - obtive resultados muito melhores com o tesseract quandodividir a placa em caracteres individuais e construir uma nova imagem exibida verticalmente com um espaço em branco ao redor deles, como:

W

4

O

O

M

Acho que um grande problema que o tesseract tem é tentar fazer palavras com as letras e números horizontais e, no caso de placas com letras e números misturados, ele decidirá que um número é uma letra ou vice-versa.Inserir uma imagem com os caracteres espaçados verticalmente faz com que sejam tratados como caracteres individuais em vez de texto.

Ótima leitura! http://robotics.usc.edu/publications/downloads/pub/635/

Sobre o seu problema de inclinação para placas de veículos:

Problema: quando a entrada de OCR é obtida de uma câmera portátil ou outro dispositivo de imagem cuja perspectiva não é fixa como um scanner, as linhas de texto podem ficar distorcidas de seu original orientação [13]. Com base em nossos experimentos, alimentando tal a imagem girada para o nosso mecanismo de OCR produz resultados extremamente ruins resultados. Abordagem proposta: um processo de detecção de distorção é necessário antes de chamar o mecanismo de reconhecimento. Se qualquer inclinação for detectada, um procedimento de rotação automática é realizado para corrigir a inclinação antes de processar o texto posteriormente. Ao identificar o algoritmo para ser usado para detecção de distorção, descobrimos que muitos abordagens, como a mencionada em [13], são baseadas em os pressupostos de que os documentos têm margens definidas. Contudo, essa suposição nem sempre é válida em nossa aplicação. Além disso, os métodos tradicionais baseados em morfologia operações e métodos de projeção são extremamente lentos e tendem a falhar na presença de imagens capturadas pela câmera. Nisso trabalho, escolhemos uma abordagem mais robusta com base em Branchand- Algoritmo de localização de linha de texto limitado (algoritmo RAST) [25] para detecção de inclinação e rotação automática. A ideia básica disso algoritmo é identificar cada linha de forma independente e usar o inclinação da melhor linha de pontuação como o ângulo de inclinação para todo segmento de texto. Depois de detectar o ângulo de inclinação, a rotação é executado em conformidade. Com base em nossos experimentos, descobrimos este algoritmo é altamente robusto e extremamente eficiente e rápido. No entanto, ele sofria de uma pequena limitação em a sensação de que falhou em detectar rotação maior que 30. Também tentamos uma abordagem alternativa, que pode detectar qualquer ângulo de inclinação até 90. No entanto, esta abordagem foi baseada na presença de algum tipo de cruz na imagem. Devido a a falta de extensibilidade, decidimos ficar com RAST algoritmo.

Tesseract 3.0x, por padrão, penaliza combinações que não são palavras e nem são palavras comuns.O FAQ descreve um método para aumentar sua aversão a esse absurdo.Pode ser útil desativar a penalidade para palavras raras ou inexistentes, conforme descrito (inversamente) aqui: http://code.google.com/p/tesseract-ocr/ wiki / FAQ # How_to_increase_the_trust_in / Strength_of_the_dictionary ?

ABCocr .NET usa Tesseract3, então isso pode ser apropriado se você precisar do código mais recente em .NET.

Se alguém do futuro se deparar com essa pergunta, existe uma ferramenta chamada jTessBoxEditor que torna o ensino do Tesseract muito fácil.Tudo o que você faz é apontá-lo para uma pasta que contém imagens de amostra, clicar em um botão e ele criará seu arquivo * .learneddata para você.

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