Leerzeichen Weg von PDF-Extraktion und-seltsames Wort-interpretation
Mit dem snippet unten, ich habe versucht, zu extrahieren die text-Daten aus diese PDF-Datei.
import pyPdf
def get_text(path):
# Load PDF into pyPDF
pdf = pyPdf.PdfFileReader(file(path, "rb"))
# Iterate pages
content = ""
for i in range(0, pdf.getNumPages()):
content += pdf.getPage(i).extractText() + "\n" # Extract text from page and add to content
# Collapse whitespace
content = " ".join(content.replace(u"\xa0", " ").strip().split())
return content
Den die Ausgabe habe ich erhalten, jedoch ohne Leerzeichen zwischen den meisten die Worte. Dies macht es schwierig zum durchführen der Verarbeitung natürlicher Sprache auf den text (auf mein Ziel, hier).
Auch das 'fi' in das Wort 'finger' ist konsequent interpretiert, als etwas anderes. Dies ist sehr problematisch, da diese ein Papier über spontane Fingerbewegungen...
Weiß jemand, warum dies geschehen könnte? Ich weiß gar nicht, wo man anfangen soll!
- 'fi' ist ein typografische Ligaturen, das beantwortet einen Teil deiner Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre PDF-Datei nicht druckbaren Zeichen, es ist einfach, Positionen der Worte, wo Sie gehen müssen. Sie haben, um zusätzliche Arbeit zu tun, um herauszufinden, die Bereiche, die vielleicht durch die Annahme multi-Charakter läuft, sind Wörter und Leerzeichen zwischen Ihnen.
Wenn können Sie den text in der PDF-reader, und Leerzeichen korrekt angezeigt wird, dann mindestens Sie wissen, es gibt genug Informationen, die zu rekonstruieren Sie den text.
"fi" ist eine typografische Binde, gezeigt, wie ein einzelnes Zeichen. Sie können finden, dies ist auch passiert mit "fl", "ffi" und "ffl". Sie können die Verwendung von string Ersetzung zu ersetzen, "fi" für die fi-Ligatur.
Ohne die PyPdf2 verwenden Pdfminer Paket Bibliothek die gleiche Funktionalität, wie unten. Ich habe den code aus diese und wie ich wollte, bearbeitete ich es, dieser code gibt mir eine text-Datei, die Leerzeichen zwischen Wörtern. Ich arbeite mit anaconda und python 3.6. für die Installation PdfMiner für python 3.6 Sie können mithilfe dieser link.
Als alternative zu PyPDF2, schlage ich vor
pdftotext
:sudo apt-get update
und dannsudo apt-get install build-essential libpoppler-cpp-dev pkg-config python-dev
PDFBox ist ein ziemlich gutes tool zum extrahieren von text aus PDF-Dateien mit Java. Text-Extraktion ist seine Stärke; wenn Sie wollen, um zu ändern/kommentieren oder die Ansicht von PDF-Dateien, ein weiteres tool könnte Sie besser dienen. Es hat den code zur Identifizierung von Leerzeichen in Dateien.
Es hat auch code für die Handhabung von Ligaturen, aber Sie brauchen, um eine bestimmte Internationalisierung der Bibliothek in den Klassenpfad für die zu arbeiten-Icu4j.
Könnten Sie nennen die PDFBox text extractor von Python als Kommandozeilen-Programm, ohne das schreiben von Java-code.
PyPDF nicht Lesen newline charecter.
So verwenden PyPDF4
Installieren Sie es mit
und verwenden Sie diesen code als ein Beispiel
Ich hatte dieses Problem gelöst durch die Verwendung von R: