Czy ktoś może polecić bibliotekę / API do wyodrębniania tekstu i obrazów z pliku PDF? Musimy być w stanie uzyskać dostęp do tekstu zawartego w znanych wcześniej obszarach dokumentu, więc API będzie musiało podać nam informacje o położeniu każdego elementu na stronie.
Chcielibyśmy, aby te dane zostały wyprowadzone w formacie xml
lub json
. Obecnie patrzymy na PdfTextStream, który wydaje się całkiem niezły, ale chcielibyśmy usłyszeć doświadczenia i sugestie innych ludzi.
Czy istnieją alternatywy (komercyjne lub bezpłatne) do programowego wyodrębniania tekstu z pliku PDF?
pdf
text
ghostscript
extraction
text-extraction
Budda007
źródło
źródło
/^\s*\[?\((.*?)\)\]?\s*T[Jj]/mg
. Po prostu szuka operatora Tj / TJ, który oznacza cały normalny tekst w pliku PDF.Odpowiedzi:
Dostałem 400-stronicowy plik pdf z tabelą danych, które musiałem zaimportować - na szczęście brak obrazów. Ghostscript zadziałał dla mnie:
gswin64c -sDEVICE=txtwrite -o output.txt input.pdf
Plik wyjściowy został podzielony na strony z nagłówkami itp., Ale łatwo było wtedy napisać aplikację do usuwania pustych wierszy itp. I zassać wszystkie 30 000 rekordów.
-dSIMPLE
i-dCOMPLEX
nie zrobiło różnicy w tym przypadku.źródło
gs
zamiastgswin64c
. Działa świetnie. Żadnych opatentowanych płatnych bzdur. Po prostu działa.-sDEVICE=txtwrite
zrobić? Nie rozumiem zbyt wiele po przeczytaniu Jak używać Ghostscript | Wybór urządzenia wyjściowegogswin64c -sDEVICE=txtwrite -o- input.pdf
. Źródło (nieznacznie zmienione przeze mnie): gist.github.com/drmohundro/560d72ed06baaf16f191ee8be34526acOd dziś to wiem: najlepszą rzeczą do ekstrakcji tekstu z plików PDF jest TET, zestaw narzędzi do ekstrakcji tekstu . TET jest częścią rodziny produktów PDFlib.com.
PDFlib.com to firma Thomasa Merza. Jeśli nie rozpoznajesz jego nazwiska: Thomas Merz jest autorem „PostScript and PDF Bible”.
Pierwszym wcieleniem TET jest biblioteka . Że można prawdopodobnie zrobić wszystko, co chciał Budda006, w tym informacje o położeniu każdego elementu na stronie. Aha, i może również wyodrębniać obrazy. Ponownie łączy obrazy, które są podzielone na kawałki.
pdflib.com oferuje również inne wcielenie tej technologii, wtyczkę TET do programu Acrobat . Trzecim wcieleniem jest PDFlib TET iFilter . To jest samodzielne narzędzie dla komputerów stacjonarnych użytkowników. Oba są darmowe (jak w piwie) do użytku prywatnego, niekomercyjnego.
Jest naprawdę potężny. O wiele lepsze niż własna ekstrakcja tekstu Adobe. Wyodrębnił dla mnie tekst, w którym inne narzędzia (w tym Adobe) wypluwają tylko śmieci.
Właśnie przetestowałem samodzielne narzędzie dla komputerów stacjonarnych i to, co mówią na ich stronie internetowej, jest prawdą. Ma bardzo dobrą linię poleceń. Niektóre z moich "problematycznych" plików testowych PDF narzędzie obsłużyło z pełną satysfakcją.
Od teraz ta rzecz będzie moją rekomendacją dla wszystkich wyrafinowanych i trudnych wymagań dotyczących ekstrakcji tekstu PDF.
TET jest po prostu niesamowity. Wykrywa tabele. W tabelach identyfikuje komórki obejmujące wiele kolumn. Identyfikuje osobno wiersze tabeli i zawartość każdej komórki tabeli. Bardzo dobrze radzi sobie z łączeniem wyrazów: usuwa łączniki i przywraca całe wyrazy. Obsługuje języki inne niż ASCII (w tym CJK, arabski i hebrajski). Napotykając ligatury, przywraca oryginalne znaki ...
Spróbuj.
źródło
Wydajne narzędzie wiersza poleceń, open source, wolne od jakichkolwiek opłat, dostępne zarówno w systemie Linux, jak i Windows: po prostu nazwane pdftotext. To narzędzie jest częścią biblioteki xpdf.
http://en.wikipedia.org/wiki/Pdftotext
źródło
-layout
przełącznika, aby zachować tabele, działa całkiem dobrze.W przypadku Pythona jest PDFMiner i pyPDF2 . Aby uzyskać więcej informacji na ten temat, zobacz moduł Python do konwersji plików PDF na tekst .
źródło
Oto moja sugestia. Jeśli chcesz wyodrębnić tekst z PDF, możesz zaimportować plik pdf do Dokumentów Google, a następnie wyeksportować go do bardziej przyjaznego formatu, takiego jak .html, .odf, .rtf, .txt itp. Wszystko to za pomocą interfejsu Drive API. . Jest darmowy * i solidny. Spojrzeć na:
https://developers.google.com/drive/v2/reference/files/insert https://developers.google.com/drive/v2/reference/files/get
Ponieważ jest to API REST, jest kompatybilne ze WSZYSTKIMI językami programowania. Linki, które zamieściłem powyżej, mają praktyczne przykłady dla wielu języków, w tym: Java, .NET, Python, PHP, Ruby i inne.
Mam nadzieję, że to pomoże.
źródło
PdfTextStream (o którym mówiłeś) jest teraz bezpłatny dla aplikacji jednowątkowych. Moim zdaniem jego jakość jest znacznie lepsza niż w przypadku innych bibliotek (szczególnie w przypadku rzeczy takich jak funky osadzone czcionki itp.).
Alternatywnie powinieneś rzucić okiem na Apache PDFBox , open source.
źródło
Biblioteka Docotic.Pdf może być wykorzystana do wyodrębnienia tekstu z plików PDF jako zwykłego tekstu lub jako zbiór fragmentów tekstu ze współrzędnymi dla każdego fragmentu.
Docotic.Pdf może być również używany do wyodrębniania obrazów z plików PDF .
Zastrzeżenie: pracuję dla Bit Miracle.
źródło
Jeden z komentarzy tutaj używał gs w systemie Windows. Odniosłem pewien sukces również w systemie Linux / OSX, z następującą składnią:
Użyłem
dSIMPLE
zamiast tego,dCOMPLEX
ponieważ ten ostatni wyświetla 1 znak na linię.źródło
Ponieważ pytanie dotyczy w szczególności alternatywnych narzędzi do pobierania danych z plików PDF w formacie XML , możesz być zainteresowany zapoznaniem się z komercyjnym narzędziem „ByteScout PDF Extractor SDK”, które jest w stanie zrobić dokładnie to: wyodrębnić tekst z pliku PDF jako XML wraz z dane pozycjonowania (x, y) i informacje o czcionce:
Tekst w źródłowym PDF:
Wyjście XML:
PS: dodatkowo dzieli tekst na strukturę tabelaryczną.
Ujawnienie: pracuję dla ByteScout
źródło
Najlepsze, co obecnie przychodzi mi do głowy (na liście „prostych” narzędzi) to Ghostscript (aktualna wersja to v.8.71) i program narzędziowy PostScript
ps2ascii.ps
. Ghostscript wysyła go w swoimlib
podkatalogu. Spróbuj tego (w systemie Windows):To polecenie przetwarza strony 3-7 z
input.pdf
. Przeczytaj komentarze w samymps2ascii.ps
pliku, aby zobaczyć, co oznaczają "dziwne" liczby i dodatkowe informacje ( wskazują ciągi znaków, pozycje, szerokości, kolory, obrazy, prostokąty, czcionki i podziały stron ... ). Aby uzyskać „proste” wyjście tekstowe, zamień-dCOMPLEX
część na-dSIMPLE
.źródło
ps2ascii book.pdf notes.txt
. Jeśli twój dokument zawiera głównie ASCII, masz szczęście.Wiem, że ten temat jest dość stary, ale ta potrzeba wciąż żyje. Czytałem wiele dokumentów, forum i skrypt i budowałem nowy, zaawansowany, który obsługuje skompresowane i nieskompresowane pliki PDF:
https://gist.github.com/smalot/6183152
W niektórych przypadkach wiersz poleceń jest zabroniony ze względów bezpieczeństwa. Tak więc natywna klasa PHP może spełniać wiele potrzeb.
Mam nadzieję, że to pomoże każdemu
źródło
Do wyodrębniania obrazu pdfimages to bezpłatne narzędzie wiersza poleceń dla systemu Linux lub Windows (win32):
pdfimages: Wyodrębnij i zapisz obrazy z pliku w formacie Portable Document Format (PDF)
źródło
Apache pdfbox ma tę funkcję - część tekstowa jest opisana w:
http://pdfbox.apache.org/apidocs/org/apache/pdfbox/util/PDFTextStripper.html
przykładowa implementacja znajduje się pod adresem https://github.com/WolfgangFahl/pdfindexer
testcase TestPdfIndexer.testExtracting pokazuje, jak to działa
źródło
QuickPDF wydaje się być rozsądną biblioteką, która powinna robić to, co chcesz, za rozsądną cenę.
http://www.quickpdflibrary.com/ - Mają 30-dniowy okres próbny.
źródło
W moich systemach Macintosh stwierdzam, że „Adobe Reader” wykonuje całkiem dobrą robotę. Utworzyłem alias na moim pulpicie, który wskazuje na „Adobe Reader.app” i wszystko, co robię, to upuszczanie pliku PDF na alias, co czyni go aktywnym dokumentem w programie Adobe Reader, a następnie z menu Plik, Wybieram „Zapisz jako tekst…”, nadaję mu nazwę i gdzie go zapisać, klikam „Zapisz” i gotowe.
źródło