Skip to main content
PyMuPDF4LLM은 PyMuPDF(fitz) 기반의 PDF 전용 변환 도구로, PDF를 LLM에 최적화된 Markdown으로 변환합니다. 빠른 속도와 정확한 텍스트 추출이 강점입니다.
pip install pymupdf4llm
import pymupdf4llm

# PDF -> Markdown 변환
md_text = pymupdf4llm.to_markdown("document.pdf")
print(md_text)

PyMuPDF4LLM + 청킹 파이프라인

변환된 Markdown을 LangChain 또는 Chonkie로 청킹하는 전체 파이프라인입니다.
import pymupdf4llm
from langchain_text_splitters import MarkdownHeaderTextSplitter
from langchain_core.documents import Document
from pathlib import Path

# 1. PDF -> Markdown 변환 (이미지 포함)
image_dir = Path("output/images")
image_dir.mkdir(parents=True, exist_ok=True)

md_text = pymupdf4llm.to_markdown(
    "document.pdf",
    write_images=True,
    image_path=str(image_dir),
    image_format="png",
    dpi=150,
)

# 2. Markdown 헤딩 기반 청킹
splitter = MarkdownHeaderTextSplitter(
    headers_to_split_on=[
        ("#", "h1"),
        ("##", "h2"),
        ("###", "h3"),
    ],
)
chunks = splitter.split_text(md_text)

# 3. 이미지 링크가 포함된 청크 확인
for chunk in chunks:
    has_image = "![" in chunk.page_content
    print(f"[{chunk.metadata}] {'(이미지 포함)' if has_image else ''}")
    print(chunk.page_content[:200])
    print("---")
이미지 링크가 포함된 청크는 멀티모달 RAG 파이프라인에서 활용할 수 있습니다. 이미지 경로를 메타데이터로 추출하여, 검색 시 관련 이미지를 함께 제공하면 답변 품질이 향상됩니다.

주요 옵션

옵션설명기본값
write_images이미지를 파일로 추출False
image_path이미지 저장 디렉토리"."
image_format이미지 형식 ("png", "jpg")"png"
dpi이미지 해상도 (DPI)150
pages변환할 페이지 목록 (0-indexed)전체
page_chunks페이지별 분리 반환False
show_progress진행률 표시False

학습 목표

  • 이 문서의 핵심 개념을 실제 프로젝트 시나리오로 연결할 수 있습니다.
  • 최소 1개 실습 과제를 수행하고 결과를 비교할 수 있습니다.
  • 다음 단계에서 필요한 입력 데이터/도구를 준비할 수 있습니다.

실무 적용 체크리스트

  • 실험/운영에서 사용할 평가 지표를 먼저 정했습니다.
  • 베이스라인과 비교할 기준 조건을 고정했습니다.
  • 실패 시 복구 또는 롤백 기준을 문서화했습니다.
  • 팀 공유 문서에 적용 결과를 기록했습니다.

다음 문서

다음: 청킹 전략

학습 흐름을 이어서 진행합니다.