Analiza PDF w Pythonie - wyodrębnianie sformatowanych i zwykłych tekstów [zamknięte]

82

Szukam biblioteki PDF, która pozwoli mi wyodrębnić tekst z dokumentu PDF. Spojrzałem na PyPDF i to może bardzo ładnie wyodrębnić tekst z dokumentu PDF. Problem polega na tym, że jeśli w dokumencie znajdują się tabele, tekst w tabelach jest wyodrębniany w jednej linii z pozostałą częścią tekstu dokumentu. Może to być problematyczne, ponieważ tworzy sekcje tekstu, które nie są użyteczne i wyglądają na zniekształcone (na przykład wiele liczb połączonych razem).

Chciałbym wyodrębnić tekst z dokumentu PDF bez jakichkolwiek tabel i specjalnego formatowania. Czy jest tam biblioteka, która to robi?

Mike Cialowicz
źródło

Odpowiedzi:

61

Możesz także rzucić okiem na PDFMiner (lub dla starszych wersji Pythona zobacz PDFMiner i PDFMiner ).

Szczególnie interesującą cechą PDFMiner jest to, że możesz kontrolować sposób, w jaki przegrupowuje części tekstu podczas ich wyodrębniania. Robisz to, określając odstępy między wierszami, słowami, znakami, itp. Więc może przez ulepszenie tego możesz osiągnąć to, co chcesz (zależy to od zmienności twoich dokumentów). PDFMiner może również podać lokalizację tekstu na stronie, może wyodrębnić dane według identyfikatora obiektu i innych rzeczy. Więc kop w PDFMiner i bądź kreatywny!

Ale twój problem nie jest naprawdę łatwy do rozwiązania, ponieważ w pliku PDF tekst nie jest ciągły, ale składa się z wielu małych grup znaków umieszczonych absolutnie na stronie. Celem formatu PDF jest utrzymanie nienaruszonego układu. Nie jest zorientowany na treść, ale zorientowany na prezentację.

Etienne
źródło
1
PDFMiner wygląda interesująco. Mogę użyć wyniku XML z niego, a następnie przeanalizować go, aby zignorować to, czego nie chcę. To nadal wymaga znacznej obróbki końcowej, ale na razie jest to prawdopodobnie najlepsze rozwiązanie. Dziękuję Ci.
Mike Cialowicz
@Etienne, czy można tego użyć, jeśli plik PDF zawiera również znaki w innych językach?
Sahil Mittal,
Powinien działać z innymi znakami językowymi. Dokumenty wspominają: obsługa języków CJK i pionowych skryptów pisania. Najlepszy sposób, aby się upewnić, przetestuj to!
Etienne
1
Port PDFMiner pdfminer.six Python 3 działa dobrze
hamish
1
Począwszy od wersji 20191010, PDFMiner obsługuje tylko Python 3
fantabolous
0

Jest to trudny problem do rozwiązania, ponieważ wizualnie podobne pliki PDF mogą mieć bardzo różną strukturę w zależności od tego, jak zostały utworzone. W najgorszym przypadku biblioteka musiałaby zasadniczo działać jak OCR. Z drugiej strony, plik PDF może zawierać wystarczającą strukturę i metadane do łatwego usuwania tabel i rysunków, do których wykorzystania można dostosować bibliotekę.

Jestem prawie pewien, że nie ma narzędzi typu open source, które rozwiązałyby twój problem dla szerokiej gamy plików PDF, ale pamiętam, że słyszałem o komercyjnym oprogramowaniu, które twierdziło, że robi dokładnie to, o co prosisz. Jestem pewien, że napotkasz je podczas wyszukiwania w Google.

akaihola
źródło