Como eu procuro um arquivo PDF a partir da linha de comando?

25

Eu estou verificando referências de um artigo e quero encontrar as posições no corpo onde algum papel (na lista de referências) é referenciado. Existe um editor de PDF que suporta pesquisa via bash e extrair o contexto de uma posição? Eu tentei converter PDF para texto, mas não tive um bom resultado.

    
por David 06.09.2012 / 07:09

4 respostas

20

Apenas para adicionar a resposta acima, em particular, você pode usar uma ferramenta de linha de comando do xpdf-utils chamada pdftotext e então procurar o documento de texto criado por esta ferramenta com o grep.

Isso pode ser algo assim:

pdftotext document.pdf - | grep -C5 -n -i "search term"

Há mais informações no manual. A única desvantagem de pdftotext é que você não pode nos globbing para transformar vários arquivos ao mesmo tempo. Esse problema pode ser superado com um pequeno script bash:

for f in pdf_directory; do echo $f; pdftotext $f - | grep -i "search_term"; done

Se você está tendo problemas para criar um documento de texto a partir de um pdf devido, por exemplo, a um arquivo pdf incompatível, então esse é outro problema.

Acho que, em geral, os editores de pdf não incluem linhas de comando porque são gráficas. Se você quiser usar bash, (ou talvez zsh!) Então você pode ter que usar um terminal shell.

Boa sorte!

    
por Joe 06.09.2012 / 08:24
18

poppler-utils

Nota: xpdf-utils é um pacote de transição para o poppler -utilos.

Você pode usar utilitários de pop-up. O poppler-utils é um conjunto de ferramentas para arquivos PDF (Portable Document Format).

Para instalá-lo, você pode usar o Ubuntu Software Center ou clicando abaixo:

pdfgrep

pdfgrep pode pesquisar uma string ou um padrão em arquivos PDF recursivamente em árvores de diretório, contando correspondências ou imprimindo algum contexto para cada correspondência. Por exemplo, para pesquisar recursivamente keyword em /some directory , diferencie maiúsculas de minúsculas:

pdfgrep -Ri keyword /some/directory
  

Pdfgrep é uma ferramenta para pesquisar texto em arquivos PDF. Ele funciona semelhante a   'grep'.

     

Recursos:

     
  • pesquise por expressões regulares.
  •   
  • suporte para algumas opções importantes do grep, incluindo: + saída de nome de arquivo. + saída do número da página. + insensibilidade a maiúsculas e minúsculas + contagem
      ocorrências.
  •   
  • e o recurso mais importante: saída de cores!
  •   

1 Fonte: Diretório do Ubuntu Apps

    
por Mitch 06.09.2012 / 07:28
6

Para procurar uma expressão regular em múltiplos arquivos pdf usando o pdfgrep:

find /path -iname '*.pdf' -exec pdfgrep -H 'pattern' {} \;

onde path é a localização dos seus arquivos pdf.

    
por ignite 09.09.2012 / 21:26
0

Desde que você tentou o pdftotext com sucesso, o motivo pode ser que o PDF seja apenas uma imagem digitalizada e você precisa fazer o OCR com firmeza, escrevi uma maneira bem simples de pesquisar todos os pdfs que não podem ser grep ed e OCR. / p>

Percebi que, se um arquivo pdf não tiver nenhuma fonte, geralmente ele não é pesquisável. Então, sabendo disso, podemos usar pdffonts .

As primeiras 2 linhas do pdffonts são o cabeçalho da tabela, então quando um arquivo é pesquisável tem mais de duas saídas de linha, sabendo disso, podemos criar:

gedit check_pdf_searchable.sh

depois cole isto

#!/bin/bash 
#set -vx
if (('pdffonts "" | wc -l' < 3 )); then
echo 
pypdfocr ""
fi

torne-o executável

chmod +x check_pdf_searchable.sh

liste todos os PDFs não pesquisáveis no diretório:

ls -1 ./*.pdf | xargs -L1 -I {} ./check_pdf_searchable.sh {}

ou no diretório e em seus subdiretórios:

tree -fai . | grep -P ".pdf$" | xargs -L1 -I {} ./check_pdf_searchable.sh {}
    
por Eduard Florinescu 08.02.2018 / 09:47