Extrahieren von Text aus einer PDF-Datei mit Python
Ich versuche, zu extrahieren die text enthalten in diese PDF-Datei mit Python
.
Ich bin mit dem PyPDF2 Modul, und haben das folgende Skript:
import PyPDF2
pdf_file = open('sample.pdf')
read_pdf = PyPDF2.PdfFileReader(pdf_file)
number_of_pages = read_pdf.getNumPages()
page = read_pdf.getPage(0)
page_content = page.extractText()
print page_content
Wenn ich den code ausführen möchte, bekomme ich folgende Ausgabe, die Verschieden ist von der, eingeschlossen in das PDF-Dokument:
!"#$%#$%&%$&'()*%+,-%./01'*23%4
5'%1$#26%3/%7/))/8%&)/26%8#3"%3"*%313/9#&)
%
Wie kann ich extrahieren Sie den text in das PDF-Dokument?
Dank.
InformationsquelleAutor der Frage Simplicity | 2016-01-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden textract.
Es unterstützt viele Arten von Dateien, einschließlich PDF-Dateien
InformationsquelleAutor der Antwort Jakobovski
Blick auf diese code:
Ausgabe:
Mit dem gleichen code zu Lesen, eine pdf-Datei aus 201308FCR.pdf
.Der output ist normal.
Seine Dokumentation erklärt, warum:
InformationsquelleAutor der Antwort Quinn
War auf der Suche nach einer einfachen Lösung für python 3.x und windows. Es scheint nicht zu sein, Unterstützung von textractdas ist bedauerlich, aber wenn Sie sind auf der Suche für eine einfache Lösung, für windows/python 3 Kasse der tika Paket, wirklich geradeaus zum Lesen von PDF-Dateien
InformationsquelleAutor der Antwort DJK
Können Sie verwenden möchten Zeit bewiesen xPDF und daraus abgeleitete Werkzeuge zum extrahieren von text statt als pyPDF2 zu haben scheint verschiedene Themen mit der text-Extraktion noch.
Die lange Antwort ist, dass es gibt viele Variationen, wie ein text codiert ist in PDF und kann es erfordern,, um entschlüsselt PDF-Zeichenkette selbst, dann müssen möglicherweise die Karte mit CMAP, dann kann analysieren muss, um Abstand zwischen den Wörtern und Buchstaben etc.
Fall, dass die PDF beschädigt ist (d.h. die Anzeige der richtige text, aber beim kopieren gibt es Müll) und Sie wirklich brauchen, um text zu extrahieren, dann möchten Sie vielleicht zu prüfen, konvertieren von PDF-in-Bild (mit ImageMagik) und verwenden Sie dann Tesseract um text aus Bildern mit OCR.
InformationsquelleAutor der Antwort Eugene M
Nach dem Versuch textract (der anscheinend über zu viele Abhängigkeiten) und pypdf2 (Sie konnte nicht extrahieren von text aus PDF-Dateien, die ich getestet habe) und tika (war zu langsam) landete ich mit
pdftotext
von xpdf (wie schon in einer anderen Antwort) und nur als binary von python direkt (Sie müssen möglicherweise passen Sie den Pfad zu pdftotext):Es ist pdftotext die macht im Grunde das gleiche, aber dies setzt Voraus, pdftotext in /usr/local/bin, während ich diese in AWS lambda und wollte es aus dem aktuellen Verzeichnis.
Btw: Für die Verwendung dieses auf lambda, die Sie benötigen, um die Binär-und die Abhängigkeit
libstdc++.so
in Ihrer lambda-Funktion. Ich persönlich benötigt, um zu kompilieren xpdf. Als Anleitung für diese sprengen würde, diese Antwort habe ich Sie auf meinem persönlichen blog.InformationsquelleAutor der Antwort hansaplast
Können Sie PDFtoText
https://github.com/jalan/pdftotext
PDF zu text hält-text-format, Einzug, egal, ob Sie über Tabellen verfügen.
InformationsquelleAutor der Antwort Máxima Alekz
Ich bin das hinzufügen von code, um dies zu erreichen:
Es ist in Ordnung für mich:
InformationsquelleAutor der Antwort Ritesh Shanker
Den code unten ist die Lösung der Frage in Python 3. Bevor der code ausgeführt wird, stellen Sie sicher, dass Sie installiert haben
PyPDF2
Bibliothek in Ihrer Umgebung. Wenn nicht installiert ist, öffnen Sie die Eingabeaufforderung und führen Sie den folgenden Befehl ein:Lösung Code:
InformationsquelleAutor der Antwort Steffi Keran Rani J
Hier ist der einfachste code zum extrahieren von text
code:
InformationsquelleAutor der Antwort Infinity
Multi - page pdf-Dateien können als text extrahiert werden, auf einzelnen Strecken, anstatt eine einzelne Seitennummer als argument verwenden Sie folgenden code
InformationsquelleAutor der Antwort Yogi