Jak wyodrębnić tekst z pdf w skrypcie w systemie Linux?

23

W systemie Linux - jak wyodrębnić tekst, .pdfw którym tekst to tak naprawdę tekst, a nie skanowany obraz? Chcę czegoś, czego mogę używać w wierszu poleceń / w skrypcie, a nie interaktywnie. (Nie chcę konwertować .tifi używać OCR - tekst jest już dostępny w .pdfpliku, więc po co wprowadzać niedokładności z niedoskonałego OCR?)

RobM
źródło
podobne pytanie na askubuntu
Trevor Boyd Smith

Odpowiedzi:

25

pdftotext dołączony do programu poppler spróbuje wyodrębnić dowolny tekst znaleziony w pliku PDF.

Ignacio Vazquez-Abrams
źródło
1
Dzięki za szybką odpowiedź, Ignacio! Sprawdzałem już pdftotext, który jest dostępny w formacie xpdf (z foolabs.com) - twoja odpowiedź skłoniła mnie do innego spojrzenia i udało mi się. Wygląda na to, że Poppler ewoluował z xpdf, więc przyjrzę się temu. Dzięki jeszcze raz!
RobM,
9

Odpowiedź Ignacio jest w porządku. W rzeczywistości byłaby to pierwsza rzecz na mojej liście. Cóż, to może być może zasugerować pdftohtmlnarzędzie, które jest również dostarczane z programem poppler, w połączeniu z pdfreflow, jeśli chcesz spróbować ponownie złożyć tekst w akapity itp. (Oczywiście, da to wynik HTML, ale konwersja HTML na zwykły tekst może robić to na wiele sposobów).

Oto kilka innych opcji.

Narzędzie ebook-convertwiersza polecenia Calibre , które może konwertować pliki .PDF na zwykły tekst (lub RTF lub wiele formatów ebooków, takich jak ePub itp.)

pdftxtextractz Podofo

Abiword można wywoływać z wiersza poleceń, aby konwertować między dowolnymi formatami, które może wprowadzać / eksportować, a przy odpowiedniej wtyczce importu obejmuje to pliki PDF:

abiword --to=txt file.pdf

(Szczerze mówiąc, myślę, że zarówno AbiWord, jak i kaliber używają bibliotek poppler, ale nie jestem pozytywny.)

frabjous
źródło
Dzięki frabjous! W tym przypadku po prostu rozpakowuję tekst, aby móc skanować w poszukiwaniu określonych ciągów (nazwy dostawców, numery kont) i wzorców (numery i daty faktur) - więc nie trzeba go ponownie formatować ani wyświetlać ponownie. Doceniam potwierdzenie i alternatywy - i jestem pewien, że inni też to zrobią! - Rob
RobM