1. PDFPlumber 소개
PDFPlumber로 표 및 복잡한 구조 추출
PDFPlumber는 PDF에서 데이터를 추출하는 데 특히 표나 열과 같은 복잡한 구조를 다룰 때 적합해. PyPDF2로는 얻기 어려운 데이터를 인식하고 추출할 수 있어.
PDFPlumber 설치
pip install pdfplumber
PDFPlumber로 표 추출하기
import pdfplumber
with pdfplumber.open("sample_with_table.pdf") as pdf:
for page in pdf.pages:
table = page.extract_table()
if table:
for row in table:
print(row)
이 코드는 PDF의 각 페이지에서 표를 추출해. 재무 레포트와 분석 보고서 작업 시 데이터를 처리하는 데 유용해.
2. ReportLab 소개
ReportLab으로 PDF 보고서 생성하기
보고서나 자동화된 문서를 위해 PDF를 처음부터 만든다면, ReportLab 라이브러리는 텍스트, 표, 이미지, 그래프 등으로 구성된 PDF를 만들 수 있는 유연한 기능을 제공해.
ReportLab 설치
pip install reportlab
간단한 PDF 문서 생성
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
# PDF 생성
pdf_file = canvas.Canvas("generated_report.pdf", pagesize=A4)
width, height = A4
# 제목 추가
pdf_file.setFont("Helvetica-Bold", 16)
pdf_file.drawString(100, height - 100, "판매 보고서")
# 텍스트 추가
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 130, "이 보고서는 지난 달 판매 데이터를 포함합니다.")
# PDF 저장
pdf_file.showPage()
pdf_file.save()
이 코드는 제목과 텍스트가 포함된 PDF를 생성해. 로고, 이미지, 다른 디자인 요소 등을 추가할 수도 있어.
ReportLab로 PDF에 표 생성
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle
# 표 데이터
data = [
["월", "판매"],
["1월", "200"],
["2월", "300"],
["3월", "250"]
]
# 표가 포함된 PDF 생성
pdf_file = SimpleDocTemplate("sales_report.pdf", pagesize=A4)
table = Table(data)
table.setStyle(TableStyle([
('BACKGROUND', (0, 0), (-1, 0), colors.grey),
('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
('BOTTOMPADDING', (0, 0), (-1, 0), 12),
('BACKGROUND', (0, 1), (-1, -1), colors.beige),
]))
# PDF 빌드
elements = [table]
pdf_file.build(elements)
이 코드는 표를 생성하고 PDF로 저장해. ReportLab을 사용하면 스타일, 색상, 글꼴 크기 등을 변경하고 텍스트를 포맷할 수도 있어.
3. PyPDF2로 돌아가기
왜 PyPDF2인가?
너도 알다시피 PDF 문서는 다양한 문서 작업, 보고서, 백서의 표준이야. 하지만 파이썬에서 PDF와 작업하려면 머리가 아플 수 있어. PyPDF2는 너를 이 문제로부터 구출해주는 도구야: 이 텍스트 추출, 페이지 병합 및 분할 등 여러 작업을 가능하게 해줌. 이걸 다루다보면 마치 아침 한 잔의 커피처럼 편안해질 거야. 이제 기본 기능부터 슬쩍 살펴보자!
PyPDF2가 제공하는 최소한의 기능에 대해 간단히 살펴보자. 천천히 시작해야 혼란을 피할 수 있겠지?
임포트와 기본 예제
첫 번째 해야 할 일은 라이브러리를 임포트하는 거야. 익숙한 'import this' 문법이지만, 이 경우 특정 작업들을 수행할 거야.
import PyPDF2
간단한 예제로 PDF 문서를 열고 읽어보자.
# 읽기 모드에서 이진 파일 열기
with open('example.pdf', 'rb') as pdf_file:
# PDFReader 객체 생성
pdf_reader = PyPDF2.PdfReader(pdf_file)
# 첫 번째 페이지에서 텍스트 추출
page = pdf_reader.pages[0]
text = page.extract_text()
print(text)
이 코드는 필요한 모든 작업을 포함: PDF 문서를 열고, 첫 번째 페이지에서 텍스트를 추출해 출력해. 간단하고 깔끔해.
PyPDF2 기능 개요
PyPDF2는 PDF 작업을 위한 다양한 기능을 제공해:
- 텍스트 추출: 이미 살펴봤어.
- PDF 병합: 여러 PDF 문서를 병합하여 새 PDF 만들기.
- 페이지 분리: 필요한 페이지를 선택해 별도의 파일로 저장.
- 주석과 코멘트 추가: 이건 완전 고급 기능이지!
이 단계에서 PyPDF2의 작동 방식과 제공 기능에 대한 기본적인 이해를 얻었을 거야. 물론 수업 하나만으로 모든 걸 배우는 건 불가능하지. 하지만 천천히 한 걸음씩 이 라이브러리가 무엇을 제공하는지 알아갈 거야.
피드백과 흔한 오류
코드가 바로 동작하는 경우는 드물고, 학습은 항상 "버그 찾기"로
변해버리곤 하지. PyPDF2 사용 시 가장 흔한 오류는 파일 경로
오류야. PDF 문서가 스크립트와 같은 디렉토리에 있는지 확인하거나,
전체 경로를 지정해야 해. 또한 파일을 이진 모드('rb'
)로
열어야 인코딩 문제를 피할 수 있어. 한 현명한 프로그래머가
말했듯, "버그란 코드의 오류가 아니라 예상치 못한 기능일 뿐".
GO TO FULL VERSION