2016-05-21 2 views
-2

Dies ist der Code, den ich irgendwo hier gefunden habe. Ich habe keine Ahnung, wie man es benutzt. Kann mir jemand dies erklären und mir helfen, ein Beispiel pdf zu konvertieren?Ich möchte mit PDFminer Text aus einer PDF in eine Textdatei extrahieren. Ich habe den Code gefunden, aber ich habe keine Ahnung, wie man ihn benutzt.

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter 
from pdfminer.converter import TextConverter 
from pdfminer.layout import LAParams 
from pdfminer.pdfpage import PDFPage 
from cStringIO import StringIO 

def convert_pdf_to_txt(path): 
    rsrcmgr = PDFResourceManager() 
    retstr = StringIO() 
    codec = 'utf-8' 
    laparams = LAParams() 
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams) 
    fp = file(path, 'rb') 
    interpreter = PDFPageInterpreter(rsrcmgr, device) 
    password = "" 
    maxpages = 0 
    caching = True 
    pagenos=set() 

    for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True): 
     interpreter.process_page(page) 

    text = retstr.getvalue() 

    fp.close() 
    device.close() 
    retstr.close() 
    return text 
+0

installieren Sie haben es versucht mit? – glls

+0

Ja, ich habe. Es tut nichts. – iMiner

+0

und ich nehme an, Sie haben den Code von hier extrahiert? https://www.binpress.com/tutorial/manipulating-pdfs-with-python/167 – glls

Antwort

2

Wenn Sie pdfminer verwenden und den Code von ihrer Seite verwenden und deren Dokumentation lesen https://www.binpress.com/tutorial/manipulating-pdfs-with-python/167:

from cStringIO import StringIO 
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter 
from pdfminer.converter import TextConverter 
from pdfminer.layout import LAParams 
from pdfminer.pdfpage import PDFPage 

def convert(fname, pages=None): 
    if not pages: 
     pagenums = set() 
    else: 
     pagenums = set(pages) 

    output = StringIO() 
    manager = PDFResourceManager() 
    converter = TextConverter(manager, output, laparams=LAParams()) 
    interpreter = PDFPageInterpreter(manager, converter) 

    infile = file(fname, 'rb') 
    for page in PDFPage.get_pages(infile, pagenums): 
     interpreter.process_page(page) 
    infile.close() 
    converter.close() 
    text = output.getvalue() 
    output.close 
    return text 

Ich glaube nicht, Sie Probleme mit haben sollte:

def konvertieren (fname, pages = None): das ist im Grunde das pDF konvertiert für Sie

Verwendung wie folgt:

some_variable = convert("filename.pdf") 
print(some_variable) 
#do something with your variable 

Ihr Beispiel pdf mit: enter image description here

+0

Das funktioniert ... irgendwie. Dies war die Ausgabe: This is pdf Das Original-PDF sagte "Dies ist PDF", aber Python zeigt "This is pdf" – iMiner

+0

ist die pdf-Öffentlichkeit, wie in, können Sie es teilen? – glls

+0

https://drive.google.com/file/d/0B5eGq9boXZxARWJLX0pDb1RaX2s/view?usp=sharing es auf meinem Google Drive. Ich denke, seit ich es geteilt habe, können Sie es herunterladen. – iMiner

0

schließlich fand ich einen Weg, um dieses. Die beste Bibliothek ist der PDfminer mit wenig Modifikation in pdf2txt.py zur effektiven Nutzung. pdf2text.py in pdfminer/tools

befindet PDfminer Einsatz auf Terminal

pip install PDfminer 

from cStringIO import StringIO 
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter 
from pdfminer.converter import TextConverter 
from pdfminer.layout import LAParams 
from pdfminer.pdfpage import PDFPage 
import re 

def convert(fname): 
    pages=None 
    if not pages: 
     pagenums = set() 
    else: 
     pagenums = set(pages) 

    output = StringIO() 
    manager = PDFResourceManager() 
    converter = TextConverter(manager, output, laparams=LAParams()) 
    interpreter = PDFPageInterpreter(manager, converter) 

    infile = file(fname, 'rb') 
    for page in PDFPage.get_pages(infile, pagenums): 
     interpreter.process_page(page) 
    infile.close() 
    converter.close() 
    text = output.getvalue() 
    output.close 
    print text 

    # write Content to .txt 
    text_file = open("Output_1.txt", "w") 
    text = re.sub("\s\s+", " ", text) 
    text_file.write("%s" % text) 
    text_file.close() 

convert("xyz.pdf") 
Verwandte Themen