Skip to main content

PyMuPDF4LLM — PDF 전용 변환

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