티스토리 뷰
아래의 포스팅은 이파피루스 미국 자회사인 아티펙스의 시니어 매니저 'Jamie Lemon'이 일본 개발자 커뮤니티인 Qiita에 업로드한 내용을 바탕으로 작성했습니다. 원문을 확인하고 싶으신 분들은 아래 url을 확인해주세요:)
https://qiita.com/jamie-lemon/items/344d7098cc586f88d835
개발자가 자주 쓰는 Python PDF 라이브러리의 상위 10가지 사용 사례
Python은 PDF 워크플로우 자동화에서 핵심 언어로 자리 잡고 있습니다. 단순한 추출부터 복잡한 문서 조작까지, 개발자들은 PyMuPDF 같은 라이브러리를 통해 비즈니스 프로세스부터 학술 연구까지 다양한 분야를 효율화하고 있습니다. 이 글에서는 개발자들이 자주 찾는 PDF 관련 작업 10가지를 정리하며, 각 작업이 왜 중요한지, PyMuPDF는 이를 어떻게 지원하는지 설명합니다.
1. PDF에서 텍스트 추출
- 텍스트 추출은 가장 기본적인 PDF 작업이며, 검색 엔진 구축, 문서 분석, 데이터 파이프라인에 활용됩니다.
- PyMuPDF 활용: .get_text() 메서드로 단순 및 복잡한 PDF에서 빠르고 정확하게 텍스트를 추출합니다.
- 참고 영상: https://youtu.be/DSsqzKA_hPg?si=VoNYBSuL4LiE9ljL
- 예시코드
|
1
2
3
4
5
|
import pymupdf # PyMuPDF
doc = pymupdf.open("document.pdf")
for page in doc:
print(page.get_text())
|
2. PDF 폼 자동 입력 및 플래트닝
- 계약서나 신청서 같은 디지털 폼을 자동화하고, 플래트닝으로 추가 수정을 방지할 수 있습니다.
- PyMuPDF 활용: 폼 필드에 값을 입력하고, 저장할 때 플래트닝 옵션을 적용합니다.
- 예시 코드:
|
1
2
3
4
5
6
7
|
import pymupdf
doc = pymupdf.open("form.pdf")
for field in doc.widgets():
if field.field_name == "Name":
field.field_value = "Alice"
field.update()
doc.save("filled_flattened.pdf", deflate=True)
|
3. PDF에서 테이블 추출
- 청구서나 연구 자료 등 구조화된 데이터를 테이블 형태로 추출할 때 유용합니다.
- PyMuPDF 활용: bounding box와 텍스트 블록 정보("dict" 형식)를 활용해 테이블 구조를 추출합니다.
- 참고영상: https://www.youtube.com/watch?v=-KY08O32Yc8
- 예시 코드:
|
1
2
3
4
5
6
7
|
# PyMuPDF can get bounding boxes, then you can infer table structure manually
import pymupdf
doc = pymupdf.open("tables.pdf")
page = doc[0]
blocks = page.get_text("dict")["blocks"]
for b in blocks:
print(b.get("lines"))
|
4. 워터마크 추가 및 제거
- 브랜딩, 보안, 기밀 문서 용도로 워터마크를 삽입하거나 제거할 수 있습니다.
- PyMuPDF 활용: 투명한 텍스트/이미지를 삽입하거나, 기존 워터마크 레이어를 제거합니다.
- 예시 코드:
|
1
2
3
4
5
6
|
# Add watermark text
import pymupdf
doc = pymupdf.open("input.pdf")
for page in doc:
page.insert_text((72, 72), "CONFIDENTIAL", fontsize=40, rotate=45, opacity=0.3)
doc.save("watermarked.pdf")
|
5. 주석 추가 또는 하이라이트
- 문서 리뷰, 교육, 법률 검토 등 협업 환경에서 주석이나 하이라이트가 필요할 때 사용합니다.
- PyMuPDF 활용: 특정 텍스트를 검색해 하이라이트 주석을 삽입합니다.
- 참고영상: https://www.youtube.com/shorts/XvcgmF6oYKs
- 예시 코드:
|
1
2
3
4
5
6
7
|
import pymupdf
doc = pymupdf.open("document.pdf")
page = doc[0]
text_instances = page.search_for("highlight")
for inst in text_instances:
page.add_highlight_annot(inst)
doc.save("highlighted.pdf")
|
6. PDF 페이지 분할
- 대용량 문서를 개별 페이지나 섹션 단위로 분할해 처리하거나 배포할 때 사용됩니다.
- PyMuPDF 활용: 페이지 인덱스로 루프를 돌며 각 페이지를 새 문서로 저장합니다.
- 참고영상: https://www.youtube.com/shorts/YKld9G6NJqo
- 예시 코드:
|
1
2
3
4
5
6
|
import pymupdf
doc = pymupdf.open("large.pdf")
for i in range(len(doc)):
new_doc = pymupdf.open()
new_doc.insert_pdf(doc, from_page=i, to_page=i)
new_doc.save(f"page_{i+1}.pdf")
|
cs |
7. 여러 PDF 병합
- 보고서, 폼, 부록 등을 하나의 문서로 통합할 때 필요합니다.
- PyMuPDF 활용: 여러 PDF를 합쳐 단일 파일로 저장합니다.
- 참고영상: https://www.youtube.com/shorts/YKld9G6NJqo
- 예시 코드:
|
1
2
3
4
5
|
import pymupdf
merged = pymupdf.open()
for fname in ["doc1.pdf", "doc2.pdf"]:
merged.insert_pdf(pymupdf.open(fname))
merged.save("merged.pdf")
|
8. PDF → 이미지 변환
- 웹 미리보기, OCR 전처리, 문서 스캔 시스템 등에서의 시각적 처리가 필요할 때 사용합니다.
- PyMuPDF 활용: get_pixmap()으로 각 페이지를 고해상도 이미지로 저장할 수 있습니다.
- 참고영상: https://www.youtube.com/shorts/S4cEJB0eEwc
- 예시 코드:
|
1
2
3
4
5
|
import pymupdf
doc = pymupdf.open("document.pdf")
for page_number, page in enumerate(doc):
pix = page.get_pixmap()
pix.save(f"page_{page_number+1}.png")
|
9. PDF 내 텍스트 검색 및 교체
- 개인정보 제거, 문서 현지화, 템플릿 갱신 등에 자주 활용됩니다.
- PyMuPDF 활용: search_for(), redaction annotation, apply_redactions() 등을 통해 텍스트를 치환하거나 제거합니다.
- 참고영상: https://www.youtube.com/shorts/oucW0KsfCHM
- 예시 코드:
|
1
2
3
4
5
6
7
8
|
import pymupdf
doc = pymupdf.open("document.pdf")
for page in doc:
areas = page.search_for("old text")
for area in areas:
page.add_redact_annot(area, fill=(1, 1, 1))
page.apply_redactions()
doc.save("redacted.pdf")
|
10. PDF 압축
- 이미지나 내장 폰트로 인해 PDF 파일이 커지면 저장, 전송, 모바일 이용에 어려움이 생길때 사용합니다.
- PyMuPDF 활용: 메타데이터 제거, 이미지 DPI 조정, deflate=True, garbage=4 옵션을 쓴 저장으로 압축합니다.
- 예시 코드:
|
1
2
3
4
|
# Save with deflate and discard unused objects
import pymupdf
doc = pymupdf.open("large.pdf")
doc.save("compressed.pdf", deflate=True, garbage=4)
|
결론
이 10가지 사용 사례는 PDF 자동화 및 조작을 원하는 개발자들의 핵심 요구를 잘 보여주는 사례입니다.
PyMuPDF는 강력한 성능과 유연성으로 문서 관리, 워크플로우 자동화, 접근성 향상 등 다양한 요구를 충족할 수 있는 훌륭한 도구입니다. 많은 도움이 되셨길 바랍니다 🫡
'구축사례' 카테고리의 다른 글
| 시각장애인 실무자도 만족하는 뛰어난 웹접근성, StreamDocs Vu!로 구현한 사례와 함께 소개해드려요🫡 (0) | 2025.01.02 |
|---|---|
| [챗GPT 활용사례] 2023 DevDay 오픈AI 기조발표에서 찾아보는 이파피루스 PyMuPDF 기술! (0) | 2023.12.06 |
| [비하인드 스토리] 이파피루스 사람들#3 - 포스코 편 (0) | 2022.11.22 |
| [비하인드 스토리] 이파피루스 사람들 #2 - 기획재정부 편 (0) | 2022.11.09 |
| [비하인드 스토리] 이파피루스 사람들 #1 - 국세청 편 (1) | 2022.11.01 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 예지보전
- epapyrus
- 스마트공장
- PDF편집
- paperless
- 피터펜
- djvu
- PDF-Pro
- PDFpro
- 페이퍼리스
- 이벤트
- 이파피루스
- 인공지능
- 아티펙스
- ocr
- 모터센스
- pdf프로
- pdf추출
- Ai
- PDF변환
- 고장예측
- 문서ai
- pdf뷰어
- 파이썬라이브러리
- PyMuPDFPro
- pdf프로그램
- 전자문서
- 피터팬
- 전자서식
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함