pyPdf nicht in der Lage zum extrahieren von text aus einigen Seiten in meinem PDF
Ich versuche, pyPdf zu extrahieren und drucken von Seiten aus einer mehrseitigen PDF-Datei. Problem ist, der text nicht extrahiert von einigen Seiten. Ich habe eine Beispiel-Datei hier:
http://www.4shared.com/document/kmJF67E4/forms.html
Wenn Sie führen Sie den folgenden, die ersten 81 Seiten zurück keinen text, während die letzten 11 Extrakt richtig. Kann mir jemand helfen?
from pyPdf import PdfFileReader
input = PdfFileReader(file("forms.pdf", "rb"))
for page in input1.pages:
print page.extractText()
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beachten Sie, dass
extractText()
hat immer noch Probleme extrahieren Sie den text richtig. Aus der Dokumentation fürextractText()
:Da ist es der text, den Sie möchten, können Sie den Linux-Befehl
pdftotext
.Darauf berufen, dass mit Python, können Sie dies tun:
Text ist ein Auszug aus
forms.pdf
und gespeichert werden, umoutput
.Dies funktioniert im Falle Ihrer PDF-Datei und extrahiert den text, den Sie wollen.
Könnte man auch versuchen, die pdfminer Bibliothek (auch in python), und sehen, ob es besser für das extrahieren von text. Für die Spaltung jedoch, Sie haben zu stick mit pyPdf als pdfminer nicht unterstützen.
Ist dies nicht wirklich eine Antwort, aber das problem mit pyPdf ist dies: es braucht nicht noch Unterstützung CMaps. PDF-Zeichensätze verwenden, CMaps, um Charakter-IDs (bytes in der PDF-Datei), um Unicode-Zeichencodes. Wenn Sie eine PDF-Datei, die ASCII-fremde Zeichen enthält, gibt es wahrscheinlich eine CMap verwendet wird, und manchmal sogar, wenn es keine nicht-ASCII-Zeichen. Wenn pyPdf trifft auf strings, die nicht in der standard-Unicode-Codierung, es sieht nur ein paar byte code; es kann nicht konvertieren Sie diese bytes in Unicode, so dass es nur gibt Sie leere Zeichenfolgen. Ich hatte eigentlich das gleiche problem und ich bin auf den source code im moment. Es ist zeitaufwendig, aber ich hoffe die schicken einen patch an den maintainer einige Zeit, um die Mitte des Jahres 2011.
Ich finde es manchmal sinnvoll, Sie zu konvertieren, um
ps
(versuchen mitpdf2ps
undpdftops
für mögliche Unterschiede), dann zurück zupdf
(ps2pdf
). Dann versuchen Sie Ihr original-Skript erneut aus.Bin ich angefangen zu denken, sollte ich adoptieren, ein chaotisch-zwei-Teil-Lösung. es gibt zwei Abschnitte, um die PDF-Datei, S. 1-82, die text-Seite Etiketten (pdftotext extrahiert werden können), und pp-83-Ende, die haben keine Seite, die labels aber pyPDF extrahieren können und es explizit weiß-Seiten.
Ich glaube, ich muss mich um die beiden zu verbinden. Klobig, aber ich sehe keinen Weg um Sie herum. Leider bin ich zu diesem Zweck auf einem Windows-Rechner.
Ich hatte ähnliches problem mit einigen PDF-Dateien und für windows, das funktioniert für mich ausgezeichnet:
1.- Download Xpdf-tools für windows
2.- kopieren pdftotext.exe von xpdf-tools-win-4.00\bin32 zu C:\Windows\System32 und auch C:\Windows\SysWOW64
3.- verwenden Teilprozess ausführen-Befehl von der Konsole: