Ich muss die PDFBox-Bibliothek nicht verwenden, daher ist eine Lösung, die eine andere Bibliothek verwendet, in Ordnung
Camelot und Excalibur
Vielleicht möchten Sie die Python-Bibliothek Camelot ausprobieren , eine Open-Source-Bibliothek für Python. Wenn Sie nicht geneigt sind, Code zu schreiben, können Sie die um Camelot erstellte Weboberfläche Excalibur verwenden . Sie "laden" das Dokument auf einen localhost-Webserver hoch und "laden" das Ergebnis von diesem localhost-Server herunter.
Hier ist ein Beispiel für die Verwendung dieses Python-Codes:
import camelot
tables = camelot.read_pdf('foo.pdf', flavor="stream")
tables[0].to_csv('foo.csv')
Die Eingabe ist ein PDF mit dieser Tabelle:
Beispieltabelle aus dem PDF-TREX-Set
Camelot wird keine Hilfe angeboten, es arbeitet von selbst, indem es die relative Ausrichtung der Textteile betrachtet. Das Ergebnis wird in einer CSV-Datei zurückgegeben:
PDF-Tabelle mit Camelot aus der Probe extrahiert
"Regeln" können hinzugefügt werden, um Camelot dabei zu helfen, zu identifizieren, wo sich Filets in anspruchsvollen Tabellen befinden:
Regel in Excalibur hinzugefügt. Quelle
GitHub:
Die beiden Projekte sind aktiv.
Hier ist ein Vergleich mit anderer Software (mit Test basierend auf tatsächlichen Dokumenten), Tabula , pdfplumber , pdftables , pdf-table-extract .
Ich möchte in der Lage sein, die Datei zu analysieren und zu wissen, was jede analysierte Nummer bedeutet
Sie können dies nicht automatisch tun, da PDF nicht semantisch strukturiert ist.
Buch gegen Dokument
PDF- "Dokumente" sind vom semantischen Standpunkt aus unstrukturiert (es ist wie eine Notizblockdatei). Das PDF-Dokument enthält Anweisungen zum Drucken eines Textfragments, unabhängig von anderen Fragmenten desselben Abschnitts. Es gibt keine Trennung zwischen Inhalten (was gedruckt werden soll) und ob dies ein Fragment eines Titels, einer Tabelle oder einer Fußnote ist) und der visuellen Darstellung (Schriftart, Position usw.). Pdf ist eine Erweiterung von PostScript , die eine Hallo-Welt beschreibt! Seite auf diese Weise:
!PS
/Courier % font
20 selectfont % size
72 500 moveto % current location to print at
(Hello world!) show % add text fragment
showpage % print all on the page
(Wikipedia).
Man kann sich vorstellen, wie ein Tisch mit den gleichen Anweisungen aussieht.
Wir könnten sagen, HTML ist nicht klarer, aber es gibt einen großen Unterschied: HTML beschreibt den Inhalt semantisch (Titel, Absatz, Liste, Tabellenkopf, Tabellenzelle, ...) und ordnet das CSS zu, um eine visuelle Form zu erzeugen, daher ist der Inhalt voll zugänglich. In diesem Sinne ist HTML ein vereinfachter Nachkomme von SGML , der Einschränkungen für die Datenverarbeitung auferlegt :
Markup sollte die Struktur eines Dokuments und andere Attribute beschreiben, anstatt die auszuführende Verarbeitung anzugeben, da es weniger wahrscheinlich ist, dass es zu Konflikten mit zukünftigen Entwicklungen kommt.
genau das Gegenteil von PostScript / Pdf. SGML wird beim Veröffentlichen verwendet. Pdf bettet diese semantische Struktur nicht ein, sondern enthält nur das CSS-Äquivalent, das einfachen Zeichenfolgen zugeordnet ist, bei denen es sich möglicherweise nicht um vollständige Wörter oder Sätze handelt. Pdf wird für geschlossene Dokumente und jetzt für das sogenannte Workflow-Management verwendet .
Nachdem Sie die Unsicherheit und Schwierigkeit beim Extrahieren von Daten aus PDFs ausprobiert haben, ist es klar, dass PDF überhaupt keine Lösung ist, um einen Dokumentinhalt für die Zukunft zu erhalten (obwohl Adobe von seinen Paaren einen PDF-Standard erhalten hat ).
Was tatsächlich gut erhalten bleibt, ist die gedruckte Darstellung, da das PDF diesem Aspekt bei der Erstellung vollständig gewidmet war. Pdf sind fast so tot wie gedruckte Bücher.
Wenn es darum geht, den Inhalt wiederzuverwenden, muss man sich erneut auf die manuelle Eingabe von Daten verlassen, wie aus einem gedruckten Buch (möglicherweise wird versucht, eine OCR darauf durchzuführen). Dies trifft immer mehr zu, da viele PDF-Dateien sogar die Verwendung von Copy-Paste verhindern, mehrere Leerzeichen zwischen Wörtern einfügen oder ein ungeordnetes Zeichen-Kauderwelsch erzeugen, wenn eine "Optimierung" für die Web-Verwendung durchgeführt wird.
Wenn der Inhalt des Dokuments und nicht seine gedruckte Darstellung wertvoll ist, hat PDF nicht das richtige Format. Selbst Adobe ist nicht in der Lage, die Quelle eines Dokuments aus dem PDF-Rendering perfekt wiederherzustellen.
Offene Daten sollten daher niemals im PDF-Format veröffentlicht werden. Dies beschränkt ihre Verwendung auf das Lesen und Drucken (sofern zulässig) und erschwert die Wiederverwendung.