2013-06-08 3 views
4

나는 pdfminer를 사용하여 python을 사용하여 pdf 파일에서 데이터를 추출합니다. pdf에있는 모든 데이터를 wheather에 상관없이 이미지 나 텍스트 또는 그 무엇이든지간에 추출하고 싶습니다. 우리는 한 줄로 할 수 있습니까? 어떤 도움을 주셔서 감사합니다. 미리 감사드립니다.python으로 전체 pdf 데이터를 추출하는 방법 pdfminer

답변

7

우리는 한 줄로 (또는 필요한 경우 많은 노력없이) 할 수 있습니까?

아니요. Pdfminer는 강력하지만 다소 낮은 수준입니다.

불행히도, 설명서는 완전히 포괄적 인 것은 아닙니다. Denis Papathanasiou의 코드 덕분에 주위를 둘러 보았습니다. 코드는 his blog에서 논의, 당신은 여기에 소스를 찾을 수 있습니다 layout_scanner.py

내가 좀 더 자세하게 제공 this answer,도 참조하십시오. 파이썬 3

+0

감사를 설치 PIP . 나는 pdf에서 html을 추출하기 위해 일하고 있는데, 그래서 나는 그것을 epub로 변환 할 수있다. HTML을 얻을 수 있지만 pdf에있는 이미지가 누락되어 있습니다. 필요한 경우 파일을 추출하고 폴더에 저장하는 방법을 제안 할 수 있습니다. –

+0

내가 링크 된 샘플 코드를 살펴보십시오. 그. – alexis

+0

또한 PDFMiner와 함께 제공되는 명령 행 도구 ['pdf2txt.py'] (http://www.unixuser.org/~euske/python/pdfminer/#pdf2txt) 문서를 확인하십시오. 임베디드 jpg 이미지 (단 jpg, Dennis의 코드는 여러 유형을 처리합니다). – alexis

2

:

이 pdfminer.six python3에 대한

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

def convert_pdf_to_txt(path, codec='utf-8'): 
    rsrcmgr = PDFResourceManager() 
    retstr = StringIO() 
    laparams = LAParams() 
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams) 
    fp = open(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

설치 PIP 또 다른 하나있다 : 당신의 빠른 응답을 pdfminer3k에게

from pdfminer.pdfinterp import PDFResourceManager, process_pdf 
from pdfminer.converter import TextConverter 
from pdfminer.layout import LAParams 
from io import StringIO 
import time 
from functools import wraps 

def fn_timer(function)://this is for calculating the run time(function) 
    @wraps(function) 
    def function_timer(*args, **kwargs): 
     t0 = time.time() 
     result = function(*args, **kwargs) 
     t1 = time.time() 
     print ("Total time running %s: %s seconds" % 
       ('test', str(t1-t0)) 
       ) 
     return result 
    return function_timer 

@fn_timer 
def convert_pdf(path, pages): 
    rsrcmgr = PDFResourceManager() 
    retstr = StringIO() 
    laparams = LAParams() 
    device = TextConverter(rsrcmgr, retstr, laparams=laparams) 

    fp = open(path, 'rb') 
    process_pdf(rsrcmgr, device, fp,pages) 
    fp.close() 
    device.close() 

    str = retstr.getvalue() 
    retstr.close() 
    return str 

file = r'M:\a.pdf' 

print(convert_pdf(file,[1,]))