2014-10-16 4 views
5

Da ich von Python 2 auf 3 verschieben möchte, habe ich versucht, mit Pdfmine.3kr in Python 3.4 zu arbeiten. Es scheint, als hätten sie alles bearbeitet. Ihre Änderungsprotokolle spiegeln nicht die Änderungen wider, die sie vorgenommen haben, aber ich hatte keinen Erfolg beim Analysieren von pdf mit pdfminer3k. Zum Beispiel:pdfminer3k hat keine Methode namens create_pages in PDFPage

Sie haben PDFDocument in pdfparser verschoben (sorry, wenn ich falsch buchstabiere). PDFPage hatte die Methode create_pages, die jetzt nicht mehr existiert. Alles, was ich in PDFPage sehen kann, sind interne Methoden. Hat jemand ein funktionierendes Beispiel von pdfminer3k? Es scheint, dass es keine neue Dokumentation gibt, die die Änderungen widerspiegelt.

+0

was genau suchen Sie? Wie erstellt man 'create_pages' in pdfminer3k? – avi

+0

Ich suche nach Beispielen, die es mir ermöglichen, mit pdfminer3k das gleiche zu tun, basierend auf ihrer neuen API, die nirgends dokumentiert ist. –

Antwort

22

Wenn Sie daran interessiert sind, Text aus einer PDF-Datei zu lesen, funktioniert der folgende Code mit pdfminer3k unter Verwendung von Python 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

Ich gehe davon aus, dass dies nicht mit gescannten Bildern funktioniert? da ich wahrscheinlich keine Textfelder oder Textzeilen habe. – Jglstewart

+0

@Jgltewart für diese Art von PDF-Dokumenten müssen Sie jede Seite in Bild konvertieren und eine OCR über jedes Bild verwenden, um Text zu erhalten. Ein Beispiel für OCR ist Tesseract dort ist Python-Code für das –

+0

Ich kann bestätigen, dass dies buchstäblich alle Ihre Unicode-Probleme löst. Haha :) – lol

2

Vielleicht könnten Sie pdfminer.six verwenden. Es ist Beschreibung:

Gabel von PDFMiner sechs für Python mit 2 + 3 Kompatibilität

Nachdem es Pip mit der Installation:

installieren pip pdfminer.six

Die Verwendung davon ist wie pdfminer, zumindest in meinem Code.

Hoffen, das könnte Ihren Tag retten :)

+0

Diese Option funktionierte besser für mich – Jeremy

Verwandte Themen