Como transformar um pdf em um pdf pesquisável em texto?

20

Eu tenho vários documentos digitalizados em pdf e quero poder pesquisá-los. Como eu posso fazer isso?

Essencialmente, eu tenho que OCR o pdf e depois misturar o texto extraído em um novo pdf. Tentei, sem sucesso, várias soluções diferentes (incluindo as encontradas em Adicionando informações de OCR a um PDF ).

  1. pdfocr (que me fornece este problema: https://github.com/gkovacs/pdfocr/issues/7 )
  2. pdfsandwich (cujo centro de software diz que é um pacote ruim e que não devo instalá-lo)
  3. O OCRfeeder (no centro de software) exporta muito bem, mas não reage ao exportar para pdf.
  4. O Gscan2pdf exporta uma imagem totalmente preta (mas pesquisável), conforme relatado nesta discussão .
  5. Eu não acho que o visualizador do Pdfxchange possa lidar com ocr on the fly em arquivos com mais de 500 páginas.

Existe um pacote de software que não conheço? Ou um script que faz isso?

don.joey
fonte
3
Ainda não testei, mas já vi esse projeto ser recomendado no passado.
Glutanimado
Eu só escreveu pdf2searchablepdf. Depende tesseract. Isso funciona bem. Super fácil de usar. Veja aqui. askubuntu.com/a/1187881/327339
Gabriel Staples

Respostas:

12

Ubuntu <16.04

Após o comentário do Glutanimate, encontrei uma solução funcional. É o script OCRmyPDF .

git clone https://github.com/jbarlow83/OCRmyPDF
cd OCRmyPDF
sh ./OCRmyPDF.sh -h  # to see the usage

Se você receber uma mensagem dizendo que você deve instalar o GNU paralelo. Isso pode ser feito (seguindo /ubuntu//a/298598/115155 ) com (a segunda linha é opcional e depende do seu sabor e versão):

sudo apt-get install parallel
sudo rm /etc/parallel/config

Finalmente, você pode OCR seu pdf com o comando:

sh ./OCRmyPDF.sh input.pdf output.pdf  # change input and output to the files you want

Se parecer que o comando não responde, você pode aumentar a verbosidade usando o -vsinalizador (que pode ser usado incrementalmente como -vvou -vvv). Talvez seja melhor testar os resultados primeiro em um pdf menor. Você pode encurtar um pdf da seguinte maneira:

pdftk A=input.pdf cat A1-5 output output.pdf

Ubuntu> = 16.04

A partir do Ubuntu 16.04, o OCRmyPDF tornou-se disponível no apt. Apenas corra

sudo apt install ocrmypdf
ocrmypdf -h   # to see the usage

Finalmente, você pode OCR seu pdf com o comando:

ocrmypdf input.pdf output.pdf  # change input and output to the files you want

Se parecer que o comando não responde, você pode aumentar a verbosidade usando o -vsinalizador (que pode ser usado incrementalmente como -vvou -vvv). Talvez seja melhor testar os resultados primeiro em um pdf menor. Você pode encurtar um pdf da seguinte maneira:

pdftk A=input.pdf cat A1-5 output output.pdf

Se você tiver alguma dúvida, consulte o novo repositório do Github .

don.joey
fonte
Você aceitaria sua resposta, para resolvê-la? (Para que ela não conste na lista não respondida) #
48510 Usuário registrado
Apenas sudo -H pip install git+https://github.com/jbarlow83/OCRmyPDFpara Ubuntu 16.04
Martin Thoma
1
Para o Ubuntu 16.10 e posterior, você pode simplesmente fazer sudo apt install ocrmypdf.
endolith 26/02
6

@ don.joey respondeu com o script ocrmypdf . No entanto, ele pode ser instalado diretamente agora (a partir das 16h10).

sudo apt install ocrmypdf

Então você deve instalar os idiomas do tesseract necessários.

Para listar quais idiomas já estão no seu sistema, digite:

tesseract --list-langs

Caso você perca um, instale-o. Por exemplo,

sudo apt install tesseract-ocr-spa

Agora você pode produzir um PDF pesquisável (cuja qualidade variará, dependendo do documento digitalizado) com o seguinte comando

ocrmypdf -l 'spa' old.pdf new.pdf

Obviamente, você pode verificar sua página de manual para obter algumas opções adicionais.

Ludenticus
fonte
Tenha meu voto positivo, senhor!
don.joey
4

pdfsandwichexecuta exatamente esse trabalho. Eu não sabia que há um pacote fornecido no centro de software, mas estou fornecendo pacotes deb do Ubuntu no site do projeto (consulte http://www.tobias-elze.de/pdfsandwich/ para obter detalhes), incluindo a versão mais recente atualmente (0.1.2), que provavelmente ainda não existe em nenhum centro de software.

Se você tiver um arquivo digitalizado scanned_file.pdf, basta ligar para

pdfsandwich scanned_file.pdf

que gera o arquivo scanned_file_ocr.pdfcom o texto reconhecido adicionado às páginas digitalizadas.

Comparado à maioria das soluções existentes, ele detecta automaticamente a versão do tesseract instalada e adapta seu comportamento de acordo. Além disso, ele executa o pré-processamento das imagens digitalizadas antes do processo de OCR, como remoção de distorção ou remoção de bordas escuras etc., o que pode melhorar consideravelmente o reconhecimento óptico de caracteres.

AVISO LEGAL: Eu sou o desenvolvedor pdfsandwiche, portanto, fortemente tendencioso.

Tobias Elze
fonte
Parece ótimo, mas por que o pdfsandwich versão 0.1.4 instalado usando o apt-get converte cada caractere em um retângulo preto para mim no Ubuntu 16.04?
Valentas
1
É difícil responder sem mais detalhes. Antes de tudo, recomendo usar uma versão mais recente da ferramenta. A versão atual é 0.1.6. Você pode encontrar pacotes deb para o Ubuntu no site. Segundo, se isso não ajudar, você pode usar a opção -verbose para obter mais detalhes e usá-los para registrar um relatório de erro.
perfil completo de Tobias Elze
alguns problemas para mim. convert: tentativa de executar uma operação não permitida pela política de segurança `PDF '@ error / constit.c / IsCoderAuthorized / 408. então eu tive que instalar o imagemagick a partir da fonte baixada do imagemagick.org/script/install-source.php, e recebi o erro 'ao carregar as bibliotecas compartilhadas: libMagickCore-7.Q16HDRI.so.6: não é possível abrir o arquivo de objeto compartilhado: " arquivo ou diretório "'e esta solução funcionou executando' sudo ldconfig / usr / local / lib 'a versão imagemagick é 7.0.8-56 obtida por' identity -version '.
pierrely 27/07
pode valer a pena adicionar esses utilitários se você planeja manipular ou aparar PDFs. 1. pdfshuffler para dividir as páginas esquerda e direita (de originais em frente e verso) 2. pdftk pdf chain Use o pdftk (como um arquivo jar) para dividir o arquivo em páginas pares e ímpares separadamente: 4 para cortar as páginas pdfquench - eu também precisava do gir1. 2-goocanvas-2.0 gir1.2-poppler-0.18 python-pygoocanvas python-poppler python-pypdf2. O pdfsandwich funcionou bem, reduziu o tamanho do arquivo em 10X também. obrigado. Ubuntu 19.04 também pdfsam para dividir e mesclar, executar como um arquivo jar Java após o download
pierrely 27/07
0

O OCRfeeder tem um erro no

/usr/lib/python2.7/dist-packages/reportlab/pdfgen/textobject.py

a linha 436 deve ler:

            lines = asUnicode(stuff).strip().split('\n')
# bug here, was:
#            lines = '\n'.split(asUnicode(stuff).strip())

mudou isso e funcionou para mim

AndreR
fonte
0

Sistema operacional: Ubuntu 18.04

Primeiro, instale tesseract-ocrcom:

apt-cache show tesseract-ocr
sudo apt-get update && sudo apt-get upgrade
apt-get install tesseract-ocr --print-uris
apt-get install tesseract-ocr
sudo !!

Se você usar um idioma diferente do inglês com o tesseract, precisará instalar o pacote de idioma correspondente. Por exemplo, para o português, você precisará fazer:

sudo apt-get install tesseract-ocr-por

Caso contrário, você receberá o erro:

Error opening data file /usr/share/tesseract-ocr/4.00/tessdata/por.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to your 
"tessdata" directory.
Failed loading language 'por'
Tesseract couldn't load any languages!
Could not initialize tesseract.

Se você pesquisar no Google "tesseract PDF", provavelmente encontrará esta postagem um tanto desatualizada . No entanto, ele fornece algumas dicas úteis. Você primeiro terá que converter seu .pdfarquivo em .tiffum. Corre:

convert -density 125 originalfile.pdf -depth 8 -alpha Off newfile.tiff

Se, como na postagem desatualizada, você esquecer de adicionar alpha -Off, você receberá o seguinte erro:

Tesseract Open Source OCR Engine v4.0.0-beta.1 with Leptonica
Error in pixReadFromTiffStream: spp not in set {1,3,4}

Agora você pode executar o comando final. No caso específico de seu PDF original estar em português, você precisará deste comando:

tesseract -l por newfile.tiff output pdf 

O arquivo gerado será nomeado output.pdf. Se, por exemplo, seu PDF estiver em francês, depois de instalar o correspondente tesseract-ocr-fra, você executará:

tesseract -l fra newfile.tiff output pdf 

E o arquivo desejado será novamente output.pdf.

evaristegd
fonte
0

Eu tive esse mesmo problema, então escrevi isso no fim de semana. Dê uma chance; funciona muito bem! É um invólucro simples tesseract. Ele usa pdftoppmpara converter um PDF em um monte de arquivos TIFF, depois tesseractexecuta o OCR (reconhecimento óptico de caracteres) neles e produz um PDF pesquisável como saída. Todos os arquivos temporários intermediários são excluídos automaticamente quando o script é concluído.

Código fonte: https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF

Instruções para instalar e usar pdf2searchablepdf:

Testado no Ubuntu 18.04 em 11 de nov de 2019.

Instalar:

git clone https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF.git
./PDF2SearchablePDF/install.sh
sudo apt update
sudo apt install tesseract-ocr

Usar:

pdf2searchablepdf mypdf.pdf

Agora você terá um pdf chamado mypdf_searchable.pdf , que contém texto pesquisável!

Feito. O wrapper não possui dependências python, pois atualmente está escrito inteiramente no bash.

Referências ou Recursos Relacionados:

  1. PDF2SearchablePDF : https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF
  2. Como transformar um pdf em um pdf pesquisável em texto?
  3. Qual é a melhor e mais simples solução de OCR?
  4. Extraindo imagens incorporadas de um PDF
  5. pdfsandwich : Wrapper de software alternativo que acabei de descobrir, vale a pena conferir também! http://www.tobias-elze.de/pdfsandwich/
  6. /unix/301318/how-to-ocr-a-pdf-file-and-get-the-text-stored-within-pdf/551526#551526
  7. [como transformar um PDF em várias imagens pdftoppm] Extraindo imagens incorporadas de um PDF
Gabriel Staples
fonte