Jak mogę wyodrębnić tekst z pliku PDF w języku Python?Jak wyodrębnić tekst z pliku PDF w języku Python?
Próbowałem następujące:
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()
ale wynik jest następujący, zamiast czytelnego tekstu:
728; ˇ ˆ ˜ ˚ ˇ ˇ! "" ˘ ˇ ˆ ˙ ˆ ˝ ˛ ˛ ˛ ˛ ˆ ˜ ˆ ˆ ˆ ˘ ˆ ˛ ˙ ˆ "ˆ ˘" ˆ ˆ ˆ ˜ # $ ˙ ˆ ˚ ˆ% & ˆ ˘ ˛ ˆ ˜ '˙ ˙% ˝ ˛ ˆ ˇ ˙ ˜ ˆ ˆ ˜' ˆ ˇ ˆ # $% & ('% & $)) $ $ +% #, -. + & & ˝()) ˝) ˝ +, -./012) (˝) * ˝ +, - 3 ˙ ˆ/0245) 6 # 57 + 82,55) 6 # 57 +, + 2, + /! # !! & ˘ ˘ 1" % 07% 4 ˘ "6 ˛ ˆ ˝ ˆ ˆ ˘ &/& 4" 9 ˆ% 6 ˇ% 4% 4 2) ˘ ˘ ˛%: 6 (
Plik PDF nie musi koniecznie zawierać tekst (występujący jako taki) w rozsądnym exportable sposób, ponieważ istnieją różne opcje, w jaki sposób narzędzie do tworzenia PDF można czynienia z tekstem. Nie ma gwarancji, że możesz wyodrębnić całość, jak chcesz. Zakładam, że twój plik PDF jest jednym z tych plików PDF, które wyglądają ładnie, ale w taki sposób, że można wyodrębnić zawartość w rozsądny sposób. –
Myślę, że to jest podobny problem, jaki miałem tutaj: [link] (http://stackoverflow.com/questions/14474405/indexing-pdf-from-badly-authored-latex-source). Jeśli potrzebujesz informacji zawartych w takim pliku PDF, najlepiej jest zrzucić TIFF (to znaczy ghostscript) i zrobić OCR (tesseract). – theta