Wie kann ich Text aus einer PDF-Datei in Python extrahieren?Wie extrahiere ich Text aus einer PDF-Datei in Python?
Ich habe versucht, die folgenden:
import sys
import pyPdf
def convertPdf2String(path):
content = ""
pdf = pyPdf.PdfFileReader(file(path, "rb"))
for i in range(0, pdf.getNumPages()):
content += pdf.getPage(i).extractText() + " \n"
content = " ".join(content.replace(u"\xa0", u" ").strip().split())
return content
f = open('a.txt','w+')
f.write(convertPdf2String(sys.argv[1]).encode("ascii","xmlcharrefreplace"))
f.close()
Aber das Ergebnis wird wie folgt statt lesbaren Text:
728; ˇ ˆ ˜ ˚ ˇ ˇ! "" ˘ ˇ ˆ ˙ ˆ ˝ ˛ ˛ ˛ ˛ ˆ ˜ ˆ ˆ ˆ ˘ ˆ ˛ ˙ ˆ "ˆ ˘" ˆ ˆ ˆ ˜ # $ ˙ ˆ ˚ ˆ% & ˆ ˘ ˛ ˆ ˜ '˙ ˙% ˝ ˛ ˆ ˇ ˙ ˜ ˆ ˆ ˜' ˆ ˇ ˆ # $% & ('% & $)) + $ $% #, -. + & & ˝()) ˝) ˝ + ,, -./012) (˝) * ˝ +, - 3 ˙ ˆ/0245) 6 # 57 + 82,55) 6 # 57 +, + 2, + /! # !! & ˘ ˘ 1" % 07% 4 ˘ "6 ˛ ˆ ˝ ˆ ˆ ˘ &/& 4" 9 ˆ% 6 ˇ% 4% 4 2) ˘ ˘ ˛%: 6 (
Eine PDF-Datei Text enthalten muss nicht unbedingt in einer angemessenen Art und Weise exportierbar (als solche erscheinen), da es verschiedene Möglichkeiten gibt, wie ein PDF-Tool zur Erstellung mit Text umgehen kann. Es gibt keine Garantie, dass Sie als Ganzes extrahieren können, wie Sie es wollen. Ich gehe davon aus, dass Ihre PDF-Datei eine dieser PDF-Dateien ist, die gut aussieht, aber so, dass Sie den Inhalt auf vernünftige Weise extrahieren können. –
Ich denke, das ist ein ähnliches Problem wie ich hier hatte: [link] (http://stackoverflow.com/questions/14474405/indexing-pdf-from-badly-authored-latex-source). Wenn Sie die in einer solchen PDF-Datei enthaltenen Informationen benötigen, sollten Sie TIFF (d. H. Mit Ghostscript) ablegen und OCR (d. H. Tesseract) ausführen. – theta