Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 PDF를 텍스트로 변환하는 방법: PDFMiner와 pypdf 활용 가이드

파이썬에서는 PDFMiner 패키지를 사용해 PDF 파일을 텍스트로 변환할 수 있습니다. PDFMiner는 레이아웃 분석 기능이 뛰어나고 다양한 출력 형식(텍스트, HTML, XML 등)을 지원하기 때문에 복잡한 구조의 PDF 문서를 처리할 때 특히 유용합니다.

PDFMiner를 이용한 텍스트 추출 예제

아래 코드는 PDFMiner(현재 유지보수되는 버전은 pdfminer.six)를 사용하여 PDF 파일을 페이지 단위로 읽고 전체 텍스트를 추출하는 방법을 보여줍니다.

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

def pdfparser(data):
    fp = open(data, 'rb')
    resource_manager = PDFResourceManager()
    retstr = StringIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = TextConverter(resource_manager, retstr, codec=codec, laparams=laparams)
    interpreter = PDFPageInterpreter(resource_manager, device)

    # 문서에 포함된 각 페이지를 순차적으로 처리합니다.
    for page in PDFPage.get_pages(fp):
        interpreter.process_page(page)
        text = retstr.getvalue()
    print(text)

pdfparser('filename.pdf')

이 코드는 PDF 파일을 열어 PDFPageInterpreter 클래스의 process_page() 함수를 통해 각 페이지를 하나씩 처리하며, 그 결과를 문자열 버퍼(StringIO)에 누적한 후 최종 텍스트를 출력합니다.

더 간단한 대안: pypdf

PDFMiner 외에도 훨씬 직관적인 API를 제공하는 대안이 있습니다. 바로 pypdf(구 PyPDF2, 그 이전에는 pyPdf)입니다. 정상적으로 생성된(well-formed) PDF라면 아래처럼 몇 줄의 코드만으로 텍스트를 손쉽게 추출할 수 있습니다.

import pypdf

pdf = pypdf.PdfReader(open('filename.pdf', 'rb'))
for page in pdf.pages:
    print(page.extract_text())

이 방법은 공백이 포함된 일반 텍스트만 필요한 경우에 적합하며, 설치도 pip install pypdf 한 줄이면 끝나므로 간단한 작업에 매우 편리합니다.

어떤 모듈을 선택해야 할까?

  • PDFMiner(pdfminer.six): 레이아웃 분석, 글꼴·좌표 정보 추출 등 세밀한 제어가 필요할 때 적합합니다.
  • pypdf: 빠르고 간단하게 텍스트만 추출하고 싶을 때 적합합니다.

두 라이브러리 모두 PyPI에서 설치할 수 있으며, 문서의 복잡도와 필요한 기능 수준에 따라 선택하면 됩니다. 스캔 이미지 형태의 PDF는 텍스트 레이어가 없기 때문에 이 경우 OCR 도구(예: Tesseract)를 함께 사용해야 한다는 점도 참고하세요.