PDF-Analyse mit Python - Extrahieren von formatierten und einfachen Texten [geschlossen]

82

Ich suche eine PDF-Bibliothek, mit der ich den Text aus einem PDF-Dokument extrahieren kann. Ich habe mir PyPDF angesehen, und dies kann den Text sehr gut aus einem PDF-Dokument extrahieren. Das Problem dabei ist, dass bei Tabellen im Dokument der Text in den Tabellen in Übereinstimmung mit dem Rest des Dokumenttextes extrahiert wird. Dies kann problematisch sein, da dadurch Textabschnitte erzeugt werden, die nicht nützlich sind und verstümmelt aussehen (z. B. viele zusammengepresste Zahlen).

Ich möchte den Text aus einem PDF-Dokument extrahieren, ohne Tabellen und spezielle Formatierungen. Gibt es da draußen eine Bibliothek, die das macht?

Mike Cialowicz
quelle

Antworten:

61

Sie können sich auch PDFMiner ansehen (oder ältere Versionen von Python siehe PDFMiner ).

Ein besonderes Merkmal von PDFMiner ist, dass Sie steuern können, wie Textteile beim Extrahieren neu gruppiert werden. Sie tun dies, indem Sie den Abstand zwischen Zeilen, Wörtern, Zeichen usw. angeben. Wenn Sie dies also optimieren, können Sie das erreichen, was Sie möchten (dies hängt von der Variabilität Ihrer Dokumente ab). PDFMiner kann Ihnen auch die Position des Textes auf der Seite geben, es kann Daten nach Objekt-ID und anderen Dingen extrahieren. Also graben Sie in PDFMiner und seien Sie kreativ!

Ihr Problem ist jedoch nicht einfach zu lösen, da der Text in einer PDF-Datei nicht fortlaufend ist, sondern aus vielen kleinen Gruppen von Zeichen besteht, die absolut auf der Seite positioniert sind. Der Fokus von PDF liegt darauf, das Layout intakt zu halten. Es ist nicht inhaltsorientiert, sondern präsentationsorientiert.

Etienne
quelle
1
PDFMiner sieht interessant aus. Ich kann die XML-Ausgabe verwenden und diese dann analysieren, um zu ignorieren, was ich nicht möchte. Dies erfordert noch eine erhebliche Nachbearbeitung, ist aber derzeit wahrscheinlich die beste Lösung. Danke dir.
Mike Cialowicz
@Etienne, kann dies verwendet werden, wenn das PDF auch andere Sprachzeichen enthält?
Sahil Mittal
2
Im Moment unterstützt PDFMiner Python 3 nicht, was heutzutage ein großes Problem darstellt.
Perry
1
@Perry gibt es jedoch einen inoffiziellen Python 3-Port, den ich zu einigem Erfolg verwenden muss; Wenn ich nicht sicher bin, ob es das Original widerspiegelt, aber die Dokumentation veraltet zu sein scheint
Mause
1
Der pdfminer.six Python 3 Port von PDFMiner funktioniert gut für mich
hamish
0

Das ist ein schwer zu lösendes Problem, da visuell ähnliche PDFs je nach Art ihrer Erstellung eine sehr unterschiedliche Struktur aufweisen können. Im schlimmsten Fall müsste sich die Bibliothek grundsätzlich wie eine OCR verhalten. Andererseits kann das PDF eine ausreichende Struktur und Metadaten zum einfachen Entfernen von Tabellen und Abbildungen enthalten, auf die die Bibliothek zugeschnitten werden kann.

Ich bin mir ziemlich sicher, dass es keine Open-Source-Tools gibt, die Ihr Problem für eine Vielzahl von PDFs lösen, aber ich erinnere mich, dass ich von kommerzieller Software gehört habe, die behauptet, genau das zu tun, wonach Sie fragen. Ich bin sicher, Sie werden ihnen beim Googeln begegnen.

Akaihola
quelle