Come posso cercare un file PDF dalla riga di comando?


26

Sto verificando i riferimenti di un documento e voglio trovare le posizioni nel corpo in cui viene fatto riferimento a un documento (nell'elenco dei riferimenti). Esiste un editor PDF che supporta la ricerca tramite bash ed estrae il contesto di una posizione? Ho provato a convertire PDF in testo, ma non ho avuto un buon risultato.

Risposte:


22

Solo per aggiungere alla risposta sopra, in particolare è possibile utilizzare uno strumento da riga di comando di xpdf-utils chiamato pdftotext e quindi cercare il documento di testo creato da questo strumento con grep.

Questo potrebbe assomigliare a questo:

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

Ulteriori informazioni nel manuale. L'unico svantaggio di pdftotext è che non puoi farci globbing per trasformare più file contemporaneamente. Questo problema può essere superato con un piccolo script bash:

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

Se hai problemi a creare un documento di testo da un pdf a causa, ad esempio, di un file pdf incompatibile, questo è un altro problema.

Penso che in generale, gli editor di pdf non includano le righe di comando perché sono grafici. Se vuoi usare bash, (o forse zsh!), Allora potresti dover usare una shell terminale.

In bocca al lupo!


20

Poppler-utils

Nota: xpdf-utils è un pacchetto di transizione per poppler-utils.

Puoi usare poppler-utils. poppler-utils è una suite di strumenti per file PDF (Portable Document Format).

Per installarlo è possibile utilizzare Ubuntu Software Center o facendo clic di seguito:

Installa poppler-utils

pdfgrep

pdfgreppuò cercare ricorsivamente una stringa o un modello nei file PDF negli alberi delle directory, contando le corrispondenze o stampando un contesto per ciascuna corrispondenza. Ad esempio, per cercare keywordin /some directorymodo ricorsivo , senza distinzione tra maiuscole e minuscole:

pdfgrep -Ri keyword /some/directory

Pdfgrep è uno strumento per la ricerca di testo in file PDF. Funziona in modo simile a "grep".

Caratteristiche:

  • cerca espressioni regolari.
  • supporto per alcune importanti opzioni grep, tra cui: + output del nome file. + output del numero di pagina. + insensibilità al case opzionale. + conta
    occorrenze.
  • e la caratteristica più importante: output a colori!

Installa pdfgrep

1 fonte: Ubuntu Apps Directory


6

Per cercare un'espressione regolare in più file pdf usando pdfgrep:

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

dove percorso è la posizione per i tuoi file pdf.


0

La ragione per cui pdftotext è stata senza successo potrebbe essere che i PDF sono immagini scansionate e che è necessario OCR, ho scritto un modo rapido per cercare tutti pdfi messaggi che non possono essere modificati grepe OCR.

Ho notato che se un pdffile non ha alcun carattere, di solito non è ricercabile. Sapendo questo possiamo usare pdffonts.

Le prime 2 righe di pdffontssono l'intestazione della tabella, quindi quando un file è ricercabile ha più di due righe di output, sapendo che possiamo creare:

gedit check_pdf_searchable.sh

incolla questo

#!/bin/bash 
#set -vx
if ((`pdffonts "$1" | wc -l` < 3 )); then
echo $1
ocrmypdf "$1" "$1"_ocr.pdf
fi

quindi renderlo eseguibile

chmod +x check_pdf_searchable.sh

quindi elenca tutti i pdf non ricercabili nella directory:

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

o nella directory e nelle sue sottodirectory:

tree -fai . | grep -P ".pdf$" | xargs -L1 -I {} ./check_pdf_searchable.sh {}

È inoltre necessario installare:

sudo apt install ocrmypdf
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.