Jak wyszukiwać plik PDF z wiersza poleceń?

26

Sprawdzam referencje papieru i chcę znaleźć pozycje w ciele, do których odwołuje się jakiś papier (na liście odnośników). Czy istnieje edytor PDF, który obsługuje wyszukiwanie za pomocą bash i wyodrębnia kontekst pozycji? Próbowałem przekonwertować plik PDF na tekst, ale nie przyniosłem dobrego rezultatu.

David
źródło

Odpowiedzi:

22

Aby dodać do powyższej odpowiedzi, w szczególności możesz użyć narzędzia wiersza polecenia z xpdf-utils o nazwie pdftotext, a następnie przeszukać dokument tekstowy utworzony przez to narzędzie za pomocą grep.

Może to wyglądać mniej więcej tak:

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

Więcej informacji znajduje się w instrukcji. Jedyną wadą pdftotext jest to, że nie można nam globować w celu transformacji wielu plików jednocześnie. Ten problem można rozwiązać za pomocą małego skryptu bash:

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

Jeśli masz problemy z utworzeniem dokumentu tekstowego z pliku pdf z powodu, na przykład, niezgodnego pliku pdf, to jest inny problem.

Myślę, że ogólnie rzecz biorąc, edytory pdf nie zawierają wierszy poleceń, ponieważ są graficzne. Jeśli chcesz użyć bash (lub może zsh!), Być może będziesz musiał użyć powłoki terminalu.

Powodzenia!

Joe
źródło
20

poppler-utils

Uwaga: xpdf-utils to pakiet przejściowy dla poppler-utils.

Możesz użyć poppler-utils. poppler-utils to zestaw narzędzi do plików w formacie Portable Document Format (PDF).

Aby go zainstalować, możesz skorzystać z Centrum oprogramowania Ubuntu lub klikając poniżej:

Zainstaluj poppler-utils

pdfgrep

pdfgrepmoże rekurencyjnie wyszukiwać ciąg lub wzór w plikach PDF w drzewach katalogów, licząc dopasowania lub drukując kontekst dla każdego dopasowania. Na przykład, aby rekursywnie szukać keywordw /some directory, z uwzględnieniem wielkości liter:

pdfgrep -Ri keyword /some/directory

Pdfgrep to narzędzie do wyszukiwania tekstu w plikach PDF. Działa podobnie do `grep '.

Cechy:

  • szukaj wyrażeń regularnych.
  • obsługa niektórych ważnych opcji grep, w tym: + wyjście nazwy pliku. + wyjście numeru strony. + opcjonalna niewrażliwość na wielkość liter. + zliczanie
    wystąpień.
  • i najważniejsza cecha: kolorowy wydruk!

Zainstaluj pdfgrep

1 Źródło: Katalog aplikacji Ubuntu

Mitch
źródło
6

Aby wyszukać wyrażenie regularne w wielu plikach pdf za pomocą pdfgrep:

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

gdzie ścieżka jest lokalizacją plików pdf.

zapalać
źródło
0

Powodem, dla którego pdftotext nie powiódł się, może być to, że PDF to zeskanowane obrazy i trzeba je OCR, napisałem szybki sposób na przeszukanie wszystkich pdf, których nie można grepedytować i OCR.

Zauważyłem, że jeśli pdfplik nie ma żadnej czcionki, zwykle nie można go przeszukiwać. Wiedząc o tym, możemy skorzystać pdffonts.

Pierwsze 2 wiersze pdffontsnagłówka tabeli, więc gdy plik, który można przeszukiwać, ma więcej niż dwa wiersze, wiedząc, że możemy to utworzyć:

gedit check_pdf_searchable.sh

wklej to

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

następnie uczyń go wykonywalnym

chmod +x check_pdf_searchable.sh

następnie wypisz wszystkie nieprzeszukiwalne pliki pdf w katalogu:

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

lub w katalogu i jego podkatalogach:

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

Musisz także zainstalować:

sudo apt install ocrmypdf
Eduard Florinescu
źródło