
Eu sempre encontreiTecnologia OCRestar atrasado em sistemas de código aberto. Eu também assisti oProjeto Ocropusdesde a sua infância. Eu tentei o que ouvi ser o melhor mecanismo de OCR disponível para Linux,Tesserato, e descobri que faltava lamentavelmente para documentos comerciais. Existem outras implementações de OCR mais promissoras? E quanto ao objetivo ainda mais esperançoso da interpretação da caligrafia? O que é possível nos sistemas *nix neste campo?
Responder1
Tesserato
Em 2020, o melhor software de OCR de código aberto disponível éTesseract 4com seu novoModelo OCR de rede neural LSTM. Seu desempenho de OCR é muito melhor que o modelo anterior de OCR usado na versão 3.
Exemplo (produza um arquivo PDF output.pdf
com uma camada de texto para um documento alemão digitalizado):
$ echo page-*.png > input.list
$ tesseract --oem 1 -l deu input.list output pdf
( --oem 1
ativa o mecanismo LSTM)
Imprima o texto reconhecido em stdout:
$ tesseract --oem 1 -l deu page page-0001.png stdout
Listar idiomas instalados:
$ tesseract --list-langs
O suporte para vários idiomas/scripts está disponível na forma de downloadconjuntos de dados treinados, por exemplo, existe até um conjunto de dados para Fraktur.
Com o novo modelo LSTM, o Tesseract se inspira noOCRopusprojeto de pesquisa.
A versão 3 do Tesseract tem um desempenho relativamente ruim mesmo em imagens de entrada de boa qualidade, ou seja, muitas vezes ele detecta falsamente caracteres únicos em pixels de poeira (fora de qualquer contexto textual) e introduz facilmente erros de caracteres únicos em palavras conhecidas.
Cuneiforme
CuneiformeO desempenho do OCR não é tão ruim, mas não é mantido ativamente (última versão em 2011, versão 1.1) e trava facilmente e tem alguns outros problemas:
- Falhas de segmentaçãocomvários pacoteselançamentos
- o seu algoritmo de disposição está simplesmente quebrado, ou seja, em documentos de uma coluna os parágrafos são muitas vezes embaralhados aleatoriamente
- não ocorre erro em opções desconhecidas
Você pode desativar o algoritmo de layout assim:
$ cuneiform --singlecolumn -l ger -f text -o foo.txt image-0001
( -l
especifica o idioma do documento de origem)
ocrad
Ócradexemplo de chamada:
$ ocrad -F utf8 image-0001
O texto é impresso por padrão em stdout.
Em um documento comercial, faltou uma palavra sublinhada, enquanto cuneiforme/tesseract/gocr não.
O manual do Ocrad contém uma seção sobreos algoritmos usados, por exemplo:
5) Detecte caracteres e agrupe-os em linhas.
6) Reconhecer caracteres (muito ad hoc; um algoritmo por caractere).
7) Corrija algumas ambigüidades (transforme l.OOO em 1.000, etc).
GOCR
GOCRexemplo de chamada:
$ gocr image-0001
O texto é impresso por padrão em stdout.
A documentação do GOCR não inclui muitos detalhes sobre quais modelos/métodos são usados para OCR.
Hardware
Sãotem um suporte muito bom para alguns scanners de alimentação automática de documentos (ADF), por exemplo, para oUma visãoeFujitsuuns.
Incluído no Sane está o scanimage
programa de linha de comando que você pode usar para construir pipelines de varredura com script (cf. por exemplo, meuadf2pdf.py
roteiro).
Responder2
Achei umpergunta semelhante no StackOverflowe aSDK de OCR Asprise, um dos vinculadoscomercialprodutos, possui uma versão Linux.
Responder3
... OCR é mais do que "apenas reconhecimento de caracteres". Tratamento de imagens, pré-processamento - análise de página/layout para encontrar textos, imagens, tabelas ou códigos de barras. Para o reconhecimento, é preciso lidar com diferentes fontes, tamanhos e idiomas. Isso é importante porque para obter bons resultados é necessário usar dicionários e definições de linguagem. Finalmente, as pessoas esperam mais opções de exportação do que texto (por exemplo, XML, RTF ou PDF pesquisável). Existem algumas opções comerciais de SDKs, mas elas não são baratas e nem gratuitas.
Recentemente encontrei umCLI OCR para Linux da ABBYY. Existe um teste gratuito de 100 páginas.
Responder4
Se você tiver um orçamento, recomendo fortementeCLI do ABBYY FineReader Engine para Linux. Nossa empresa o utiliza em nosso aplicativo web há um ano e planejamos renovar a licença. Qualidade de reconhecimento muito boa, interface de linha de comando, reconhecimento em vários idiomas.