2014-10-16 15 views
5

Ponieważ chcę przenieść z Pythona 2 do 3, starałem się pracować z pdfmine.3kr w Pythonie 3.4. Wygląda na to, że wszystko edytowali. Ich dzienniki zmian nie odzwierciedlają zmian, które zrobiły, ale nie udało mi się przetworzyć pliku pdf z pdfminer3k. Na przykład:pdfminer3k nie ma metody o nazwie create_pages w PDFPage

Przenieśli PDFDocument do pdfparser (przepraszam, jeśli pisałem niepoprawnie). Strona PDF używała metody create_pages, która już nie istnieje. Wszystko, co widzę wewnątrz PDFPage, to metody wewnętrzne. Czy ktoś ma działający przykład pdfminer3k? Wygląda na to, że nie ma nowej dokumentacji odzwierciedlającej którąkolwiek ze zmian.

+0

czego dokładnie szukasz? jak "create_pages" w pdfminer3k? – avi

+0

Szukam przykładów, które pozwalają mi zrobić to samo z pdfminer z pdfminer3k na podstawie ich nowego api, który nie jest nigdzie udokumentowany. –

Odpowiedz

22

Jeśli jesteś zainteresowany czytaniem tekstu z pliku PDF, poniższy kod działa z pdfminer3k przy użyciu Pythona 3.4.

from pdfminer.pdfparser import PDFParser, PDFDocument 
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter 
from pdfminer.converter import PDFPageAggregator 
from pdfminer.layout import LAParams, LTTextBox, LTTextLine 

fp = open('file.pdf', 'rb') 
parser = PDFParser(fp) 
doc = PDFDocument() 
parser.set_document(doc) 
doc.set_parser(parser) 
doc.initialize('') 
rsrcmgr = PDFResourceManager() 
laparams = LAParams() 
device = PDFPageAggregator(rsrcmgr, laparams=laparams) 
interpreter = PDFPageInterpreter(rsrcmgr, device) 
# Process each page contained in the document. 
for page in doc.get_pages(): 
    interpreter.process_page(page) 
    layout = device.get_result() 
    for lt_obj in layout: 
     if isinstance(lt_obj, LTTextBox) or isinstance(lt_obj, LTTextLine): 
      print(lt_obj.get_text()) 

fp.close() 
+0

Zakładam, że to nie działa z zeskanowanymi obrazami? ponieważ prawdopodobnie nie mam żadnych textboxów ani textboxów. – Jglstewart

+0

@Jgltewart dla tego rodzaju dokumentów PDF musisz przekonwertować każdą stronę na obraz i użyć OCR dla każdego obrazu, aby uzyskać tekst. Przykładem OCR jest Tesseract jest kod Pythona dla tego –

+0

Mogę potwierdzić, że to rozwiązuje dosłownie WSZYSTKIE problemy związane z Unicode. Haha :) – lol

2

Być może mógłbyś użyć pdfminer.six. To opis

widełki PDFMiner użyciu sześciu Pythona 2 + 3 kompatybilność

Po zamontowaniu go przy PIP

pip instalacji pdfminer.six

Używanie go jest podobne do pdfminer, przynajmniej w moim kod.

Mam nadzieję, że to może uratować Twój dzień :)

+0

Ta opcja działała lepiej dla mnie – Jeremy

Powiązane problemy