Adicionando informações de OCR a um PDF

28

Eu tenho uma digitalização de boa qualidade de um documento; essa digitalização está em formato pdf.

Como posso adicionar informações ocr ao pdf, para que elas se tornem pesquisáveis? Por pesquisável, quero dizer que o objetivo é que, ao visualizar o pdf com evince, o CTRL-F realmente me permita pesquisar no conteúdo em pdf.

fdierre
fonte
4
@Jakob, eu não acho que seja uma bobagem, estamos perguntando coisas diferentes. A outra pergunta é sobre a extração de texto de algum pdf (ou seja, a geração de arquivos txt correspondentes), enquanto a minha pergunta é sobre a modificação do pdf para adicionar informações ocr e fazer com que a função de pesquisa funcione no leitor de pdf. Vou esclarecer a questão.
214122Data de publicação
Como e o que você usou para digitalizar o documento?
Mitch
@ Mitch Eu usei o meu escritório Ricoh Aficio MP-C2500 impressora / copiadora / scanner, que possui um alimentador de documentos muito bom. :-)
fdierre
Digitalização e / ou software de OCR?
Mitch

Respostas:

21

pdfsandwich

Faz o que você deseja e fornece pacotes deb do Ubuntu. Ele usa o tesseract como mecanismo de OCR. A chamada a seguir adiciona a camada de texto ao seu PDF digitalizado:

pdfsandwich scanned.pdf

A seguir, faz o mesmo, mas com outro idioma (código ISO 639-2, tesseract-ocr-LANGCODEpacote de download ) e definindo o layout:

pdfsandwich  -verbose -lang spa -layout single scanned.pdf

Se houver algum erro, faça o download da última versão deb do Sourceforge .

Disclaimer: Eu sou o desenvolvedor do pdfsandwich e, portanto, obviamente tendencioso.

Tobias Elze
fonte
6
Isso é realmente ótimo, obrigado. No entanto, parece modificar as imagens, parece que passa uma máscara de nitidez sobre elas ou algo assim. Existe uma maneira de deixar as imagens exatamente como eram anteriormente? No meu exemplo, o filtro conseguiu remover a barra de algumas frações em algumas equações. Tudo o resto funciona muito bem ...
naught101
Pacote de má qualidade: `O Lintian verifica os resultados do /tmp/pdfsandwich_0.1.3_amd64.deb: E: pdfsandwich: arquivo-de-controle-possui-permissões-ruins md5sums 0664! = 0644 E: pdfsandwich: arquivo-de-controle-possui proprietário incorreto md5sums james / james! = root / root E: pdfsandwich: proprietário de arquivo errado-uid-ou-gid usr / 1000/1000 E: pdfsandwich: proprietário do arquivo errado-uid-ou-gid usr / bin / 1000 / 1000 E: pdfsandwich: proprietário do arquivo errado-uid-ou-gid usr / bin / pdfsandwich ...
AB
Baixe a última versão deb do SF . Se você receber um erro no final, pode estar relacionado ao ghostscript (v0.1.4). Agora a v0.1.6 usa pdfunite.
Pablo #
1
@PabloBianchi Existe alguma maneira de revisar manualmente o texto OCRed pdfsandwitch? Estou fazendo isso com alguns documentos suecos e funciona bem, exceto por erros de ortografia (provavelmente por causa da fonte do original), que seriam fáceis de corrigir se fosse um arquivo de texto, mas como posso fazer isso no PDF resultante ?
zrajm
@zrajm, você pode usar alguns dos parâmetros do pdfsandwich para um melhor reconhecimento na etapa do OCR. Para editar o texto oculto por trás da imagem de um PDF, basta editar a camada de caixas de texto com o LibreOffice Draw, o Inkscape ou qualquer outra ferramenta de edição de PDF. Se você encontrar uma maneira melhor, poste aqui. DaH jImej!
Pablo A
9

Existem dois projetos que fazem o truque: GScan2PDF e OCRFeeder

Aldi
fonte
4

Encontrei uma solução não ideal, mas muito eficaz.

Eu uso o PDF X-Change Viewer através do Wine. Possui um recurso de OCR que adiciona uma camada de texto ao pdf baseado em imagem existente.

Assim, você pode pesquisar e copiar texto dessa camada invisível.

insira a descrição da imagem aqui

Façam
fonte
2

Para uma solução de linha de comando, você pode usar o pdfocr .

Em resumo, instale o software:

$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:gezakovacs/pdfocr
$ sudo apt-get update
$ sudo apt-get install pdfocr

Em seguida, execute o pdfocr:

$ pdfocr -i scanned.pdf -o scanned.with.search.pdf

Isso funcionou para mim no Ubuntu 12.04 LTS.

Robert Citek
fonte
6
Github aqui: github.com/gkovacs/pdfocr . Mas isso tem o mesmo problema pdfsandwich, pois modifica / compacta PDFs contendo imagens de alta resolução, basicamente destruindo algumas das informações da imagem original.
precisa saber é o seguinte
2

Uma solução que é facilmente implementável e fornece um pdf de saída com a mesma qualidade de arquivo de entrada e tamanho razoável é o OCRmyPDF:

https://github.com/jbarlow83/OCRmyPDF

user127022
fonte
Eu tive excelentes resultados com seu script. Diferentemente do pdfocr de Geza Kovacs, ele não requer bibliotecas extras (difíceis de compilar em algumas distros do Linux!). Obrigado!
Maxim
0

Esta é a minha solução rápida e suja com base em ImageMagick de convert, tesseract, parallele pdftk(todos disponíveis em distribuições baseadas em Debian). É amplamente baseado nesta postagem do blog .

#!/bin/sh -ex

density=${2:-"300"} # default to 300 DPI if 2nd parameter is not given

convert -monitor -density "$density" "$1" -monochrome -compress lzw -alpha deactivate page_%05d.tif
parallel --bar "tesseract {} {.} pdf 2>/dev/null" ::: page_*.tif
pdftk page_*.pdf cat output "${1%.*}-ocred.pdf" compress

# Cleanup temp files
rm page_?????.tif page_?????.pdf
stefanct
fonte
0

Para um diretório inteiro com arquivos ppm, você pode usar este script ppm2ocrpdf.sh

#!/bin/sh

mkdir .pdf
for f in *.ppm; do
    echo " Running convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf"
    convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf
    echo " Running tesseract -l deu "$f" "$f" pdf"
    tesseract -l deu "$f" "$f" pdf
    echo " Running pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf"
    pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf
    echo " Running rm "$f"ppm.pdf"
    rm "$f"ppm.pdf
    echo " Running rm "$f".pdf"
    rm "$f".pdf
done
echo " Running pdftk *.pdf cat output ../outdocument.pdf"
pdftk ./.pdf/*.pdf cat output outOcrDocument.pdf
echo " Running rm ./.pdf/*.pdf"
rm ./.pdf/*.pdf
echo " Running rmdir .pdf"
rmdir .pdf
echo "Done"
PetaT
fonte