IT/Python

[Python] 파이썬을 이용한 PDF 파일 이용하기

멋진 선배 2025. 1. 16. 17:33
반응형

파이썬을 이용한 PDF 파일 다루는 방법에 대해서 알아보겠습니다. PDF는 문서를 공유하고 보전하는 데 널리 사용되는 형식이지만, 때로는 내용을 추출하거나 수정해야 할 때가 있습니다. 다행히 파이썬에서는 PDF를 다루는 데 도움이 되는 여러 라이브러리들이 있습니다. 오늘은 그 중에서도 가장 많이 사용되는 PyPDF2와 pdfminer.six에 대해 자세히 알아보겠습니다.

PyPDF2로 시작하기

PyPDF2는 PDF 파일을 다루는 데 가장 널리 사용되는 라이브러리 중 하나 입니다. 설치는 매우 간단 합니다. 터미널에서 다음 명령어를 입력하세요.

실행결과

pip install PyPDF2

PDF 읽기

PyPDF2를 사용해 PDF 파일을 읽는 방법은 다음과 같습니다.

from PyPDF2 import PdfReader

reader = PdfReader("example.pdf")
pages = reader.pages

for page in pages:
    text = page.extract_text()
    print(text)

이 코드는 PDF 파일을 각 페이지에서 텍스트를 추출하여 출력 합니다.

PDF 병합하기

여러 PDF 파일을 하나로 병합하고 싶다면 다음과 같이 할 수 있습니다.

from PyPDF2 import PdfMerger

merger = PdfMerger()
pdf_files = ["file1.pdf", "file2.pdf", "file3.pdf"]

for pdf in pdf_files:
    merger.append(pdf)

merger.write("merged_file.pdf")
merger.close()

이 코드는 여러 PDF 파일을 하나의 파일로 병합 합니다.

PDF 분할하기

PDF 파일을 여러 개의 작은 파일로 분할하고 싶다면 다음과 같이 할 수 있습니다.

from PyPDF2 import PdfReader, PdfWriter

reader = PdfReader("example.pdf")
for i, page in enumerate(reader.pages):
    writer = PdfWriter()
    writer.add_page(page)
    with open(f"page_{i+1}.pdf", "wb") as f:
        writer.write(f)

pdfminer.six 사용하기

pdfminer.six는 PyPDF2보다 더 강력한 텍스트 추출 기능을 제공 합니다. 설치는 다음과 같이 할 수 있습니다.

pip install pdfminer.six

텍스트 추출하기

from pdfminer.high_level import extract_text

text = extract_text("example.pdf")
print(text)

이 코드는 PDF 파일에 있는 모든 텍스트를 추출하여 출력 합니다.

레이아웃 정보 유지하기

때로는 텍스트으 ㅣ위치 정보도 함께 추출하고 싶을 때가 있습니다. 이럴 때는 다음과 같이 할 수 있습니다.

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

with open("example.pdf", "rb") as f:
    rsrcmgr = PDFResourceManager()
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    
    for page in PDFPage.get_pages(f):
        interpreter.process_page(page)
        layout = device.get_result()
        for element in layout:
            if hasattr(element, "get_text"):
                print(f"Text: {element.get_text()}")
                print(f"Position: {element.bbox}")

이 코드는 텍스와 함께 해당 텍스트의 위치 정보도 함께 출력 합니다.

주의사항

PDF 파일을 다룰 때는 몇 가지 주의해야 할 점이 있습니다.

  1. 저작권 : PDF 파일의 내용을 추출하거나 수정할 때는 저작권 문제에 주의해야 합니다.
  2. 보안 :  암호로 보호된 PDF 파일은 처리하기 어려울 수 있습니다.
  3. 복잡한 레이아웃 : 표나 그래프가 많은 PDF 파일은 텍스트 추출이 정확하지 않을 수 있습니다.
  4. 큰 파일 : 매우 큰 PDF 파일을 처리할 때는 메모리 사용에 주의해야 합니다.

마무리

지금까지 파이썬을 사용해 PDF 파일을 다루는 방법에 대해서 알아보았습니다. PyPDF2와 pdfminer.siz는 각각 장단점이 있으니, 여러분의 필요에 맞는 라이브러리를 선택하세요. PDF 파일 처리 자동화로 업무 효율을 높이실 수 있을거에요!

 

 

반응형