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.
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.
É 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.
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?
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.
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?
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![/quote]
esse artigo postado aí tem 10% de margem de erro, não tá bom? Os sdks do mercado estão nessa margem também.
[quote=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[/quote]
É um executável que chamamos via ProcessBuilder mesmo, nada demais.
[quote=Mauricio Linhares][quote=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[/quote]
É um executável que chamamos via ProcessBuilder mesmo, nada demais.[/quote]
Blz. Mas esse EXE veio junto com a instalação dele ou vcs precisaram adquirir separadamente?
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![/quote]
esse artigo postado aí tem 10% de margem de erro, não tá bom? Os sdks do mercado estão nessa margem também.[/quote]