2014-10-16 19 views
5

Dato che voglio passare da python 2 a 3, ho provato a lavorare con pdfmine.3kr in python 3.4. Sembra che abbiano modificato tutto. I loro registri delle modifiche non riflettono i cambiamenti che hanno fatto, ma non ho avuto successo nell'analisi del pdf con pdfminer3k. Ad esempio:pdfminer3k non ha alcun metodo chiamato create_pages in PDFPage

Hanno spostato PDFDocument in pdfparser (mi dispiace, se si scrive in modo errato). PDFPage utilizzato per avere metodo create_pages che è andato ora. Tutto quello che posso vedere all'interno di PDFPage sono metodi interni. Qualcuno ha un esempio funzionante di pdfminer3k? Sembra che non ci sia una nuova documentazione per riflettere le modifiche.

+0

cosa stai cercando esattamente? come 'create_pages' in pdfminer3k? – avi

+0

Sto cercando qualche esempio che mi permetta di fare la stessa cosa con pdfminer con pdfminer3k basato sulla loro nuova API che non è documentata da nessuna parte. –

risposta

22

Se sei interessato a leggere il testo da un file pdf, il seguente codice funziona con pdfminer3k usando 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

Suppongo che questo non funzioni con le immagini scansionate? perché probabilmente non ho nessuna casella di testo o testo. – Jglstewart

+0

@Jgltewart per quel tipo di documenti pdf è necessario convertire ogni pagina in un'immagine e utilizzare un OCR su ogni immagine per ottenere il testo. Un esempio di OCR è Tesseract, c'è il codice Python per quello –

+0

Posso confermare che questo risolve letteralmente TUTTI i tuoi errori Unicode. Haha :) – lol

2

Forse, è possibile utilizzare pdfminer.six. È descrizione:

forcella PDFMiner usando sei per Python 2 + 3 compatibilità

Dopo l'installazione utilizzando pip:

pip installare pdfminer.six

L'uso di esso è proprio come pdfminer, almeno nel mio codice.

Spero che questo possa salvare la tua giornata :)

+0

Questa opzione ha funzionato meglio per me – Jeremy

Problemi correlati