2013-03-23 12 views
17

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 (

+3

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. –

+0

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

Odpowiedz

20

jeśli używasz Linuksa lub Maca, możesz użyć ps2 ASCII poleceń w kodzie:

import os 

input="someFile.pdf" 
output="out.txt" 
os.system(("ps2ascii %s %s") %(input , output)) 
+3

Czy ktoś wie, jak rozwiązać w systemie Windows? – Milee

+9

@anony spróbuj 'pdftotext' zamiast' ps2ascii' – Moj

+1

Dzięki @Moj __pdftotext__ pracował dla mnie –

Powiązane problemy