2 Stimmen

Eine Java-Bibliothek für die Extraktion von Text aus PDF-Dokumenten mit Beibehaltung von Leerzeichen und Zeilenumbrüchen.

Kennen Sie eine Java-Bibliothek, mit der ich den Text eines PDF-Dokuments als Zeichenfolge extrahieren kann und die auch alle leeren Zeilen und leeren Bereiche aus dem Originaldokument erhält (wie sie im PDF-Dokument erscheinen)?

Ich verwende derzeit die PDFTextStripper-Klasse aus der PDFBox-0.7.3-Bibliothek und verwende die getText()-Methode, die das Dokument als Zeichenfolge zurückgibt, jedoch auch alle leeren Zeilen, Tabs und leeren Räume zwischen dem Text entfernt. Die Zeilenumbrüche werden beibehalten, sodass ich die Struktur des Dokuments erkennen kann. Mir ist jedoch wichtig, auch die anderen leeren Stellen zu behalten. Dies ist das Standardverhalten von getText(), und es scheint nicht möglich zu sein, es so zu ändern, dass die leeren Stellen im Text erhalten bleiben (ich konnte keine Methode in der API für diesen Zweck finden).

Vielen Dank für Ihre Hilfe.

2voto

John Lemberger Punkte 2679

Sind Sie sicher, dass Leerzeilen, Tabs und Leerzeichen im Dokument vorhanden sind? Viele der von mir vorgefundenen PDFs verwenden Positionierung für Abstände und Einrückungen. Anstatt also Leerzeilen und Tabs einzufügen, wird das Textobjekt einfach weiter unten auf der Seite platziert und versetzt. In diesem Fall entfernt PDFBox nichts vom Text, die Leerzeichen waren nie da.

Wenn Sie sich den PDF-Quelltext noch nicht angesehen haben, könnte das hilfreich sein. Wenn es komprimiert ist, können Sie Multivalent Uncompress verwenden, um es lesbar zu machen. Die PDF-Spezifikation beschreibt die Text-Positionierungsoperatoren in Abschnitt 9.4.2.

1voto

GHad Punkte 9561

Ich hatte das gleiche Problem und habe es gelöst, indem ich die TextStripper-Klasse erweitert und vor jeder Zeile Koordinaten hinzugefügt habe (war allerdings nicht einfach). Für dein Problem könntest du Koordinaten zu jedem Wort hinzufügen, z.B. indem du keine Strings zurückgibst, sondern eine Liste eigener Objekte (Klasse mit dem Wort, x und y). Dadurch wärst du in der Lage, Tabulatoren und mehrfache Leerzeichen aus den Koordinaten später wiederherzustellen.

Grüße, GHad

1voto

cemerick Punkte 5906

Sie könnten unsere PDFTextStream Bibliothek ausprobieren. Wir bemühen uns sehr, die Fidelität des extrahierten Textes durch PDFTextStream im Vergleich zur angezeigten Präsentation zu maximieren, sodass der Abstand und dergleichen so weit wie möglich erhalten bleibt. Es gibt auch ein paar optionale Extraktionsmodi (eigentliche Implementierungen des OutputHandler Interface), die es Ihnen ermöglichen, zu kontrollieren, wie der extrahierte Text formatiert wird, was sicherlich den Abstand und dergleichen beeinflusst.

0voto

matt b Punkte 135206

Möchten Sie sich vielleicht iText ansehen? Die PDFReader-Klasse sieht nützlich aus.

0voto

mark stephens Punkte 429

Sie können auch JPedal zum Extrahieren von Text verwenden. Es kann gut sein, dass im Text keine Leerzeichen vorhanden sind - denken Sie daran, dass PDF ein Anzeigeformat ist...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X