Konversi PDF ke Markdown untuk Menghemat Token LLM: Panduan MarkItDown
Mengirim PDF langsung ke Claude atau LLM mana pun diam-diam membakar token: setiap halaman juga diubah menjadi gambar. Konversi file ke Markdown terlebih dahulu dengan MarkItDown, alat open source gratis dari Microsoft, dan pangkas tagihan token Anda hingga 80%. Panduan lengkap dengan CLI, Python, dan setup MCP.
Anda melepas PDF 20 halaman ke Claude, mengajukan satu pertanyaan, dan jawabannya kembali tanpa masalah. Yang tidak Anda lihat adalah tagihannya. Bahkan sebelum pertanyaan Anda dibaca, dokumen itu bisa menelan puluhan ribu token. Lakukan beberapa kali sehari di seluruh tim, dan Anda membayar uang yang benar-benar nyata hanya untuk menjejalkan PDF mentah ke model yang sebenarnya akan sama puasnya dengan teks bersih.
Ada solusi gratis, dan solusi itu sudah ada di depan mata sejak awal. Konversi file ke Markdown terlebih dahulu. Panduan ini menjelaskan persis mengapa PDF begitu mahal, berapa banyak yang Anda hemat, dan cara melakukan konversi dalam satu perintah dengan MarkItDown, konverter open source dari Microsoft.
Mengapa PDF menghabiskan begitu banyak token
Inilah bagian yang tidak diberitahukan siapa pun kepada Anda. Saat Anda memberikan PDF ke LLM, file itu tidak dibaca seperti cara Anda membacanya. Menurut dokumentasi PDF resmi Anthropic, sistem melakukan dua hal pada setiap halaman:
- Sistem mengekstrak teks dari halaman.
- Sistem mengubah seluruh halaman menjadi gambar, lalu mengirim gambar itu bersama teksnya.
Langkah kedua itulah lubang pembuangan token yang senyap. Model bukan hanya membaca kata-kata, ia juga melihat foto setiap halaman agar bisa memahami grafik, tabel, dan tata letak. Anda membayar keduanya.
Angka-angka dari Anthropic membuat biaya itu nyata. Teks yang diekstrak saja mencapai 1.500 hingga 3.000 token per halaman tergantung kepadatannya. Di atas itu, setiap halaman membawa biaya satu gambar. Sebuah data yang sangat menjelaskan berasal dari integrasi Amazon Bedrock: mode PDF visual penuh menggunakan sekitar 7.000 token untuk PDF 3 halaman, sementara ekstraksi teks biasa dari tiga halaman yang sama menggunakan sekitar 1.000 token. Itu selisih 7 kali lipat, dan seluruhnya berasal dari gambar per halaman.
Skalakan itu ke dokumen nyata. Laporan padat 20 halaman bisa berkisar antara 40.000 hingga 70.000 token begitu setiap halaman diubah menjadi gambar. Anda belum menanyakan apa pun. Anda baru saja membuka file-nya.
Blok oranye-merah adalah biaya tambahan murni: satu gambar untuk setiap halaman, entah halaman itu punya elemen visual yang layak dilihat atau tidak.
Solusinya: berikan Markdown bersih sebagai gantinya
Sebagian besar dokumen tidak perlu dilihat. Sebuah kontrak, sebuah spesifikasi, sebuah makalah penelitian, sebuah dek slide penuh poin bulet: semua itu hanyalah teks yang berbalut tata letak. Jika Anda mengupas tata letaknya dan mempertahankan strukturnya, model tidak kehilangan apa pun yang benar-benar ia butuhkan.
Itulah yang diberikan Markdown kepada Anda. Format ini hampir sedekat mungkin dengan teks biasa, tetapi tetap mengkodekan struktur yang penting: heading, daftar, tabel, tautan, blok kode, tebal, dan penekanan. LLM arus utama dilatih dengan Markdown dalam jumlah yang sangat besar, sehingga mereka membacanya secara native dan tanpa usaha. Microsoft, yang membangun MarkItDown, menyatakannya dengan gamblang: Markdown itu "sangat dekat dengan teks biasa, dengan markup atau format yang minimal, tetapi tetap menyediakan cara untuk merepresentasikan struktur penting sebuah dokumen."
Konversikan PDF Anda ke Markdown dan Anda menghilangkan gambar per halaman sepenuhnya. Tidak ada lagi halaman yang diubah menjadi gambar, tidak ada lagi biaya tambahan vision, hanya teks terstruktur yang memang akan dibaca model. Di situlah penghematannya berasal.
Kenalan dengan MarkItDown, konverter gratis dari Microsoft
MarkItDown adalah utilitas Python ringan dari Microsoft, dirilis di bawah lisensi MIT yang permisif dan menjadi salah satu alat pengembang dengan bintang terbanyak di GitHub, dengan lebih dari 135.000 bintang. Tugas tunggalnya adalah mengubah file dunia nyata yang berantakan menjadi Markdown bersih yang bisa dibaca LLM dengan murah.
Ini bukan sekadar alat untuk PDF. MarkItDown mengonversi daftar panjang format:
- Dokumen PDF
- Word (
.docx) - Excel (
.xlsx,.xls) - PowerPoint (
.pptx) - Gambar, dengan metadata EXIF dan OCR untuk teks di dalam gambar
- Audio, dengan metadata dan transkripsi ucapan
- Halaman HTML
- Data CSV, JSON, dan XML
- Arsip ZIP (ia menelusuri isinya)
- URL YouTube (ia menarik transkripnya)
- E-book EPub
- Pesan Outlook (
.msg)
Satu alat, satu format keluaran, untuk hampir apa pun yang seharusnya Anda lemparkan ke model sebagai biner yang berat.
Instal MarkItDown dalam 30 detik
Ini paket Python biasa. Untuk mendapatkan semuanya, instal extra all:
pip install 'markitdown[all]'
Jika Anda hanya peduli pada beberapa format dan ingin instalasi yang lebih ramping, minta saja extra tersebut:
pip install 'markitdown[pdf, docx, pptx]'
Opsi yang tersedia mencakup [all], [pdf], [docx], [pptx], [xlsx], [xls], [outlook], [audio-transcription], dan [youtube-transcription], di antara yang lainnya.
Konversi PDF ke Markdown dari command line
Jalur tercepat adalah CLI. Arahkan ke sebuah file dan kirim hasilnya ke mana pun Anda mau:
markitdown report.pdf -o report.md
Atau gunakan redirect biasa, yang melakukan hal yang sama:
markitdown report.pdf > report.md
Anda juga bisa mem-pipe sebuah file langsung ke dalamnya:
cat report.pdf | markitdown
Itulah seluruh alurnya. Sekarang Anda punya report.md yang bisa Anda berikan ke model mana pun, taruh di sebuah repositori, atau tempel ke sebuah obrolan, dan biayanya hanya sebagian kecil dari aslinya.
File berat masuk, Markdown siap-agen keluar, satu perintah di antaranya.
Konversi di Python (dan proses satu folder penuh sekaligus)
Jika Anda menghubungkan ini ke sebuah pipeline, API Python-nya sama singkatnya:
from markitdown import MarkItDown
md = MarkItDown(enable_plugins=False)
result = md.convert("report.pdf")
print(result.text_content)
result.text_content adalah string Markdown Anda, siap ditulis ke disk atau diberikan ke model. Untuk mengonversi satu folder penuh dokumen dalam satu kali jalan, lakukan loop di atasnya:
from pathlib import Path
from markitdown import MarkItDown
md = MarkItDown(enable_plugins=False)
for src in Path("docs").glob("*.pdf"):
out = src.with_suffix(".md")
out.write_text(md.convert(str(src)).text_content, encoding="utf-8")
Jalankan itu sekali dan sebuah direktori berisi PDF mahal berubah menjadi direktori berisi Markdown yang murah dan terstruktur, yang bisa dibaca agen mana pun di setiap giliran tanpa membayar ulang pajak vision.
Berapa banyak yang sebenarnya Anda hemat?
Jawaban jujurnya: tergantung dokumennya, tetapi keuntungannya besar dan konsisten. Inilah gambaran umumnya untuk file tipikal yang padat teks.
| PDF dikirim ke model | Dikonversi ke Markdown | |
|---|---|---|
| Teks yang diekstrak | ya | ya |
| Satu gambar per halaman | ya, setiap halaman | tidak |
| Biaya tambahan vision | penuh | tidak ada |
| Dokumen 3 halaman (angka Bedrock) | ~7.000 token | ~1.000 token |
| Dokumen 20 halaman (estimasi) | 40.000 hingga 70.000 token | 10.000 hingga 15.000 token |
Untuk dokumen yang nilainya ada pada kata-katanya, konversi ke Markdown secara rutin memangkas biaya token jauh lebih dari setengahnya, dan sering kali 80% atau lebih. Penghematannya bukan sihir: Anda hanya tidak lagi membayar untuk mengirim foto setiap halaman ketika model hanya membutuhkan teksnya.
Tentu saja, Markdown tidak benar-benar gratis. Teks yang diekstrak tetap memakan token. Tetapi biaya teks itu adalah lantai dasar yang memang selalu akan Anda bayar. Yang Anda hilangkan adalah tumpukan gambar per halaman yang bertengger di atasnya.
Kapan harus mempertahankan PDF (jangan terlalu mengoptimalkan)
Konversi adalah default yang tepat, bukan aturan universal. Pertahankan PDF asli ketika tata letak visual itulah intinya:
- Grafik dan diagram yang memang perlu dibaca model. Jika makna ada di dalam diagram batang, gambar itu melakukan pekerjaan yang nyata.
- Dokumen hasil pindai yang berupa gambar dari teks. MarkItDown bisa meng-OCR-nya, tetapi jika pengenalannya goyah, vision milik model sendiri mungkin membaca halaman itu dengan lebih andal.
- Tabel atau formulir visual yang kompleks di mana posisi dan perataan membawa makna yang menjadi datar di Markdown.
- Infografis dan halaman yang sarat desain di mana tata letaknya adalah kontennya.
Untuk semua yang lain, yaitu sebagian besar dokumen, Markdown yang menang.
Pertanyaannya tidak pernah "PDF atau Markdown" secara abstrak. Pertanyaannya adalah "apakah model perlu melihat halaman ini, atau cukup membacanya?"
Lebih dari sekadar PDF: Word, Excel, PowerPoint, bahkan YouTube
Perintah satu baris yang sama bekerja pada sisa tumpukan dokumen Anda. Sebuah dokumen Word, sebuah spreadsheet, sebuah dek slide, sebuah halaman web, bahkan transkrip video YouTube semuanya menyusut menjadi Markdown bersih dengan cara yang sama:
markitdown deck.pptx -o deck.md
markitdown budget.xlsx -o budget.md
markitdown https://www.youtube.com/watch?v=VIDEO_ID -o transcript.md
Jika alur kerja Anda melibatkan penarikan konteks secara rutin dari file Office atau web untuk diberikan ke model, menstandarkan semuanya ke Markdown terlebih dahulu adalah salah satu kebiasaan termurah dan paling berdaya ungkit yang bisa Anda bangun.
Hubungkan ke agen kode Anda dengan server MCP MarkItDown
Jika Anda bekerja dengan agen kode, ini menjadi lebih baik lagi. MarkItDown menyertakan server MCP (Model Context Protocol) resmi, sehingga agen Anda bisa mengonversi file sendiri, di tengah tugas, tanpa Anda menjalankan apa pun secara manual.
Instal dan jalankan melalui stdio:
pip install markitdown-mcp
markitdown-mcp
Server tersebut mengekspos satu alat, convert_to_markdown(uri), di mana uri bisa berupa URI http:, https:, file:, atau data: apa pun. Hubungkan ke agen Anda sekali dan ia bisa menarik PDF, spreadsheet, atau halaman web dan mengubahnya menjadi Markdown sesuai permintaan, membayar harga token teks alih-alih harga vision sepanjang waktu.
Ini persis jenis hal yang efeknya berlipat ganda saat Anda menjalankan lebih dari satu agen. Di AgentsRoom, kokpit multi-agen, Anda mengonfigurasi satu server MCP sekali dan setiap agen di dalam room mewarisinya. Konversikan dokumen referensi Anda ke .md, commit ke repositori, dan setiap agen membaca teks yang murah dan terstruktur di setiap giliran alih-alih mengubah ulang PDF yang sama menjadi gambar berkali-kali. Disiplin yang sama yang menjaga satu sesi tetap ringan menjaga seluruh armada tetap terjangkau, yang penting ketika Anda menjalankan agen kode secara paralel dan setiap agen membaca konteks bersama Anda.
Ini juga berpadu secara alami dengan cara setup agen yang baik mengelola konteksnya. Jika Anda memelihara sebuah file konteks AGENTS.md, mengarahkannya ke referensi .md yang ringan alih-alih ke PDF mentah menjaga jendela konteks tetap rapat, yang, seperti yang kita bahas dalam trik canary untuk menangkap pergeseran konteks, adalah separuh dari pertempuran dalam sesi panjang mana pun.
Intisarinya
Memberikan PDF mentah ke LLM adalah pajak yang sudah Anda bayar tanpa menyadarinya, karena setiap halaman diam-diam diubah menjadi gambar. MarkItDown menghapus pajak itu secara gratis: satu perintah mengubah hampir semua file menjadi Markdown bersih, Anda memangkas hingga 80% biaya token, dan model menjawab sama baiknya, sering kali lebih baik, karena ia membaca struktur alih-alih menyipitkan mata ke foto halaman.
Konversi dulu, baru bertanya. Tagihan token dan jendela konteks Anda sama-sama akan berterima kasih.
Siap menjalankan ini di seluruh tim agen alih-alih satu terminal? Unduh AgentsRoom, lihat apa yang didukung setiap agen di matriks kompatibilitas provider, dan baca lebih lanjut tentang dukungan multi-provider.
Unduh AgentsRoom
Jalankan agen AI Anda (Claude, Codex, OpenCode, Gemini CLI, Aider) di semua proyek Anda, dari satu jendela.
Aplikasi pendamping: pantau agen Anda saat bepergian
Gunakan Claude, Codex, Gemini CLI, atau penyedia AI lainnya.
Kirim bug dan permintaan langsung ke backlog publik Anda.
Sekilas AgentsRoom dalam aksi.