it-swarm.com.de

Wie extrahiere ich Text aus einem PDF?

Kann jemand eine Bibliothek/API empfehlen, um den Text und die Bilder aus einem PDF zu extrahieren? Wir müssen in der Lage sein, auf Text zuzugreifen, der in vorbekannten Bereichen des Dokuments enthalten ist, daher muss die API uns Positionsinformationen zu jedem Element auf der Seite geben.

Wir möchten, dass diese Daten im xml oder json Format ausgegeben werden. Wir schauen uns gerade PdfTextStream an, was ziemlich gut scheint, aber wir würden gerne die Erfahrungen und Vorschläge anderer Leute hören.

Gibt es Alternativen (kommerziell oder kostenlos) zum programmgesteuerten Extrahieren von Text aus einem PDF?

136
Budda007

Ich erhielt eine 400-seitige PDF-Datei mit einer Tabelle von Daten, die ich importieren musste - zum Glück keine Bilder. Ghostscript arbeitete für mich:

gswin64c -sDEVICE=txtwrite -o output.txt input.pdf

Die Ausgabedatei wurde in Seiten mit Kopfzeilen usw. aufgeteilt, aber es war dann einfach, eine App zu schreiben, mit der Leerzeilen usw. entfernt und alle 30.000 Datensätze eingesaugt werden konnten. -dSIMPLE und -dCOMPLEX machte in diesem Fall keinen Unterschied.

97
user2176753

Seit heute weiß ich es: Das Beste für die Textextraktion aus PDFs ist TET, der Text Extraktions-Toolkit . TET ist Teil der PDFlib.com-Produktfamilie.

PDFlib.com ist die Firma von Thomas Merz. Falls Sie seinen Namen nicht kennen: Thomas Merz ist der Autor des "PostScript and PDF Bible").

Die erste Inkarnation von TET ist eine Bibliothek . Das kann man wohl alles machen, was Budda006 wollte, inklusive Positionsinformationen zu jedem Element auf der Seite. Oh, und es kann auch Bilder extrahieren. Es rekombiniert Bilder, die in Stücke zersplittert sind.

pdflib.com bietet auch eine weitere Inkarnation dieser Technologie an, 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 sind kostenlos (wie in Bier) für private, nicht kommerzielle Zwecke zu verwenden.

Und es ist wirklich mächtig. Weitaus besser als Adobes eigene Textextraktion. Es extrahierte Text für mich, wo 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 hat das Tool zu meiner vollsten Zufriedenheit gehandhabt.

Dieses Ding wird von nun an meine Empfehlung für jeden anspruchsvollen und herausfordernden PDF Text Extraction Requirements) sein.

TET ist einfach großartig. Es erkennt Tabellen. In Tabellen werden Zellen identifiziert, die sich über mehrere Spalten erstrecken. Es identifiziert Tabellenzeilen und den Inhalt 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 der Begegnung mit Ligaturen werden die ursprünglichen Zeichen wiederhergestellt ...

Versuche es.

34
Kurt Pfeifle

Ein effizientes Kommandozeilen-Tool, Open Source, kostenlos und sowohl unter Linux als auch unter Windows verfügbar: einfach pdftotext genannt. Dieses Tool ist Teil der xpdf-Bibliothek.

http://en.wikipedia.org/wiki/Pdftotext

27
131

Für Python gibt es PDFMiner und pyPDF2 . Weitere Informationen hierzu finden Sie unter Python-Modul zum Konvertieren von PDF in Text .

21
Jonathan

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. Dies alles mithilfe der Drive-API . Es ist kostenlos * und robust. Schauen Sie sich an:

https://developers.google.com/drive/v2/reference/files/inserthttps://developers.google.com/drive/v2/reference/files/get

Da es sich um eine Rest-API handelt, ist es mit ALLEN Programmiersprachen kompatibel. Die Links, die ich oben gepostet habe, enthalten Arbeitsbeispiele für viele Sprachen, einschließlich Java, .NET, Python, PHP, Ruby und andere.

Ich hoffe, es hilft.

10
oabarca

PdfTextStream (von dem Sie sagten, dass Sie es sich angesehen haben) ist jetzt kostenlos für Singlethread-Anwendungen. Meiner Meinung nach ist seine Qualität viel besser als die anderer Bibliotheken (insbesondere für funky Embedded-Schriften usw.).

Alternativ sollten Sie sich Apache PDFBox , Open Source ansehen.

9
Renaud

Einer der Kommentare hier verwendete gs unter Windows. Ich hatte damit auch unter Linux/OSX einige Erfolge mit der folgenden Syntax:

gs \
 -q \
 -dNODISPLAY \
 -dSAFER \
 -dDELAYBIND \
 -dWRITESYSTEMDICT \
 -dSIMPLE \
 -f ps2ascii.ps \
 "${input}" \
 -dQUIET \
 -c quit

Ich habe dSIMPLE anstelle von dCOMPLEX verwendet, da letzteres 1 Zeichen pro Zeile ausgibt.

6
kvz

Docotic.Pdf-Bibliothek kann verwendet werden, um Text aus PDF zu extrahieren Dateien als einfacher Text oder als Sammlung von Textblöcken mit Koordinaten für jeden Block.

Docotic.Pdf kann auch zum Extrahieren von Bildern aus PDFs verwendet werden.

Haftungsausschluss: Ich arbeite für Bit Miracle.

6
Bobrovsky

Da es sich bei der Frage speziell um alternative Tools zum Abrufen von Daten aus PDF als XML handelt , sind Sie möglicherweise interessiert, sich das kommerzielle Tool anzusehen "ByteScout PDF Extractor SDK" das kann genau das: Extrahieren Sie Text aus PDF als XML zusammen mit den Positionsdaten (x, y ) und Schriftinformationen:

Text in der Quell-PDF:

Products | Units | Price 

XML ausgeben:

 <row>
 <column>
  <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="212" y="126" width="47" height="11">Products</text> 
  </column>
 <column>
  <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="428" y="126" width="27" height="11">Units</text> 
  </column>
 <column>
  <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="503" y="126" width="26" height="11">Price</text> 
  </column>
</row>

P .: Zusätzlich wird der Text in eine tabellarische Struktur zerlegt.

Offenlegung: Ich arbeite für ByteScout

4
Eugene

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 erstellt, das komprimierte und unkomprimierte PDF-Dateien 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

3
Sebastien Malot

Das Beste, woran ich derzeit denken kann (in der Liste der "einfachen" Tools), ist Ghostscript (aktuelle Version ist v.8.71) und das PostScript-Hilfsprogramm ps2ascii.ps. Ghostscript liefert es in seinem Unterverzeichnis lib aus. Versuchen Sie dies (unter Windows):

gswin32c.exe ^
   -q ^
   -sFONTPATH=c:/windows/fonts ^
   -dNODISPLAY ^
   -dSAFER ^
   -dDELAYBIND ^
   -dWRITESYSTEMDICT ^
   -dCOMPLEX ^
   -f ps2ascii.ps ^
   -dFirstPage=3 ^
   -dLastPage=7 ^
   input.pdf ^
   -dQUIET ^
   -c quit

Dieser Befehl verarbeitet die Seiten 3-7 von input.pdf. Lies die Kommentare im ps2ascii.ps Datei selbst, um zu sehen, was die "seltsamen" Zahlen und zusätzlichen Infos bedeuten ( sie zeigen Zeichenfolgen, Positionen, Breiten, Farben, Bilder, Rechtecke, Schriften und Seitenumbrüche an ... ). Um eine "einfache" Textausgabe zu erhalten, ersetzen Sie das -dCOMPLEX Teil von -dSIMPLE.

2
Kurt Pfeifle

Für die Bildextraktion ist pdfimages ein kostenloses Befehlszeilentool für Linux oder Windows (win32):

pdfimages: Extrahieren und Speichern von Bildern aus einem tragbaren Dokumentformat (PDF) File

2
Sun

Apache pdfbox hat diese Funktion - der Textteil ist beschrieben in:

http://pdfbox.Apache.org/apidocs/org/Apache/pdfbox/util/PDFTextStripper.html

eine Beispielimplementierung finden Sie unter https://github.com/WolfgangFahl/pdfindexer

der Testfall TestPdfIndexer.testExtracting zeigt, wie es funktioniert

2
Wolfgang Fahl

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.

1
Andrew Cash

Auf meinen Macintosh-Systemen leistet "Adobe Reader" einigermaßen gute Arbeit. Ich habe auf meinem Desktop einen Alias ​​erstellt, der auf "Adobe Reader.app" verweist. Alles, was ich tun kann, ist, eine PDF-Datei auf dem Alias ​​abzulegen, die es zum aktiven Dokument in Adobe Reader macht, und dann über das Menü "Datei". Ich wähle "Als Text speichern ...", gebe ihm einen Namen und einen Speicherort, klicke auf "Speichern" und bin fertig.

0
Dick Guertin