PDF ke Markdown dengan Python

Empat library yang mengubah PDF menjadi Markdown, dengan perintah instalasi dan kode yang berjalan untuk masing-masing, apa yang diizinkan lisensinya, dan cara memilihnya.

Terakhir diperbarui: 2026-11-13

Library mana yang dipilih

LibraryLisensiButuhPaling cocok untuk
PyMuPDF4LLMAGPL 3.0, atau lisensi komersial berbayarCukup pipPDF teks yang cepat dan akurat; judul dan tabel
MarkItDownMITCukup pipBanyak jenis file lewat satu panggilan
DoclingMITPyTorch, unduhan modelTata letak rumit, tabel, keluaran terstruktur
MarkerKode Apache 2.0; bobot model dengan lisensi OpenRAIL-M yang dimodifikasiPyTorch, dan server inferensi untuk OCRMakalah penuh rumus dan pindaian, sebaiknya dengan GPU

Versi di bawah adalah yang terbaru pada tanggal di bagian atas halaman ini. Jika Anda hanya punya beberapa PDF, Anda tidak butuh satu pun: konverter di halaman utama kami melakukan hal yang sama di browser Anda.

PyMuPDF4LLM

Fitur ekspor Markdown dari PyMuPDF. Sejak PyMuPDF 2.0, fitur ini disertakan di paket pymupdf; nama import-nya tetap pymupdf4llm.

pip install pymupdf
import pymupdf4llm

md = pymupdf4llm.to_markdown("report.pdf")
open("report.md", "w", encoding="utf-8").write(md)

Opsi yang berguna:

# Hanya beberapa halaman (mulai dari 0), sebagai satu dict per halaman beserta metadatanya
pages = pymupdf4llm.to_markdown("report.pdf", pages=[0, 1, 2], page_chunks=True)
for p in pages:
    print(p["metadata"]["page_number"], len(p["text"]))

Untuk halaman hasil pindai, pasang juga mesin OCR: dengan pip install rapidocr onnxruntime, PyMuPDF membaca halaman yang tidak punya lapisan teks.

Lisensi: PyMuPDF berlisensi ganda, GNU AGPL 3.0 atau lisensi komersial dari Artifex. AGPL mewajibkan Anda membuka kode sumber Anda sendiri jika Anda mendistribusikan perangkat lunaknya atau menawarkannya sebagai layanan jaringan, jadi periksa ini sebelum memakainya di produk tertutup.

Di benchmark kami, PyMuPDF4LLM 2.1 rata-rata mempertahankan 99% teks utama dan punya urutan baca terbaik di antara tiga konverter yang kami nilai.

MarkItDown

Konverter Microsoft untuk banyak format: PDF, Word, PowerPoint, Excel, HTML, EPUB, dan lainnya.

pip install 'markitdown[pdf]'
from markitdown import MarkItDown

md = MarkItDown()
result = md.convert("report.pdf")
open("report.md", "w", encoding="utf-8").write(result.markdown)

Dari baris perintah: markitdown report.pdf -o report.md.

Lisensi: MIT.

Perlu diketahui: untuk PDF, alat ini mengekstrak teks dengan pdfminer.six dan pdfplumber. Hasilnya tanpa judul, mempertahankan pergantian baris dan tanda hubung akhir baris dari PDF, dan instalasi bawaannya tidak punya OCR. Ini pilihan tepat jika PDF hanya bagian kecil dari tumpukan file kantor campuran. Halaman MarkItDown kami berisi detailnya.

Docling

Perangkat konversi dokumen yang dimulai di IBM Research Zurich dan kini di-host oleh LF AI & Data Foundation. Docling menjalankan model tata letak, tabel, dan OCR, jadi ia memasang PyTorch dan mengunduh model saat pertama dipakai. Selain PDF, Docling membaca Word, PowerPoint, Excel, HTML, gambar, dan lainnya.

pip install docling
from docling.document_converter import DocumentConverter

converter = DocumentConverter()
result = converter.convert("report.pdf")
md = result.document.export_to_markdown()
open("report.md", "w", encoding="utf-8").write(md)

Dari baris perintah: docling report.pdf menulis file .md di folder saat ini.

Lisensi: MIT. Selain Markdown, dokumen bisa diekspor ke HTML dan ke format JSON tanpa kehilangan yang menyimpan informasi tata letak untuk diproses kemudian.

Marker

Konverter dari Datalab, dibangun di sekitar model visinya sendiri. Kuat untuk rumus dan pindaian, tetapi lebih berat dijalankan.

pip install marker-pdf

Marker butuh PyTorch, dan untuk OCR ia menyalakan server inferensi saat pertama dipakai: vLLM di GPU NVIDIA, atau binary llama-server dari llama.cpp di CPU atau Apple Silicon.

from marker.converters.pdf import PdfConverter
from marker.models import create_model_dict
from marker.output import text_from_rendered

converter = PdfConverter(artifact_dict=create_model_dict())
rendered = converter("report.pdf")
text, _, images = text_from_rendered(rendered)
open("report.md", "w", encoding="utf-8").write(text)

Dari baris perintah: marker_single report.pdf.

Lisensi: kodenya Apache 2.0. Bobot model memakai lisensi AI Pubs OpenRAIL-M yang dimodifikasi, gratis untuk riset, penggunaan pribadi, dan startup dengan pendanaan atau pendapatan di bawah 5 juta dolar AS; penggunaan komersial yang lebih besar butuh lisensi dari Datalab.

Konversi satu folder PDF

Perulangan yang sama berlaku untuk library mana pun; di sini dengan PyMuPDF4LLM:

from pathlib import Path
import pymupdf4llm

src, out = Path("pdfs"), Path("markdown")
out.mkdir(exist_ok=True)
for pdf in sorted(src.glob("*.pdf")):
    try:
        md = pymupdf4llm.to_markdown(str(pdf))
    except Exception as e:  # file rusak atau terenkripsi tidak boleh menghentikan seluruh proses
        print(f"skipped {pdf.name}: {e}")
        continue
    (out / f"{pdf.stem}.md").write_text(md, encoding="utf-8")

Kapan skrip bukan alat yang tepat

  • Beberapa file, sekali saja: menaruhnya di konverter lebih cepat daripada menyiapkan lingkungan, dan Anda bisa mencocokkan setiap halaman dengan Markdown-nya.
  • Dokumen sensitif di komputer bersama: konverter browser tidak perlu instalasi dan menyimpan file di dalam tab.
  • Anda ingin jumlah token dan chunk RAG tanpa menulisnya sendiri: lihat PDF ke Markdown untuk LLM.

Pertanyaan umum

Library mana yang paling cepat?

Untuk PDF teks, MarkItDown dan PyMuPDF4LLM butuh kurang dari satu detik sampai beberapa detik per dokumen di laptop. Docling dan Marker menjalankan model neural dan jauh lebih lambat tanpa GPU.

Mana yang paling baik menangani tabel?

Dari dua yang kami ukur, PyMuPDF4LLM menghasilkan tabel Markdown yang benar, sedangkan MarkItDown sebagian besar tidak. Docling dan Marker sama-sama memakai model tabel dan sering direkomendasikan untuk tabel rumit; uji dengan dokumen Anda sendiri.

Bisakah dipakai di produk komersial?

MarkItDown dan Docling berlisensi MIT, yang mengizinkannya. PyMuPDF butuh kepatuhan AGPL atau lisensi komersial. Kode Marker berlisensi Apache 2.0, tetapi bobot modelnya punya batas pendapatan untuk penggunaan komersial.

Apakah ada pilihan JavaScript?

pdftomd sendiri berjalan dengan JavaScript dan WebAssembly di browser. Mesin teksnya adalah paket sumber terbuka @firecrawl/pdf-inspector-wasm, dan OCR-nya adalah PaddleOCR yang berjalan di ONNX Runtime Web. Lihat halaman lisensi untuk setiap komponen.