Kann jemand eine Bibliothek / API zum Extrahieren von Text und Bildern aus einem PDF empfehlen? Wir müssen in der Lage sein, auf Text zuzugreifen, der in bekannten Bereichen des Dokuments enthalten ist, daher muss die API uns Positionsinformationen zu jedem Element auf der Seite geben.
Wir möchten, dass diese Daten in xml
oder im json
Format ausgegeben werden. Wir schauen uns gerade PdfTextStream an, was ziemlich gut zu sein scheint, aber gerne die Erfahrungen und Vorschläge anderer Leute hören würde.
Gibt es Alternativen (kommerzielle oder kostenlose), um Text programmgesteuert aus einem PDF zu extrahieren?
pdf
text
ghostscript
extraction
text-extraction
Budda007
quelle
quelle
/^\s*\[?\((.*?)\)\]?\s*T[Jj]/mg
. Es wird nur nach dem Tj / TJ-Operator gesucht, der den gesamten normalen Text in einer PDF-Datei kennzeichnet.Antworten:
Ich erhielt eine 400-seitige PDF-Datei mit einer Datentabelle, die ich importieren musste - zum Glück keine Bilder. Ghostscript hat bei mir funktioniert:
gswin64c -sDEVICE=txtwrite -o output.txt input.pdf
Die Ausgabedatei wurde in Seiten mit Überschriften usw. aufgeteilt, aber es war dann einfach, eine App zu schreiben, um Leerzeilen usw. zu entfernen und alle 30.000 Datensätze einzusaugen.
-dSIMPLE
und-dCOMPLEX
machte in diesem Fall keinen Unterschied.quelle
gs
anstelle vongswin64c
. Funktioniert perfekt. Kein patentierter bezahlter Mist. Es funktioniert einfach.-sDEVICE=txtwrite
das Ich verstehe nicht viel, nachdem ich gelesen habe, wie man Ghostscript | verwendet Auswählen eines Ausgabegerätsgswin64c -sDEVICE=txtwrite -o- input.pdf
. Quelle (von mir leicht verändert): gist.github.com/drmohundro/560d72ed06baaf16f191ee8be34526acSeit heute weiß ich es: Das Beste für die Textextraktion aus PDFs ist TET, das Toolkit zur Textextraktion . TET ist Teil der PDFlib.com-Produktfamilie.
PDFlib.com ist das Unternehmen von Thomas Merz. Falls Sie seinen Namen nicht erkennen: Thomas Merz ist der Autor der "PostScript and PDF Bible".
Die erste Inkarnation von TET ist eine Bibliothek . Dieser kann wahrscheinlich alles tun, was Budda006 wollte, einschließlich Positionsinformationen zu jedem Element auf der Seite. Oh, und es kann auch Bilder extrahieren. Es rekombiniert Bilder, die in Stücke fragmentiert sind.
pdflib.com bietet auch eine weitere Inkarnation dieser Technologie, das TET-Plugin für Acrobat . Und die dritte Inkarnation ist der PDFlib TET iFilter . Dies ist ein eigenständiges Tool für Benutzerdesktops. Beide können (wie bei Bier) kostenlos für private, nicht kommerzielle Zwecke verwendet werden.
Und es ist wirklich mächtig. Viel besser als die eigene Textextraktion von Adobe. Es hat Text für mich extrahiert, bei dem andere Tools (einschließlich Adobe) nur Müll ausspucken.
Ich habe gerade das Desktop-Standalone-Tool getestet, und was sie auf ihrer Webseite sagen, ist wahr. Es hat eine sehr gute Kommandozeile. Einige meiner "problematischen" PDF-Testdateien wurden vom Tool zu meiner vollsten Zufriedenheit verarbeitet.
Diese Sache wird von nun an meine Empfehlung für alle anspruchsvollen und herausfordernden Anforderungen an die PDF-Textextraktion sein.
TET ist einfach großartig. Es erkennt Tabellen. In Tabellen werden Zellen identifiziert, die sich über mehrere Spalten erstrecken. Es identifiziert Tabellenzeilen und Inhalte jeder Tabellenzelle separat. Es geht sehr gut mit Silbentrennungen um: Es entfernt Bindestriche und stellt vollständige Wörter wieder her. Es unterstützt Nicht-ASCII-Sprachen (einschließlich CJK, Arabisch und Hebräisch). Bei Ligaturen werden die ursprünglichen Zeichen wiederhergestellt ...
Versuche es.
quelle
Ein effizientes, kostenloses Open Source-Befehlszeilentool, das sowohl unter Linux als auch unter Windows verfügbar ist: einfach pdftotext genannt. Dieses Tool ist Teil der xpdf-Bibliothek.
http://en.wikipedia.org/wiki/Pdftotext
quelle
-layout
Schalter, um Tabellen zu erhalten, funktioniert ziemlich gut.Für Python gibt es PDFMiner und pyPDF2 . Weitere Informationen hierzu finden Sie im Python-Modul zum Konvertieren von PDF in Text .
quelle
Hier ist mein Vorschlag. Wenn Sie Text aus PDF extrahieren möchten, können Sie die PDF-Datei in Google Text & Tabellen importieren und dann in ein benutzerfreundlicheres Format wie .html, .odf, .rtf, .txt usw. exportieren. All dies mithilfe der Drive-API . Es ist kostenlos * und robust. Schauen Sie sich an:
https://developers.google.com/drive/v2/reference/files/insert https://developers.google.com/drive/v2/reference/files/get
Da es sich um eine Rest-API handelt, ist sie mit ALLEN Programmiersprachen kompatibel. Die Links, die ich oben gepostet habe, enthalten Arbeitsbeispiele für viele Sprachen, darunter Java, .NET, Python, PHP, Ruby und andere.
Ich hoffe, es hilft.
quelle
PdfTextStream (von dem Sie sagten, dass Sie es sich angesehen haben) ist jetzt kostenlos für Single-Threaded-Anwendungen. Meiner Meinung nach ist seine Qualität viel besser als bei anderen Bibliotheken (insbesondere bei funky eingebetteten Schriftarten usw.).
Alternativ sollten Sie sich Apache PDFBox , Open Source, ansehen .
quelle
Die Docotic.Pdf-Bibliothek kann verwendet werden, um Text aus PDF- Dateien als einfachen Text oder als Sammlung von Textblöcken mit Koordinaten für jeden Block zu extrahieren .
Docotic.Pdf kann auch zum Extrahieren von Bildern aus PDFs verwendet werden.
Haftungsausschluss: Ich arbeite für Bit Miracle.
quelle
In einem der Kommentare hier wurde gs unter Windows verwendet. Damit hatte ich auch unter Linux / OSX einige Erfolge mit der folgenden Syntax:
Ich habe
dSIMPLE
stattdessen verwendet,dCOMPLEX
weil letzteres 1 Zeichen pro Zeile ausgibt.quelle
Da es sich bei der Frage speziell um alternative Tools zum Abrufen von Daten aus PDF als XML handelt , sollten Sie sich das kommerzielle Tool "ByteScout PDF Extractor SDK" ansehen, das genau dies kann: Text aus PDF als XML zusammen mit extrahieren die Positionierungsdaten (x, y) und Schriftartinformationen:
Text im Quell-PDF:
XML ausgeben:
PS: Zusätzlich wird der Text in eine tabellenbasierte Struktur unterteilt.
Offenlegung: Ich arbeite für ByteScout
quelle
Das Beste, woran ich derzeit denken kann (innerhalb der Liste der "einfachen" Tools), ist Ghostscript (aktuelle Version ist v.8.71) und das PostScript-Dienstprogramm
ps2ascii.ps
. Ghostscript versendet es in seinemlib
Unterverzeichnis. Versuchen Sie dies (unter Windows):Dieser Befehl verarbeitet die Seiten 3-7 von
input.pdf
. Lesen Sie die Kommentare in derps2ascii.ps
Datei selbst, um zu sehen, was die "seltsamen" Zahlen und zusätzlichen Informationen bedeuten ( sie geben Zeichenfolgen, Positionen, Breiten, Farben, Bilder, Rechtecke, Schriftarten und Seitenumbrüche an ... ). Ersetzen Sie das-dCOMPLEX
Teil durch, um eine "einfache" Textausgabe zu erhalten-dSIMPLE
.quelle
ps2ascii book.pdf notes.txt
. Wenn Ihr Dokument überwiegend ASCII ist, haben Sie Glück.Ich weiß, dass dieses Thema ziemlich alt ist, aber dieses Bedürfnis lebt noch. Ich habe viele Dokumente, Foren und Skripte gelesen und ein neues erweitertes Dokument erstellt, das komprimiertes und unkomprimiertes PDF unterstützt:
https://gist.github.com/smalot/6183152
In einigen Fällen ist die Befehlszeile aus Sicherheitsgründen verboten. Eine native PHP-Klasse kann also viele Anforderungen erfüllen.
Hoffe es hilft jedem
quelle
Für die Bildextraktion ist pdfimages ein kostenloses Befehlszeilentool für Linux oder Windows (win32):
pdfimages: Extrahieren und Speichern von Bildern aus einer PDF-Datei (Portable Document Format)
quelle
Apache pdfbox hat diese Funktion - der Textteil wird beschrieben in:
http://pdfbox.apache.org/apidocs/org/apache/pdfbox/util/PDFTextStripper.html
Eine beispielhafte Implementierung finden Sie unter https://github.com/WolfgangFahl/pdfindexer
Der Testfall TestPdfIndexer.testExtracting zeigt, wie es funktioniert
quelle
QuickPDF scheint eine vernünftige Bibliothek zu sein, die zu einem vernünftigen Preis das tun sollte, was Sie wollen.
http://www.quickpdflibrary.com/ - Sie haben eine 30-Tage-Testversion.
quelle
Auf meinen Macintosh-Systemen finde ich, dass "Adobe Reader" einigermaßen gute Arbeit leistet. Ich habe auf meinem Desktop einen Alias erstellt, der auf "Adobe Reader.app" verweist, und alles, was ich tue, ist, eine PDF-Datei auf dem Alias abzulegen, wodurch es zum aktiven Dokument in Adobe Reader wird, und dann über das Menü "Datei". Ich wähle "Als Text speichern ...", gebe ihm einen Namen und wo er gespeichert werden soll, klicke auf "Speichern" und ich bin fertig.
quelle