Engines de OCR. Alguma que presta em Java?

11 respostas
A

Srs.,

Estou precisando de uma engine de OCR, de uns tempos pra cá comecei a testar algumas e não achei nenhuma que tenha uma SDK aceitável em Java e que tenha essa interface. Algumas que testei:

Clara OCR - Projeto muito inicial e está parado no tempo, reconheceu mal.
Tesseract OCR - Reconheceu mal imagem com boa qualidade, sem contar que não dá pra botar o portugues pra funcionar nem com reza brava no 3.0, e o 2.0 leu muito mal.
JOCR - Reconheceu mal
FreeOCR - Sumiu do mapa
Asprise OCR - Reconheceu mal
Abbyy Fine Reader - Muito boa, excelente leitura e falhou muito pouco, porém é cara que só e não vi suporte da SDK em Java.

Lote de documentos para teste:

  • Contrato em PDF bitonal, com imagens TIFF (capturadas c/ 100dpi)
  • Uma conta de luz capturada com 300dpi
  • Um printscreen de browser
  • Outro print, bitonal, de um arquivo de texto.

Enfim, não vi algum bom suporte a isso e depois de muito pesquisar tô caindo na realidade: não tem ou é impressão minha? Alguém sabe algum outro? E sobre a Abbyy, alguém conhece algo sobre ela em Java? (o site diz que tem suporte, mas fala que não tem exemplos, achei isso bem contraditório)

[]'s

PS: esqueci de comentar, fui baixar também a Pegasus, mas não encontrei em canto algum a SDK Java deles.

11 Respostas

M

Abby e OmniPage SDK (da Nuance) são os melhores, ambos são pagos e são caros.

Outra, você não quer uma API em Java, mesmo que você pegue qualquer um desses, escreva uma aplicação wrapper em linha de comando e chame eles, OCRs tem costume de dar segfault, morrer quando o arquivo está corrompido e coisas do tipo, então é muito mais seguro executar ele do lado de fora da sua app pra evitar que ela morra do nada porque o SDK falhou.

J

É mais fácil escrever uma que usar as bugadas versões demos disponíveis pela internet. Não é um projeto difícil de desenvolver e é uma boa chance de ganhar known how com redes neurais e processamento de imagens.

Trabalho para uma ou duas semanas.


A

Opa Julio,

O problema de tudo é que eu não acredito (e seria realmente impossível) que iria atingir uma boa qualidade no estilo da Abbbyy com o desenvolvimento em duas semanas. E é um produto que estou desenvolvendo, não um trabalho menor. Portanto, eu tô em busca de uma solução “quase” perfeita.

Não consegui baixar a SDK da Pegasus for Java, também. Alguém sabe como diabos encontro?

Maurício, eu até pagaria se a SDK for boa. A idéia é: desenvolver um wrapper mesmo, a aplicação ia bater em um service com um metodo ocr(bytes, recognizeBarcodes), e ia retornar a String da coisa. Qual o motivo pra uma OCR dessas dar segfault tao normalmente?

[]'s!

M

Nào sei, sinceramente, mas a minha experiência tanto com o OmniPage quanto com o Abby é que isso é bem como e a JVM sempre cai junto, então o que fazemos hoje aqui é sempre chamar como processo externo.

A

Certo, mas ela continua caindo chamando como processo externo? Como você faz isso? Chama pelo windows mesmo ou linux? Diretão, na unha como um comando do sistema?

[]'s

J

AUser:
Opa Julio,

O problema de tudo é que eu não acredito (e seria realmente impossível) que iria atingir uma boa qualidade no estilo da Abbbyy com o desenvolvimento em duas semanas. E é um produto que estou desenvolvendo, não um trabalho menor. Portanto, eu tô em busca de uma solução “quase” perfeita.

Não consegui baixar a SDK da Pegasus for Java, também. Alguém sabe como diabos encontro?

Maurício, eu até pagaria se a SDK for boa. A idéia é: desenvolver um wrapper mesmo, a aplicação ia bater em um service com um metodo ocr(bytes, recognizeBarcodes), e ia retornar a String da coisa. Qual o motivo pra uma OCR dessas dar segfault tao normalmente?

[]'s!

esse artigo postado aí tem 10% de margem de erro, não tá bom? Os sdks do mercado estão nessa margem também.

M

AUser:
Certo, mas ela continua caindo chamando como processo externo? Como você faz isso? Chama pelo windows mesmo ou linux? Diretão, na unha como um comando do sistema?

[]'s

É um executável que chamamos via ProcessBuilder mesmo, nada demais.

A

Mauricio Linhares:
AUser:
Certo, mas ela continua caindo chamando como processo externo? Como você faz isso? Chama pelo windows mesmo ou linux? Diretão, na unha como um comando do sistema?

[]'s

É um executável que chamamos via ProcessBuilder mesmo, nada demais.

Blz. Mas esse EXE veio junto com a instalação dele ou vcs precisaram adquirir separadamente?

A

juliocbq:
AUser:
Opa Julio,

O problema de tudo é que eu não acredito (e seria realmente impossível) que iria atingir uma boa qualidade no estilo da Abbbyy com o desenvolvimento em duas semanas. E é um produto que estou desenvolvendo, não um trabalho menor. Portanto, eu tô em busca de uma solução “quase” perfeita.

Não consegui baixar a SDK da Pegasus for Java, também. Alguém sabe como diabos encontro?

Maurício, eu até pagaria se a SDK for boa. A idéia é: desenvolver um wrapper mesmo, a aplicação ia bater em um service com um metodo ocr(bytes, recognizeBarcodes), e ia retornar a String da coisa. Qual o motivo pra uma OCR dessas dar segfault tao normalmente?

[]'s!

esse artigo postado aí tem 10% de margem de erro, não tá bom? Os sdks do mercado estão nessa margem também.

Vou testa-la depois e posto opiniões. Obrigado.

M

Eu escrevi o programa em C mesmo, eles só mandam o SDK pra você.

A

Eu escrevi o programa em C mesmo, eles só mandam o SDK pra você.

Beleza, muito obrigado. :slight_smile:

Tô tentando até agora falar com o departamento de vendas dele. Vms ver se respondem.

[]'s!

Criado 24 de agosto de 2011
Ultima resposta 25 de ago. de 2011
Respostas 11
Participantes 3