ProgramingTip

Python에서 PDFMiner를 사용하여 PDF 파일에서 텍스트 추출?

bestdevel 2020. 10. 31. 09:56
반응형

Python에서 PDFMiner를 사용하여 PDF 파일에서 텍스트 추출?


Python 버전 2.7

Python과 함께 PDFMiner를 사용하여 PDF 파일에서 텍스트를 추출하는 방법에 대한 문서 또는 예제를 찾고 있습니다.

PDFMiner가 API를 업데이트하고 내가 모든 관련 예제에 오래된 코드가 포함되어있는 것입니다 (클래스와 메소드가 변경됨). PDF에서 더 쉽게 추출하는 작업을 수행하는 라이브러리는 이전 PDFMiner 구문을 사용하여 파일을 어떻게 해야할지 모르겠습니다.

그대로, 나는 그것을 알아낼 수 있는지 확인하기 위해 소스 코드를보고 있습니다.


다음은 현재 버전의 PDFMiner를 사용하여 PDF 파일에서 텍스트를 추출하는 작업 예입니다 (2016 년 9 월).

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):
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    codec = 'utf-8'
    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

PDFMiner의 구조가 최근 변경된 PDF 파일에서 텍스트를 추출하는 데 사용할 수 있습니다.

편집 : 2018 년 6 월 7 일 현재 작동합니다. Python 버전 3.x에서 확인 됨

편집 :이 솔루션은 2019 년 10 월 3 일에 Python 3.7에서 작동합니다. 저는 pdfminer.six2018 년 11 월에 출시 된 Python 라이브러리를 사용했습니다 .


DuckPuncher의 훌륭한 답변, Python3의 경우 pdfminer2를 설치하고 다음을 수행하십시오.

import io

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


def convert_pdf_to_txt(path):
    rsrcmgr = PDFResourceManager()
    retstr = io.StringIO()
    codec = 'utf-8'
    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

참고 URL : https://stackoverflow.com/questions/26494211/extracting-text-from-a-pdf-file-using-pdfminer-in-python

반응형