PyMuPDF4LLM은 PyMuPDF(fitz) 기반의 PDF 전용 변환 도구로, PDF를 LLM에 최적화된 Markdown으로 변환합니다. 빠른 속도와 정확한 텍스트 추출이 강점입니다.
pip install pymupdf4llm
기본 변환
이미지 추출 (Markdown 링크)
페이지별 변환
표 추출
import pymupdf4llm# PDF -> Markdown 변환md_text = pymupdf4llm.to_markdown("document.pdf")print(md_text)
write_images=True 옵션으로 PDF 내 이미지를 별도 파일로 추출하고, Markdown에서 ![]()로 참조합니다.
import pymupdf4llmfrom pathlib import Path# 이미지 저장 디렉토리 생성image_dir = Path("output/images")image_dir.mkdir(parents=True, exist_ok=True)# 이미지 추출 + Markdown 변환md_text = pymupdf4llm.to_markdown( "document.pdf", write_images=True, # 이미지를 파일로 저장 image_path=str(image_dir), # 이미지 저장 경로 image_format="png", # 이미지 형식 (png, jpg) dpi=150, # 이미지 해상도)# Markdown 저장output_path = Path("output/document.md")output_path.write_text(md_text, encoding="utf-8")
생성된 Markdown 파일 내에서 이미지는 다음과 같이 참조됩니다:
# IntroductionThis paper presents a novel approach to...The architecture shown above demonstrates...## Related WorkPrevious studies have explored...
이미지 파일명은 {pdf파일명}-{페이지번호}-{이미지인덱스}.{확장자} 형태로 자동 생성됩니다.
특정 페이지만 선택적으로 변환할 수 있습니다.
import pymupdf4llm# 특정 페이지만 변환 (0-indexed)md_text = pymupdf4llm.to_markdown( "document.pdf", pages=[0, 1, 2], # 첫 3페이지만)# 페이지 단위로 분리된 결과 (LangChain Document 형태)docs = pymupdf4llm.to_markdown( "document.pdf", page_chunks=True, # 페이지별 분리)for doc in docs: print(f"Page {doc['metadata']['page']}: {len(doc['text'])} chars")
PyMuPDF4LLM은 PDF 내 표를 Markdown 표 형식으로 변환합니다.
import pymupdf4llmmd_text = pymupdf4llm.to_markdown( "report.pdf", show_progress=True, # 변환 진행률 표시)# 변환된 Markdown에서 표가 자동으로 감지됨:# | Column A | Column B | Column C |# |----------|----------|----------|# | Value 1 | Value 2 | Value 3 |