Bash: pesquisa por palavras-chave arquivos PDF e páginas de retorno [duplicata]

1

Espero que alguém possa me ajudar com isso,

Estou procurando um script pequeno que faça uma pesquisa por palavra-chave em um arquivo PDF (na verdade, uma pasta de arquivos PDF) e precise retornar todas as páginas, incluindo o nome do arquivo, onde a palavra-chave foi encontrada. / p>

Encontrei o seguinte script (aqui link ):

#!/bin/bash

[ "$*" ] || { echo "You forgot a search string!" ; exit 1 ; }

found=1

for file in ./src/*.pdf ; do
   [ "$file" = '*.pdf' ] && echo "No PDF files found!" && exit 1
   pages=$(pdfinfo "$file" | awk '/Pages:/ { print $NF }')
   for ((i=1 ; i<=$pages ; i++)) ; do
      match=$(pdftotext -q -f $i -l $i "$file" - | grep -m 1 "$*")
      [ "$match" ] && echo "Page $i in $file" && found=0
   done
done

[ "$found" -ne 0 ] && echo "No search string matches found"

Ele retorna a maioria dos hits, mas ainda assim, a funcionalidade de pesquisa dentro do Adobe Acrobat Reader e do Mac Preview retorna muito mais correspondências. Qualquer um que reconheça qual pode ser o problema?

Meu palpite é que ele falha em um caractere antes e / ou depois da palavra-chave de pesquisa, mas isso é apenas um palpite.

Se incluir o número de correspondências por página, é realmente perfeito!

    
por Erik van de Ven 25.09.2018 / 11:05

1 resposta

2

Eu usaria pdfgrep :

pdfgrep -p "your search string" src/*.pdf

produzirá os números de página correspondentes, com uma contagem por página.

Isso pode não lidar com as correspondências ausentes; as razões para isso dependem do modo como os PDFs são construídos (em particular, como o texto é montado).

    
por 25.09.2018 / 11:12