Come posso estrarre il testo da un file PDF in Python?Come estrarre il testo da un file PDF in Python?
ho provato la seguente:
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()
Ma il risultato è il seguente, piuttosto che il testo leggibile:
728; ˇ ˆ ˜ ˚ ˇ ˇ! "" ˘ ˇ ˆ ˙ ˆ ˝ ˛ ˛ ˛ ˛ ˆ ˜ ˆ ˆ ˆ ˘ ˆ ˛ ˙ ˆ "ˆ ˘" ˆ ˆ ˆ ˜ # $ ˙ ˆ ˚ ˆ% & ˆ ˘ ˛ ˆ ˜ '˙ ˙% ˝ ˛ ˆ ˇ ˙ ˜ ˆ ˆ ˜' ˆ ˇ ˆ # $% & ('% $ &)) $ $ +% #, -. + & & ˝()) ˝) ˝ + ,, -./012) (˝) * ˝ +, - 3 ˙ ˆ/0245) 6 # 57 + 82,55) 6 # 57 +, + 2, + /! # !! & ˘ ˘ 1" % 07% 4 ˘! "6 ˛ ˆ ˝ ˆ ˆ ˘ &/& 4" 9 ˆ% 6 ˇ% 4% 4 2) ˘ ˘ ˛%: 6 (
un file PDF non devono necessariamente contenere testo (che appare come tale) in modo esportabile ragionevole, dato che ci sono varie opzioni come uno strumento di creazione di PDF può trattare con il testo. Non vi è alcuna garanzia che sia possibile estrarre nel suo complesso come desiderato. Presumo che il tuo PDF sia uno di quei file PDF che sembrano belli ma nel modo in cui puoi estrarre il contenuto in modo ragionevole. –
Penso che questo sia un problema simile a quello che avevo qui: [collegamento] (http://stackoverflow.com/questions/14474405/indexing-pdf-from-badly-authored-latex-source). Se hai bisogno delle informazioni contenute in tale file PDF, la soluzione migliore sarebbe quella di scaricare TIFF (cioè con ghostscript) e fare OCR (i.e tesseract). – theta