Cara Mengubah File PDF dan Word Menjadi Teks untuk AI: MarkItDown dari Microsoft
MarkdownUlasan mendalam: Cara mengubah file PDF dan Word menjadi teks untuk AI: MarkItDown dari Microsoft.
Baca artikel lengkap
Intisari utama
MarkItDown adalah utilitas gratis dari Microsoft yang mengubah file Word, Excel, presentasi, dan PDF menjadi teks terstruktur untuk AI. Alat ini mengurai file Office dengan rapi dalam waktu singkat. PDF dengan tata letak rumit diubahnya menjadi berantakan, dan untuk hasil pindai menghasilkan file kosong dengan kode keluar nol. Di bawah ini ada perintah instalasi yang berfungsi, pengukuran pada dokumen yang berisi teks Kiril, serta panduan kapan harus menggunakan alat lain.
Petunjuk selengkapnya tersedia di dokumentasi Ailoot.
Apa itu MarkItDown dan untuk apa kegunaannya?
Intisari utama
MarkItDown adalah utilitas Python dari Microsoft yang membaca file dan mengembalikan isinya sebagai teks terstruktur. Judul menjadi judul, dan tabel menjadi tabel. Alat ini berada di repositori GitHub terbuka berlisensi MIT, dapat dipasang dengan satu perintah, dan seluruh pemrosesannya dilakukan di komputer Anda. Tugasnya hanya satu: menyiapkan dokumen agar AI dapat melihat bukan hanya kata-katanya, tetapi juga strukturnya.
Anda mengirim kontrak, laporan, atau ekspor akuntansi kepada AI, lalu mendapat jawaban yang tidak ada hubungannya dengan dokumen tersebut. Penyebabnya biasanya bukan modelnya. File memiliki format: Word adalah arsip berisi markup, Excel adalah lembar kerja dengan hubungan antarsel, dan PDF adalah kumpulan karakter dengan koordinat pada halaman. Model bekerja dengan teks, dan seseorang harus mengekstrak teks itu.
Itulah yang dilakukan MarkItDown. Repositorinya ada di github.com/microsoft/markitdown, dengan lisensi MIT, jadi Anda dapat menggunakannya tanpa batasan. Per 18 Agustus 2026, proyek ini memiliki 174,412 bintang dan 12,756 fork; rilis terbaru, 0.1.7, keluar pada 29 Juli. Proyek ini aktif, tetapi fokusnya telah bergeser dari pengembangan ke pemeliharaan: ada 481 pull request terbuka, dibandingkan dengan 183 yang telah digabungkan sepanjang sejarahnya.
Para pengembang menjelaskan tujuannya sebagai berikut:
MarkItDown adalah utilitas Python ringan untuk mengonversi file dalam berbagai format menjadi Markdown untuk digunakan dengan model bahasa besar dan saluran kerja analisis teks terkait.
Kalimat berikutnya dalam deskripsi menjelaskan separuh keluhan orang tentang alat ini:
Meskipun hasilnya sering terlihat cukup baik dan mudah dibaca manusia, alat ini ditujukan untuk digunakan oleh perangkat analisis teks dan mungkin bukan pilihan terbaik untuk konversi berketelitian tinggi atas dokumen yang dimaksudkan untuk dibaca manusia.
Hasilnya adalah bahan mentah untuk model. Dokumen yang dihasilkan tidak akan indah, dan proyek ini menyatakannya dengan lugas, tepat di bagian pertama.
Deskripsi tersebut menjawab secara langsung mengapa alat ini menggunakan Markdown: model-model terkemuka sudah “berbicara” dalam markup ini dan memasukkannya ke dalam jawaban tanpa diminta, karena mereka melihatnya dalam jumlah sangat besar selama pelatihan. Markup ini juga ringkas: tiga tanda pagar untuk sebuah judul, bukan belasan baris metadata.
Apa perbedaan MarkItDown dengan konverter biasa?
Intisari utama
Konverter seperti pandoc menerjemahkan satu bahasa markup ke bahasa lain dan mempertahankan tata letak untuk manusia. pandoc sama sekali tidak menerima PDF sebagai input. MarkItDown menyelesaikan masalah sebaliknya: mengekstrak konten dari file Office dan menatanya agar model langsung memahaminya tanpa membuang-buang token. Mempertahankan tata letak visual bukan tujuannya, dan itulah seluruh perbedaannya.
Perbedaannya terlihat jelas dari satu contoh. Ambil folder berisi dua puluh PDF dan coba proses semuanya dengan pandoc. Itu tidak akan berhasil: pandoc dapat menghasilkan PDF sebagai output, tetapi tidak dapat membacanya sebagai input. Dan situasi “saya punya setumpuk dokumen; berikan semuanya kepada model” adalah situasi yang paling umum.
Penulis MarkItDown membandingkan alat mereka dengan textract, pustaka yang hanya mengekstrak teks dari mana saja. Bedanya, MarkItDown berusaha mempertahankan struktur: judul, daftar, tabel, dan tautan.
| Fitur | pandoc | MarkItDown |
|---|---|---|
| Membaca PDF | tidak | ya, dengan catatan |
| Membaca Word, Excel, presentasi | sebagian | ya |
| Sasaran pengguna output | manusia | model |
| Nilai utama | ketepatan tata letak | struktur dan jumlah karakter yang rendah |
| Instalasi | program mandiri | satu perintah Python |
Kesimpulan praktisnya sederhana. Jika Anda perlu mengubah artikel menjadi tata letak untuk publikasi, gunakan pandoc. Jika Anda ingin AI memahami dua puluh kontrak, gunakan MarkItDown.
Bagaimana cara memasang MarkItDown tanpa mendapatkan rilis pertama?
Intisari utama
Dengan rilis 0.1.8, perintah dalam deskripsi proyek memasang versi terbaru pada Python 3.14 dan 3.12; hal ini telah diuji ulang di delapan lingkungan bersih. Penurunan diam-diam ke 0.0.2, rilis kedua dalam sejarah proyek, masih terjadi pada Python 3.15, pada Mac Intel yang menjalankan 3.14, serta pada Mac dengan versi macOS lebih lama yang menjalankan 3.13 dan 3.14. Dalam kasus tersebut, installer melaporkan keberhasilan. Jadi gunakan Python 3.12, cantumkan format yang diperlukan berdasarkan nama, lalu segera periksa nomor versinya.
Pertama, perintah yang tepat; kemudian, alasan mengapa perintah itu tepat.
Periksa versi Python
Python 3.12 paling andal: MarkItDown terbaru berhasil dipasang di setiap lingkungan yang diuji dengan versi ini. Perintah
python3 --versionmenunjukkan versi yang Anda miliki. Pada Mac Intel atau Mac dengan versi macOS lebih lama, Python 3.13 dan 3.14 dapat diam-diam menurunkan versi; Python 3.15 belum didukung, seperti yang dijelaskan di bawah.Pasang dengan mencantumkan format
Jalankan
pip install 'markitdown[pdf,docx,xlsx,pptx]'. Tanda kutip diperlukan, jika tidak shell akan menafsirkan tanda kurung siku tersebut. Pada Mac Intel, tambahkan flag--prefer-binarysetelahinstall.Segera periksa apakah instalasi berhasil
Jalankan
markitdown --version. Responsnya seharusnyamarkitdown 0.1.8atau lebih baru. Angka yang lebih rendah berarti instalasi menurunkan versi; bagian ini menjelaskan alasannya.
pip install 'markitdown[pdf,docx,xlsx,pptx]'
markitdown --version
Deskripsi proyek mencantumkan pip install 'markitdown[all]' sebagai perintah utama—untuk memasang semuanya sekaligus. Pada 28 September 2026, seminggu setelah 0.1.8 dirilis, empat variasi diuji di lingkungan bersih pada Mac Apple Silicon dengan Python 3.14.6 dan 3.12.12:
| Perintah | Terpasang pada Python 3.14 | Terpasang pada Python 3.12 |
|---|---|---|
pip install markitdown | 0.1.8 | 0.1.8 |
pip install 'markitdown[pdf,docx,xlsx,pptx]' | 0.1.8 | 0.1.8 |
pip install 'markitdown[all]' | 0.1.8 | 0.1.8 |
pip install 'markitdown[all]==0.1.8' | 0.1.8 | 0.1.8 |
Kedelapan instalasi berakhir dengan “Successfully installed”, dan markitdown --version mengembalikan 0.1.8 dalam setiap kasus. Pada bulan Agustus, ketika 0.1.7 adalah rilis terbaru, perintah ketiga pada Python 3.14 memasang 0.0.2, yang dirilis pada 8 Maret 2025—rilis kedua dalam sejarah proyek. Kini ada sebelas rilis stabil, dari 0.0.1 hingga 0.1.8, dan dua puluh enam jika prarilis ikut dihitung.
Penyebabnya adalah rantai dependensi. Pada 0.1.7, ekstra [all] menarik pustaka subtitle YouTube dari seri rilis tertentu, dan semua rilis dalam seri tersebut menyatakan bahwa mereka tidak berfungsi pada Python 3.14. Installer menolaknya dan, karena tidak ada versi yang dipatok, mundur melalui versi MarkItDown sampai menemukan versi yang dapat dipasang. Installer menemukan 0.0.2 lalu memasangnya, sehingga rilis dari satu setengah tahun lalu terpasang di komputer Anda. Pada 0.1.8, persyaratan pustaka subtitle dinaikkan ke seri yang berfungsi pada 3.14, dan penurunan versi pun berhenti.
Mekanisme tersebut masih ada. Jika installer tidak dapat menemukan satu komponen yang diperlukan untuk sistem Anda, installer diam-diam mundur ke 0.0.2 dengan cara yang sama. Pada versi-versi terbaru, komponen itu adalah mesin onnxruntime yang digunakan oleh pendeteksi jenis file. Pada Mac, dukungannya sebagai berikut: untuk Python 3.12, macOS 11 dan yang lebih baru; untuk 3.13, macOS 13; untuk 3.14, hanya Apple Silicon dengan macOS 14 atau lebih baru. Jika Mac Anda tidak memenuhi persyaratan tersebut, bahkan perintah dasar pip install markitdown akan memasang 0.0.2. Pengujian pada Mac Intel yang menjalankan Python 3.14 melalui Rosetta menghasilkan hal yang persis sama: “Successfully installed”, tanpa peringatan, dan 0.0.2 terpasang.
Mac Intel punya komplikasi lain. Sejak Juni 2026, pustaka cryptography yang dibutuhkan untuk membaca PDF dirilis tanpa versi prabina untuk prosesor ini, sehingga installer mencoba membangunnya dari kode sumber. Tambahkan flag --prefer-binary ke perintah, dan installer akan menggunakan versi sebelumnya yang memiliki paket prabina. Dalam pengujian pada Python 3.13 untuk Intel, cara ini memasang 0.1.8, dan PDF berhasil dibuka. Flag tersebut memasang cryptography 48.0.1, yang memiliki tiga kerentanan yang diketahui: pada dekripsi PKCS#7 dan verifikasi rantai sertifikat. MarkItDown hanya menggunakannya untuk mendekripsi PDF terenkripsi, dan pembacaan dokumen tidak menjangkau bagian tersebut.
Pada Python 3.15, penurunan versi terjadi karena dua alasan. Versi 0.1.8 menyatakan dukungan hanya dari 3.10 hingga 3.14, dan mesin untuk 3.15 belum tersedia. Resolusi installer untuk 3.15 menegaskan hal ini: perintah dasar maupun perintah dengan format sama-sama memasang 0.0.2.
Peringatan penurunan versi terlihat seperti ini, satu baris untuk setiap ekstra dalam perintah:
WARNING: markitdown 0.0.2 does not provide the extra 'all'
Baris itu tenggelam di antara puluhan baris unduhan, dan tidak menyebutkan versi yang menggantikannya. Dengan perintah dasar tanpa ekstra, bahkan tidak ada peringatan. Laporan akhirnya terdengar menggembirakan: “Successfully installed.”
Memasang tanpa ekstra juga bukan solusi. Paket dasarnya terpasang, tetapi tidak dapat membuka PDF:
PdfConverter recognized the input as a potential .pdf file, but the
dependencies needed to read .pdf files have not been installed. To resolve
this error, include the optional dependency [pdf] or [all] when installing
MarkItDown. For example:
* pip install 'markitdown[pdf]'
* pip install 'markitdown[all]'
Alat ini sendiri merekomendasikan [all], dan dengan 0.1.8 saran itu kembali berfungsi pada Python 3.14 dan 3.12. Meski demikian, lebih baik mencantumkan format berdasarkan nama: [all] menambahkan sekitar lima belas paket lagi dan kira-kira 55 megabita, termasuk pustaka Azure prarilis dan rantai dependensi YouTube yang sebelumnya sempat merusak instalasi.
Installer menangani prarilis Azure itu sendiri. Biasanya pip melewatkan prarilis, tetapi dalam kasus ini persyaratannya secara eksplisit menyebut prarilis, jadi pip memasangnya. Empat versi pip, dari 23.2 hingga 26.2, diuji pada Python 3.12; semuanya memilih 0.1.8.
Perhatian
Segera setelah instalasi, jalankan markitdown --version. Proses ini hanya memerlukan lima detik, dan inilah satu-satunya cara untuk memastikan bahwa yang Anda pasang memang versi yang diminta. Laporan keberhasilan tidak berarti apa-apa dalam kasus ini.
Pada bulan Agustus, instalasi ulang di lingkungan bersih lain memberikan hasil yang sama: 0.0.2 dan kata “Successfully”.
Ada beberapa detail praktis yang sebaiknya diketahui sebelumnya.
Ukurannya cukup besar: instalasi dasar memerlukan 143 megabita; dengan empat format, 303 megabita. Komponen terberat, sebesar 81 megabita, adalah pendeteksi jenis file, yang ikut dipasang bahkan dalam instalasi dasar. Itu tidak menjadi masalah untuk laptop, tetapi penting untuk fungsi cloud dengan batas ukuran.
Jangan mengandalkan mirror sebagai cadangan. Mirror yang diuji menyediakan indeks, dan file MarkItDown tersedia, tetapi satu dependensi wajib tidak ada, sehingga instalasi gagal pada Python 3.14 maupun 3.12.
Instalasi adalah hal kecil dibandingkan masalah utamanya. Jauh lebih sering, AI menghasilkan sesuatu yang tidak masuk akal karena hal yang salah, atau representasi yang salah dari hal tersebut, masuk ke jendela konteksnya. Kemampuan menentukan apa yang harus diberikan kepada model sebelum suatu tugas disebut rekayasa konteks, dan persiapan dokumen merupakan bagiannya.
Bagaimana cara mengubah dokumen pertama Anda menjadi teks?
Intisari utama
Satu perintah di terminal: nama program dan jalur file. Secara default, hasilnya ditampilkan langsung di jendela, sehingga Anda bisa langsung menyimpannya ke file. Ada tiga metode: tampilkan ke konsol, tulis dengan flag, atau teruskan file sebagai stream. Untuk menyematkannya ke dalam skrip sendiri, tersedia pembungkus Python tiga baris yang juga menerima URL.
Pilihan paling singkat:
markitdown dogovor.docx
Teks ditampilkan di terminal. Untuk menyimpannya ke file, ada dua cara:
markitdown dogovor.docx -o dogovor.md
markitdown dogovor.docx > dogovor.md
Perbedaannya nyaris tidak ada di Mac dan Linux, tetapi penting di Windows: pengalihan melalui > dapat membuat program macet ketika output berisi teks Kiril.
Anda dapat meneruskan file sebagai stream; dalam hal ini, petunjuk ekstensi berguna:
cat dogovor.docx | markitdown -x docx
Berikut flag utama dari bantuan versi 0.1.8:
| Flag | Fungsinya |
|---|---|
-o, --output | menulis hasil ke file alih-alih menampilkannya di jendela |
-x, --extension | petunjuk ekstensi saat file diteruskan sebagai stream |
-m, --mime-type | petunjuk jenis konten |
-c, --charset | petunjuk pengodean karakter |
-d, --use-docintel | pemrosesan melalui layanan cloud berbayar Microsoft |
-v, --version | menampilkan versi |
Bantuan yang sama mencantumkan tiga flag berguna lainnya, dan semuanya telah diuji: --list-plugins menampilkan plugin yang terpasang, -p mengaktifkannya untuk satu kali proses tertentu, dan --keep-data-uris mempertahankan gambar yang disematkan dalam dokumen di output (secara default, gambar tersebut dipotong). Sisanya adalah pengaturan untuk layanan cloud Microsoft.
Pembungkus Python hanya memerlukan tiga baris:
from markitdown import MarkItDown
md = MarkItDown()
print(md.convert("ostatki.xlsx").text_content)
Pemanggilan yang sama dapat menerima URL. Halaman sederhana menghasilkan teks bersih sepanjang 167 karakter, termasuk judul dan tautan, tanpa menu dan footer:
r = md.convert("https://example.com")
Format apa saja yang dipahami MarkItDown, dan apa artinya dalam praktik?
Intisari utama
Deskripsi proyek mencantumkan beragam format: file Office, PDF, gambar, audio, arsip, tautan YouTube, dan buku elektronik. Tiga item tidak berfungsi seperti yang tersirat dari namanya. Versi gratisnya sama sekali tidak memiliki pengenalan teks gambar. Ucapan dikirim ke mesin berbahasa Inggris. File yang tidak dapat diurai menghilang dari arsip tanpa peringatan.
Tabel ringkasan tentang klaim dan makna praktisnya.
| Format | Klaim | Yang sebenarnya terjadi |
|---|---|---|
| Word, Excel, presentasi | ya | berfungsi dengan rapi; inilah keunggulannya |
| CSV, JSON, XML, HTML | ya | berfungsi, tetapi CSV memiliki jebakan pemisah |
| ya | bergantung pada tata letak: satu kolom dapat dirangkai, dua kolom berantakan | |
| Gambar | “metadata dan pengenalan” | tidak ada pengenalan, hanya metadata atau model visi berbayar |
| Audio | “transkripsi ucapan” | dikirim ke mesin berbahasa Inggris milik Google |
| Arsip ZIP | “menelusuri isi” | apa pun yang tidak dapat diurai menghilang tanpa diketahui |
| Tautan YouTube | ya | hanya tautan lengkap dengan bentuk '<OFFICIAL_URL>'?... |
| Buku elektronik EPUB | ya | berfungsi |
Tiga item dijelaskan lebih terperinci.
Gambar. Deskripsi tersebut mencantumkan kata OCR, jadi orang mengira program ini dapat membaca teks dari foto. Tidak demikian. Program ini membaca metadata menggunakan program terpisah, exiftool, dan jika Anda menghubungkan model visi dengan kunci Anda sendiri, gambar dapat dikirim kepadanya untuk dideskripsikan.
Audio. Transkripsi ucapan tersedia, tetapi bahasanya tidak diteruskan, dan secara default mesin mengharapkan bahasa Inggris. Alat ini juga memanggil endpoint gratis Google yang tidak resmi, yang dibatasi hingga sekitar lima puluh permintaan per hari untuk tiap kunci.
Arsip. Program ini mengekstrak file ZIP dan menelusuri file di dalamnya, lalu menggabungkan hasilnya. Jika tidak dapat mengurai suatu file, kesalahannya ditangkap dan diabaikan. File itu tidak akan muncul dalam hasil, dan Anda tidak akan mengetahuinya.
Apa yang terjadi pada dokumen yang berisi teks Kiril?
Intisari utama
Tiga file yang berisi teks Kiril—kontrak Word, lembar inventaris Excel, dan presentasi—diproses dengan versi terbaru. Teks Kiril dan angkanya tetap utuh di ketiganya. Masalah muncul di tiga tempat: file CSV yang menggunakan titik koma, format mata uang dalam sel Excel, dan output konsol Windows. Ketiganya memiliki solusi.
File di bawah dibuat khusus untuk pengujian; datanya fiktif.
Lembar inventaris Excel juga keluar dengan rapi, dengan nama lembar dijadikan judul:
## Stock
| Item | In stock | Reserved | Available |
| --- | --- | --- | --- |
| Coffee beans, kg | 420 | 38 | 382 |
| Loose-leaf tea, kg | 180 | 52 | 128 |
Presentasi diubah menjadi teks, dengan nomor slide ditampilkan sebagai anotasi dan judul slide dijadikan heading. Teks Kiril juga utuh di sini. Klaim umum bahwa “MarkItDown tidak memahami Kiril” itu keliru.
Sekarang, tiga hal yang memang bermasalah.
CSV dengan titik koma. Dua ekspor faktur yang identik diproses untuk perbandingan. Ekspor yang menggunakan koma menghasilkan tabel empat kolom yang benar. Dengan titik koma, seluruh baris masuk ke satu sel.
Seluruh baris akhirnya berada dalam satu sel. Pengodean dikenali dengan benar, dan tidak ada kesalahan; flag -c tidak membantu. Model akan menerima tabel ini dan tidak akan memahami nilai mana yang merupakan jumlah dan mana yang merupakan status. Ekspor ulang file dengan pemisah koma yang eksplisit dan encoding yang tepat, sambil menjaga aslinya tetap utuh. Jangan mengganti titik koma secara global: pemisah dalam teks bertanda kutip dan koma desimal dapat menjadi bagian nilai. Jika ekspor ulang tidak tersedia, uraikan file asli dengan pemisah sebenarnya dan tulis CSV baru memakai writer yang memahami CSV serta mempertahankan pengutipan dan nilai sel. Sebelum analisis, bandingkan jumlah kolom, jumlah baris, dan total kontrol dengan ekspor sumber.
Format mata uang Excel. Simbol mata uang disimpan dalam pengaturan tampilan sel dan tidak menjadi bagian dari nilainya. Pengelola proyek telah mengonfirmasi penyebabnya. Untuk daftar harga atau faktur, ini penting: model akan melihat angka tanpa mengetahui mata uang yang diwakilinya.
Konsol Windows. Pada file dengan karakter non-Latin, program bisa macet.
Jejak kesalahan menunjukkan pengodean cp1251, yang berarti konsol Windows. Dokumen itu sendiri berhasil diurai; yang gagal adalah mencetak hasil di jendela terminal. Jadi ada dua solusi:
markitdown dogovor.docx -o dogovor.md
$env:PYTHONUTF8 = "1"; markitdown dogovor.docx > dogovor.md
Cara pertama sepenuhnya melewati konsol; cara kedua membuat Python menulis dalam UTF-8. Orang-orang telah mengirim perbaikan untuk masalah ini di alat itu sendiri setidaknya enam kali: beberapa usulan ditutup tanpa digabungkan, sementara sisanya masih terbuka. Jadi Anda harus menggunakan solusi sementara.
Gejala keempat muncul pada PDF: rangkaian seperti (cid:1090) menggantikan huruf. Ini berarti file tersebut memiliki tabel font nonstandar dan karakternya tidak dapat didekode. Tidak ada gunanya memproses dokumen seperti itu dengan MarkItDown; Anda perlu alat lain.
Mengapa PDF menghasilkan teks yang berantakan?
Intisari utama
PDF tidak memiliki struktur, hanya karakter dengan koordinat pada halaman. Teks satu kolom dapat dirangkai dengan cukup baik. Dua kolom berubah menjadi berantakan: baris-baris tersambung melintasi kolom, kata-kata menyatu, dan tata letaknya berubah menjadi tabel yang tidak pernah ada di dokumen. Alat ini sama sekali tidak mengidentifikasi judul dalam PDF—hal ini jelas dari kode sumber maupun pengukuran independen.
Untuk pengujian, sebuah makalah ilmiah dua kolom berukuran 2.16 megabita diproses. Kode keluarnya nol; setelah 0.9 detik, output berisi 88,000 karakter, hampir semuanya omong kosong. Delapan puluh delapan ribu karakter memberi kesan bahwa semuanya berhasil. Sampai Anda membuka filenya:
| | Hybrid | | OCR-LLM | | Framework |
| --- | ------ | -------- | ----------- | --- | ---------- |
...
Informationextractionfromcopy-heavydoc-
5202 tcO 11 ]LC.sc[ 1v83101.0152:viXra
Tiga hal bermasalah sekaligus. Tata letak dua kolom berubah menjadi tabel yang tidak ada dalam makalah. Kata-kata menyatu tanpa spasi. Baris terakhir adalah bilah sisi vertikal pada halaman yang diekstrak secara terbalik.
Lalu bagian yang lucu muncul. Ternyata makalah uji itu adalah penelitian yang mengukur MarkItDown dan membandingkannya dengan alat lain. Alat ini mengubah paragraf yang melaporkan pengukurannya sendiri menjadi seperti ini:
cues. This name-matching error could be miti- OCRpreprocessingoverhead(0.056s),whileDo-
gatedthroughpromptengineeringtoprovidemore clingandMinerUadoptmorecomputationallyin-
explicit matching instructions or fine-tuning the tensive strategies with OCR latencies of approxi-
Kolom kiri dan kanan tersambung baris demi baris. Model yang diberi teks seperti ini akan membaca separuh kalimat dari satu paragraf dan separuh lagi dari paragraf lain.
Penyebabnya bersifat teknis dan sederhana. Word secara eksplisit menyimpan “ini adalah judul” dan “ini adalah sel tabel”. PDF menyimpan “ini adalah karakter” dan “ini koordinatnya pada halaman”. Merekonstruksi struktur dari koordinat adalah tugas terpisah yang sulit, dan MarkItDown hampir tidak mencobanya. Kode sumber pengurai PDF tidak memiliki pendeteksi judul: jika sebuah halaman tidak dikenali sebagai formulir atau tabel, seluruh dokumen diproses dengan ekstraksi teks dasar.
Pengguna rutin melaporkan hal ini di repositori proyek, termasuk untuk makalah ilmiah dan tabel.
Alat ini tidak menemukan satu pun judul dalam PDF, persis seperti yang ditunjukkan kode sumbernya.
Angka “MarkItDown mencapai akurasi 82%” beredar online tanpa metodologi apa pun. Menelusurinya ke sumber asli tidak membuahkan hasil: rantai tautannya berakhir di halaman yang tidak dapat dimuat. Angka itu tidak dapat dianggap sebagai pengukuran.
Apa yang terjadi dengan kontrak hasil pindai?
Intisari utama
Tidak ada apa-apa. File diproses, program melaporkan keberhasilan, dan output berisi nol karakter. Tidak ada kesalahan, tidak ada peringatan. Hal ini diuji dua kali pada PDF yang dibuat dari gambar, dan secara terpisah pada gambar itu sendiri—hasilnya sama. Alat ini mengekstrak teks yang memang sudah tersimpan sebagai teks dalam file; versi gratisnya tidak memiliki kemampuan pengenalan.
Perilaku ini lebih berbahaya daripada yang lain karena tidak tampak seperti kegagalan.
Untuk pengujian, sebuah PDF dibuat dari gambar yang berisi teks—persis seperti yang Anda dapatkan ketika kontrak difoto atau dipindai. Pengujian diulang untuk memastikan hasilnya bukan kebetulan:
| Input | Kode keluar | Karakter dalam output | Pesan kesalahan |
|---|---|---|---|
| PDF dari gambar, uji 1 | 0 | 0 | tidak ada |
| PDF dari gambar, uji 2 | 0 | 0 | tidak ada |
| Gambar PNG secara langsung | 0 | 1 (ganti baris) | tidak ada |
Nol karakter dan nol kesalahan, dua kali berturut-turut. Kode keluar nol berarti “semuanya berjalan lancar”, dan skrip apa pun yang memeriksa keberhasilan berdasarkan kode keluar akan menganggap dokumen itu telah diproses. Lalu output kosong dikirim ke model, model tidak melihat apa pun, dan mulai mengarang jawaban dari udara kosong.
Perhatian
Jika Anda memproses dokumen secara massal, periksa panjang outputnya. Kode keluar tidak akan memberi tahu apa pun: file kosong dengan kode keluar nol adalah hasil yang akan tampak dari dokumen pindai.
Ada dua solusi, dan keduanya berbayar. Yang pertama adalah flag -d, yang mengirim dokumen ke layanan pengenalan cloud Microsoft; teks bantuan flag tersebut secara eksplisit menyatakan bahwa endpoint layanan yang valid diperlukan. Yang kedua adalah paket add-on terpisah yang mengirim halaman ke model visi menggunakan kunci Anda, sehingga Anda membayar penyedia model untuk setiap halaman. Sejak April 2026, sebuah diskusi terbuka tentang metode kedua melaporkan bahwa hanya halaman pertama dari dokumen pindai multipagina yang diproses.
Anda juga dapat menjalankan model pengenalan di komputer sendiri, tetapi itu proyek terpisah.
Untuk satu dokumen saja, lebih mudah membukanya dan menyalin teks secara manual. Untuk aliran dokumen pindai, Anda membutuhkan alat dengan kemampuan pengenalan bawaan.
Bisakah Anda mengunggah file begitu saja ke konverter online?
Intisari utama
Secara teknis, ya; ada banyak domain dengan nama ini. Namun, tidak satu pun berafiliasi dengan Microsoft. Klaim “file tidak pernah meninggalkan browser Anda” dapat diperiksa dengan satu klik, dan tidak selalu benar. Sebelum mengunggah kontrak atau ekspor yang berisi nama orang, periksa sendiri ke mana file itu dikirim.
“MarkItDown online” adalah salah satu saran pencarian paling umum, dan ada situs yang menawarkannya. Alat asli Microsoft sama sekali tidak memiliki situs web; alat ini hanya tersedia sebagai program yang Anda pasang sendiri. Apa pun dengan nama serupa yang terbuka di browser dibuat oleh pihak lain.
Anda dapat memeriksa layanan semacam itu dalam satu menit: buka alat pengembang pada tab permintaan jaringan, unggah file apa pun yang tidak berbahaya, lalu lihat apakah file itu dikirim ke server. Jika ya, klaim bahwa pemrosesan dilakukan di browser itu tidak benar, seberapa yakin pun klaim tersebut ditampilkan di FAQ.
Perhatian
Kontrak, faktur, atau ekspor yang memuat nama karyawan berisi data pribadi. Jika Anda mengirim file semacam itu ke situs web pihak ketiga, Andalah yang mengirimkannya. Utilitas lokal menghindari masalah tersebut: file tidak meninggalkan komputer Anda.
Itulah sebabnya MarkItDown dihargai saat dokumen tidak boleh dikirim ke luar organisasi. Dalam sebuah diskusi, seseorang menjelaskan situasinya: program sembarang dilarang di laptop kantor mereka, tetapi pustaka Python diizinkan, dan utilitas lokal ini ternyata satu-satunya pilihan yang tersedia.
Berapa banyak yang sebenarnya dihemat MarkItDown?
Intisari utama
Manfaat utamanya adalah model dapat memahami dokumen sama sekali. Ada juga perbedaan ukuran: perbandingan antara ukuran markup di dalam file Office dengan ukuran teks yang diekstrak menunjukkan pengurangan lima hingga tujuh kali lipat. Alat ini juga membuang semua yang tidak perlu dibaca model: deskripsi font, margin, dan warna sel.
File Office disusun sebagai arsip yang berisi markup. Jika Anda membongkar tiga file uji dan membandingkan ukuran bagian yang berisi konten dengan ukuran output, hasilnya seperti ini:
| File | Markup di dalam | Teks yang diekstrak | Kali lebih kecil |
|---|---|---|---|
| Kontrak Word | 3,701 byte | 711 byte | 5.2 |
| Spreadsheet Excel | 1,561 byte | 262 byte | 6.0 |
| Presentasi | 2,203 byte | 296 byte | 7.4 |
File-file ini berukuran kecil; proporsinya akan berbeda untuk file yang lebih besar, dan tidak ada satu angka penghematan yang berlaku untuk semua. Jika Anda menemukan angka bulat dalam artikel perbandingan, tanyakan metodologinya.
Para pengembang sendiri juga membahas penghematan: deskripsi proyek secara khusus menyebutkan bahwa konvensi Markdown sangat hemat karakter. Itu benar, tetapi bukan seharusnya menjadi nilai jual utama. Perbedaan antara “model menerima tiga ribu karakter, bukan lima belas ribu” dan “model menerima struktur yang jelas, bukan campur aduk” berada pada tingkatan yang berbeda. Yang pertama menghemat biaya; yang kedua menentukan apakah jawabannya masuk akal.
Jika Anda khawatir tentang penggunaan konteks, hal itu dibahas secara terpisah: Ke mana token pergi di Claude dan berapa banyak token yang termasuk dalam setiap paket.
Bagaimana cara menghubungkan MarkItDown ke Claude melalui MCP?
Intisari utama
Proyek ini memiliki paket terpisah yang menjalankan server MCP dengan satu perintah: berikan jalur file, dapatkan teks. Pada September 2026, paket ini akhirnya diperbarui ke 0.0.1a7, tetapi build-nya masih prarilis dan secara default mengirim telemetri ke Microsoft. Perintah di bawah menghubungkannya melalui uv, mematok versinya, menggunakan Python 3.12, dan menonaktifkan telemetri. Tidak ada autentikasi, dan menurut dokumentasinya sendiri, server dapat membaca file apa pun yang tersedia bagi pengguna yang meluncurkannya.
MCP adalah cara untuk memberi AI alat eksternal yang dapat digunakannya sendiri. Untuk gambaran umum mekanisme ini dan server lainnya, lihat ulasan server MCP untuk Claude Code.
Server MarkItDown menyediakan tepat satu alat: mengonversi dokumen menjadi teks. Server ini menerima jalur file lokal, URL halaman, atau data yang disematkan langsung dalam permintaan.
Server ini terhubung ke Claude Code dengan satu perintah, dengan versi server yang dipatok. Anda memerlukan pengelola paket uv:
claude mcp add --scope user --env 'ORT_DISABLE_TELEMETRY=1' --env 'UV_PYTHON=3.12' --transport stdio markitdown -- uvx markitdown-mcp@0.0.1a7
claude mcp list
Respons perintah kedua seharusnya menampilkan “Connected” untuk markitdown. Peluncuran pertama mengunduh sekitar tujuh puluh paket dan dapat memakan waktu hingga satu menit; setelah itu, server mulai dalam satu hingga satu setengah detik.
Berikut catatan kehati-hatiannya, dan masing-masing telah diperiksa secara manual.
Build 0.0.1a7 dirilis pada 14 September 2026. Sebelumnya, server ini tertahan di 0.0.1a4 dari Mei 2025 selama lebih dari setahun. Nomor versi terbarunya masih prarilis.
Server ini tidak dapat dipasang di semua sistem yang menjalankan versi Python terbaru. Mesin onnxruntime yang menjadi dependensinya tersedia untuk Python 3.14 di Mac hanya pada Apple Silicon dengan macOS 14 atau lebih baru, sehingga instalasi gagal pada Mac Intel dan pada macOS 13 atau lebih lama dengan Python 3.14. Di Mac Apple Silicon, server ini dijalankan pada Python 3.14, 3.13, dan 3.12, dan berhasil dipasang pada ketiganya. Perintah ini menggunakan UV_PYTHON=3.12: paket prabina untuk 3.12 tersedia di Windows, Linux, dan Mac Apple Silicon, dan jika versi Python tersebut belum ada, uv akan mengunduhnya. Ada catatan juga untuk Mac Intel: uv akan membangun pustaka cryptography dari kode sumber karena sejak Juni 2026 tidak ada paket prabina untuk Intel. Instalasi memerlukan waktu lebih lama dan bisa gagal.
Versi MarkItDown yang dipasang di dalamnya bergantung pada versi uv. Mulai dari MarkItDown 0.1.6, ekstra [all] memerlukan pustaka Azure prarilis: uv 0.12 dan versi setelahnya memasangnya beserta MarkItDown 0.1.8 terbaru, sedangkan versi uv yang lebih lama menurunkan versi ke 0.1.5. Periksa versi uv Anda dengan uv --version.
Ada dua hal yang dikirim ke luar komputer. Yang pertama adalah telemetri: di Mac dan Linux, mesin onnxruntime di dalam server secara default mengirimkannya ke Microsoft. Variabel ORT_DISABLE_TELEMETRY=1 dalam perintah menonaktifkannya. Dalam pengujian, tanpa variabel tersebut server terhubung ke endpoint telemetri Microsoft. Dengan variabel itu ditetapkan, tidak ada koneksi sama sekali saat file diproses dari disk.
Yang kedua adalah audio. Server mengirim file WAV, MP3, M4A, dan MP4 ke layanan pengenalan ucapan Google untuk ditranskripsikan melalui HTTP biasa, tanpa enkripsi. Sebaiknya jangan mengirim rekaman percakapan dengan klien melalui layanan itu.
Dokumen besar tidak muat diproses dengannya. Sebuah diskusi terbuka menjelaskan respons server sebesar 51,000 token yang mencapai batas 25,000 token, dan alat ini tidak membagi file menjadi beberapa bagian.
Dan soal keamanan. Dokumentasi paket itu sendiri menyatakan dengan jelas:
Server ini tidak mendukung autentikasi dan berjalan dengan izin pengguna yang meluncurkannya. Alat konversi ini dapat digunakan untuk membaca file apa pun yang dapat diakses oleh pengguna server, atau data apa pun di jaringan.
Dengan kata lain, agen yang memiliki alat ini dapat membaca apa pun yang dapat Anda baca. Ini dapat diterima untuk pekerjaan di komputer sendiri. Anda tidak boleh mengekspos server tersebut secara publik atau memberikannya kepada agen yang tidak tepercaya.
Perhatian
Dokumentasi proyek tidak menyertakan konfigurasi khusus untuk Claude Code—dokumentasi itu hanya menjelaskan Claude Desktop dan cara menjalankannya melalui kontainer. Jika Anda menemukan konfigurasi siap pakai online yang disebut “dari dokumentasi resmi” untuk Claude Code, perlu diketahui bahwa konfigurasi semacam itu tidak ada di repositori.
Untuk pekerjaan rutin, lebih mudah menjalankan program dengan sebuah perintah dan menaruh teks hasilnya di proyek. File itu kemudian berada di samping materi lainnya, tempat model dapat merujuknya dengan sendirinya.
Kapan lebih tepat menggunakan alat lain?
Intisari utama
Aturannya sederhana: jika struktur sudah tercatat di dalam file, gunakan MarkItDown—alat ini paling cepat dan gratis. Jika strukturnya harus direkonstruksi dari gambar halaman, gunakan alat dengan model tata letak. Docling menangani tabel dan tata letak rumit, MinerU menangani rumus dan banyak kolom, sedangkan layanan cloud berbayar membantu ketika tidak ada waktu untuk repot mengaturnya.
Perbandingan berdasarkan tugas; jumlah bintang GitHub tidak ada hubungannya:
| Alat | Keunggulan | Biaya yang harus dibayar |
|---|---|---|
| MarkItDown | file Office, kecepatan, gratis | tidak dapat menangani PDF rumit atau hasil pindai |
| Docling | tabel dan tata letak melalui model khusus | puluhan detik per dokumen |
| MinerU | banyak kolom, rumus, tabel padat | lebih sulit dipasang |
| Marker | akurasi tinggi, rumus, ilustrasi | memerlukan kartu grafis, dan lisensinya membatasi pendapatan |
| unstructured | mengembalikan struktur dokumen dalam beberapa bagian beserta deskripsi | output lebih sulit digunakan |
| Pengurai cloud | tanpa konfigurasi | biaya dan pengiriman dokumen ke luar komputer Anda |
Ada detail tentang Marker yang tidak disebutkan dalam artikel perbandingan. Sejak Juli 2026, kodenya sendiri menggunakan lisensi permisif, sedangkan bobot modelnya menggunakan lisensi terpisah dengan ambang batas: penggunaannya gratis jika pendapatan perusahaan Anda pada tahun sebelumnya tidak melebihi lima juta dolar dan dana yang dihimpun juga tidak melebihi jumlah yang sama. Klausul terpisah melarang penggunaan oleh siapa pun yang membangun produk pesaing. Ini tidak penting bagi kebanyakan pembaca, tetapi menjadi alasan bagi bisnis yang sedang berkembang untuk membaca lisensinya sebelum mengadopsi alat ini.
Hasilnya adalah alur kerja praktis empat langkah:
- Proses semuanya dengan MarkItDown—alat ini gratis dan seketika.
- Buka hasilnya dan periksa ukurannya.
- Jika teksnya masuk akal, tugas selesai; tidak ada hal lain yang diperlukan.
- Jika outputnya berantakan atau kosong, proses file tersebut saja dengan alat yang lebih berat.
Dengan begitu, Anda hanya membayar biaya waktu dan kerumitan untuk dokumen yang memang memerlukannya.
Bagaimana cara memasukkan MarkItDown ke dalam alur kerja Anda?
Intisari utama
Anthropic sendiri menyatakan aturan ini dalam deskripsi skill-nya: gunakan alat ini untuk membaca dokumen. Jangan merencanakan penyuntingan berdasarkan hasilnya. Berikut tiga skenario yang langsung bermanfaat sejak penggunaan pertama: mengurai kumpulan dokumen serupa, menambahkan materi referensi tetap ke proyek AI sekali saja, dan menyiapkan ekspor dari sistem akuntansi untuk dianalisis.
Anthropic menggunakan MarkItDown dalam skill siap pakainya sendiri untuk bekerja dengan file Office, dan skill tersebut menjelaskan batasan yang sebaiknya Anda ikuti sepenuhnya:
Periksa lembar dengan cepat: markitdown file.xlsx. Koordinat sel tidak tersedia, jadi jangan merencanakan penyuntingan berdasarkan hasil ini.
Referensi sel dan halaman hilang dari teks, sehingga Anda tidak dapat menggunakannya untuk mengubah file sumber. Berikut tiga skenario.
Sekumpulan dokumen serupa—akta, faktur, formulir, permohonan. Masukkan semuanya ke dalam folder dan proses dengan satu baris:
for f in dokumenty/*.docx; do markitdown "$f" -o "text/$(basename "$f" .docx).md"; done
Kemudian berikan folder berisi file teks kepada model dan minta model menyusun informasi yang relevan menjadi tabel. Ini berfungsi dengan file digital; hasil pindai akan gagal, dan Anda akan langsung mengetahuinya dari ukurannya yang nol.
Materi proyek tetap—daftar harga, templat kontrak, kebijakan, deskripsi layanan. Konversikan semuanya ke teks sekali saja dan letakkan bersama proyek. Model kemudian dapat membacanya setiap kali ada permintaan, sehingga Anda tidak perlu melampirkan file ke percakapan setiap saat. Artikel tentang mengunggah file ke Claude menjelaskan perbedaannya dengan mengunggah file ke dalam chat.
Ekspor dari sistem akuntansi. Ekspor Excel dari perangkat lunak akuntansi atau rekening bank berubah menjadi tabel dalam sepertiga detik, dan model dapat menghitung berdasarkan data itu tanpa pekerjaan tambahan. Pastikan CSV diekspor atau diuraikan dengan pemisah, pengutipan, dan encoding yang sebenarnya, lalu bandingkan baris, kolom, dan total kontrol sebelum memberikannya kepada model. Jangan menormalkan pemisah dengan cari-dan-ganti. Catat juga mata uang secara eksplisit: simbol yang hanya tersimpan pada format sel Excel tidak bertahan dalam ekstraksi.
Memproses PDF besar di terminal tidak termasuk dalam daftar ini. Itu masalah terpisah terkait penggunaan konteks, yang dibahas dalam artikel tentang PDF di Claude Code tanpa kehilangan token. Jika Anda baru menyiapkan ruang kerja, mulai dengan memasang Claude Code.
Untuk langsung memulai, jalankan pip install 'markitdown[pdf,docx,xlsx,pptx]', proses kontrak Word pertama yang Anda temukan, lalu periksa ukuran hasilnya. Dalam setengah menit, Anda akan tahu apakah alat ini berfungsi dengan file Anda.
Pertanyaan yang sering diajukan
Apakah MarkItDown gratis?
Ya. Alat ini berlisensi MIT, tanpa batasan penggunaan komersial. Anda hanya membayar untuk dua metode opsional: pengenalan cloud oleh Microsoft melalui flag -d, dan deskripsi gambar oleh model visi menggunakan kunci Anda sendiri. Semua hal lainnya berjalan gratis di komputer Anda.
Apakah data dikirim ke server mana pun?
Untuk konversi biasa file Office dan PDF, tidak—semuanya diproses secara lokal. Ada tiga pengecualian: transkripsi audio melalui layanan Google, flag -d mengirim dokumen ke cloud Microsoft, dan deskripsi gambar dikirim ke model dengan menggunakan kunci Anda. Tidak satu pun metode ini diaktifkan secara otomatis.
Mengapa saya tidak dapat menemukan perintah markitdown setelah instalasi?
Paling sering, program dipasang di lingkungan yang tidak termasuk dalam jalur pencarian Anda. Periksa jalur lengkap ke file tersebut di dalam lingkungan itu. Kasus umum lainnya adalah Anda memasangnya untuk satu versi Python, tetapi memanggilnya dengan versi lain. Satu jebakan lagi: pada versi Python di bawah 3.10, paket kosong dipasang tanpa kesalahan instalasi.
Apa yang harus saya lakukan jika melihat (cid:1090) dan rangkaian serupa sebagai pengganti huruf?
Ini adalah tabel font yang tidak terdekode di dalam PDF. Pengaturan tidak akan memperbaikinya; Anda perlu memproses file tersebut dengan alat lain, seperti Docling atau MinerU. Untuk satu dokumen saja, menyalin teks secara manual dari penampil dokumen lebih cepat.
Bisakah saya memproses seluruh folder file sekaligus?
Tidak ada mode folder terpisah, tetapi Anda dapat melakukannya dengan loop terminal satu baris: for f in papka/*.docx; do markitdown "$f" -o "$f.md"; done. Pilihan lain adalah memasukkan semuanya ke dalam ZIP dan memberikan arsip tersebut: program akan memproses isinya, tetapi file yang tidak dapat diurai akan menghilang tanpa peringatan.
Apa perbedaan output ini dengan menyalin teks secara manual?
Output mempertahankan struktur. Penyalinan menghasilkan teks datar yang membuat judul tidak dapat dibedakan dari paragraf dan membuat tabel berantakan. MarkItDown mempertahankan judul, daftar, dan tabel, sehingga model dapat membedakan setiap bagian. Perbedaannya kecil untuk satu dokumen pendek, tetapi menentukan untuk dua puluh dokumen.
Bisakah MarkItDown membuka dokumen yang dilindungi kata sandi?
Tidak. File yang dilindungi kata sandi tidak akan terbuka, dan Anda tidak dapat memberikan kata sandinya kepada program. Anda harus menghapus perlindungan terlebih dahulu melalui aplikasi yang menerapkannya.
Sumber
- MarkItDown - repositori proyek di GitHub
- MarkItDown di PyPI - versi dan tanggal rilis
- markitdown-mcp - deskripsi server MCP
- Anthropic Skills - penggunaan MarkItDown untuk tabel
- Docling - penguraian dokumen dengan model tata letak
- MinerU - penguraian tata letak PDF rumit
- Marker - lisensi bobot model
- pandoc - konverter markup
Jika sudah siap, kenali Ailoot.
Rincian selengkapnya
Pertanyaan tentang Cara Mengubah File PDF dan Word Menjadi Teks untuk AI: MarkItDown dari Microsoft
Bisakah memperbaiki CSV bertitik koma dengan mengganti setiap titik koma menjadi koma?
Tidak. Teks dalam tanda kutip dan format desimal dapat mengandung karakter tersebut. Ekspor ulang dengan pemisah yang dimaksud, atau gunakan parser dan writer CSV dengan pemisah, encoding, dan pengutipan eksplisit; verifikasi kolom, baris, dan total kontrol terhadap aslinya.
Apakah kode keluar nol berarti PDF dikonversi secara berguna?
Tidak. Contoh hasil pindai pada artikel mengembalikan keluaran kosong tanpa kesalahan, dan PDF kompleks menghasilkan teks tak terbaca. Buka hasilnya, periksa panjang dan strukturnya, lalu gunakan alat tata letak atau pengenalan jika teks hasil ekstraksi kosong atau kacau.