markdownify, 1.8 MiB ile markitdown'ın ürettiği tablo satırı sayısını eşitledi

Son güncelleme: August 17, 2026
markdownify, 1.8 MiB ile markitdown'ın ürettiği tablo satırı sayısını eşitledi
AI Özeti
markitdown ile paylaşılan dört HTML örneğinde, markdownify bizim sayacımıza göre üretilen Markdown tablo satırı sayısında aynı sonucu verdi — 36’ya karşı 36 — ve kontrol edilen 16 içerik dizisinin tamamını kurtardı. 21.062 token’lık çıktısı teknik olarak en düşük değerdeydi; ancak ilk üç dönüştürücü arasında fark %1,3’ün altındaydı. Kurulumu 1,8 MiB, lisansı MIT ve anlık ölçümde GitHub yıldız sayısı 2.235’ti. Bu kategoride en az konuşulan kütüphane ve bu sayılara bakınca benim tercih edeceğim seçenek. Bu örneklere benzeyen bir Python iş yükü için markdownify ile başlayın.

markitdown ile paylaşılan dört HTML örneğinde, markdownify bizim sayacımıza göre üretilen Markdown tablo satırı sayısında aynı sonucu verdi — 36’ya karşı 36 — ve kontrol edilen 16 içerik dizisinin tamamını kurtardı. 21.062 token’lık çıktısı teknik olarak en düşük değerdeydi; ancak ilk üç dönüştürücü arasında fark %1,3’ün altındaydı. Kurulumu 1,8 MiB, lisansı MIT ve anlık ölçümde GitHub yıldız sayısı 2.235’ti.

Bu kategoride en az konuşulan kütüphane ve bu sayılara bakınca benim tercih edeceğim seçenek.

markdownify nedir

markdownify, BeautifulSoup üzerine kurulu bir Python HTML’den Markdown’a dönüştürücüsüdür. Mimari bununla sınırlı: BeautifulSoup ile ayrıştır, ağacı dolaş, Markdown üret. Test edilen sürüm: 1.2.3, MIT, 2.235 yıldız, 42 açık sorun, son sürüm 2026-06-30 — aktif olarak sürdürülüyor, toplam 44 sürüm.

Resmi referans: python-markdownify resmi deposu.

System diagram: HTML to Markdown Path

API tek bir fonksiyondan ibaret:

from markdownify import markdownify
md = markdownify(html)

Öğe davranışını özelleştirmek isterseniz sınıf tabanlı bir kullanım (MarkdownConverter) da var; ayrıca başlık biçimi, madde işareti karakterleri, kod dili algılama, öğe ayıklama gibi yararlı seçenekler sunuyor. Ama pratikte en yaygın kullanım tek satırlık çağrı ve gayet iyi çalışıyor.

pip install markdownify 5 paket ve 1,8 MiB indiriyor, soğuk içe aktarma süresi ise 0,046 s — denediğim üç dönüştürücü arasında en hızlısı. Bağımlılık ağacı BeautifulSoup ve onun olağan yardımcıları; birçok Python projesinde bunlar zaten bulunduğu için ek maliyet çoğu zaman neredeyse sıfır.

Ölçüm yöntemi

Bunu, aynı temelde markitdown için daha önce kullanılan dört HTML örneği üzerinde çalıştırdım; beraberinde o paketin önceden tanımlanmış probe dizileri vardı — hayatta kalıp kalmadığını kontrol etmek için test edilen 16 tam içerik dizisi ve sayfa iskeletine ilişkin ek kontroller. Beşinci örnek olan Nothing but tables, ayrı bir tablo-ağır tanılama setidir ve aşağıdaki dört örnekli toplamın dışında tutulmuştur.

Dönüştürücüİçerik probe’larıÇıktı karakteriToken (o200k)Markdown tablo satırıBağlantı
markdownify16/1676.86821.06236599
html2text16/1676.45221.17632545
markitdown16/1676.99521.33636598
turndown16/1695.18826.2360611

fourway-scores.json. Dört örnek, token’lar o200k_base ile sayıldı; tablo satırları dört örnek boyunca tek bir kuralla hesaplandı — buna, yayınlanan değerle birebir eşleşen markitdown saklı çıktısının yeniden sayımı da dahil.

Üç şey özellikle öne çıkıyor.

Üretilen tablo satırı sayısında markitdown ile berabere. Dört ortak örnekte, aynı sezgisel kuralla sayıldığında her ikisi de 36 satır üretti. Bu, hücre hücre birebir eşdeğerlik kanıtı değildir; yalnızca iki çıktının bu sayaca göre aynı sayıda tanınabilir Markdown tablo satırı sunduğunu gösterir.

En düşük token sayısına sahip. 21.062 token; html2text’in 21.176’sının ve markitdown’ın 21.336’sının biraz altında, turndown’ın 26.236’sından ise %19,7 daha düşük. İlk üçü birbirine %1,3 içinde; ben bunu zaferden çok beraberlik olarak değerlendiririm. Asıl fark turndown’a karşı.

Tüm içerik probe’ları geçti. Hepsi 16/16. Diğer üçü de öyle; yani içerik korunumu bu kütüphanelerin ayrıştığı yer değil.

Doğru çıktığı tablo

Dönüştürücülerin birbirinden ayrıldığı yer hokey istatistikleri örneği. markdownify:

| Team Name | Year | Wins | Losses | OT Losses | Win % | ... |
| --- | --- | --- | --- | --- | --- | --- |
| Boston Bruins | 1990 | 44 | 24 |  | 0.55 | ... |

Başında ve sonunda dikey çizgiler olan standart GFM biçimi, bir ayraç satırı ve — 24 ile 0.55 arasındaki boş hücreye dikkat — boş hücreyi atlamak yerine olduğu gibi yayıyor. Bu küçük bir ayrıntı gibi görünebilir ama değildir: boş hücreyi düşüren bir dönüştürücü, sonrasındaki tüm değerleri yanlış sütuna kaydırır; dışarıdan bakınca tablo yine geçerliymiş gibi görünür.

System diagram: Preserve Table Meaning

turndown aynı girdide her değeri sütun yapısı olmadan ayrı birer paragraf olarak verir. html2text ise dış dikey çizgiler olmadan, farklı bir tarzda doğru bir tablo üretir.

Markdown bir modele gidecekse, dikey çizgiler ve korunan boş hücre, Boston’un kaç maç kaybettiği sorusuna tahmin yürütmeden yanıt verebilmesini sağlar.

turndown’ın yapmadığı iki şeyi yapıyor

Tablo doğruluğu gözle görülen fark. Ama bundan daha önemlisi var ve neredeyse kimse bundan bahsetmiyor.

markdownify, <script> ve <style> içeriklerini temizliyor. turndown ise temizlemiyor. Yalnızca bu öğelerin içinde geçen işaretlere bakarak saydığınızda, markdownify çıktısı örnekler genelinde sıfır script işareti ve sıfır style işareti taşıyor; turndown’ın çıktısında ise 10 ve 84 var. Wikipedia örneğinde bu, 59.561 karakter ile 74.939 karakter arasındaki fark demek — ve MediaWiki’nin satır içi JavaScript yapılandırması ile CSS’sine ait 8 satır, bu farkın 14.644 karakterini, yani %95’ini oluşturuyor (script-style-stripping.json).

Bir modele beslenen her şey için bu, tüm karşılaştırmadaki en pahalı fazlalık: JavaScript yapılandırma bloğu token tüketir ama hiçbir bilgi taşımaz. markdownify bunu siz istemeden kaldırır. html2text de aynı şeyi yapar.

Örnek bazında bakınca, markdownify ile html2text basit tablolarda birebir aynı davranır; yapı karmaşıklaştıkça ayrışırlar:

Örnekmarkdownifyhtml2text
Hokey istatistikleri27 satır27 satır
Wikipedia9 satır5 satır
Nothing but tables (ayrı tanılama)62 satır59 satır

markdownify, her iki tanılama karşılaştırmasında da daha fazla tanınan satır üretiyor. Özellikle Wikipedia örneğinde, bu sayaca göre html2text’in 5 satır tuttuğu yerde 9 satır koruyor. Bu, özellikle iç içe ve düzensiz tablolar için temsilî örnekleri gözden geçirmeniz gerektiğine dair faydalı bir uyarıdır; ancak üretilen her hücrenin semantik olarak doğru olduğunu kanıtlamaz.

Kurulum ve lisans, alternatiflerle yan yana

KütüphanePaketDiskSoğuk içe aktarmaLisansYıldızSon sürüm
markdownify51,8 MiB0,046 sMIT2.2352026-06-30
html2text10,2 MiB0,077 sGPL-3.0-or-later2.1682025-04-15
turndown3 (npm)8,8 MiB0,056 sMIT11.3862026-04-03

Resmi referans: markdownify on PyPI.

install-and-import.json ve metadata-snapshot.json. Her kütüphane kendi boş ortamına kuruldu.

html2text disk üzerinde dokuz kat daha küçük ve GPL-3.0-or-later lisansına sahip. Dağıtılan bir ürün için bunu lisans sahibinin değerlendirmesi gereken bir kontrol noktası olarak düşünün; bu yazı hukuki tavsiye değildir. markdownify ise MIT lisanslıdır; bu genellikle daha esnek kabul edilir, ancak yine de normal uyumluluk incelemesine dahil edilmelidir.

1,8 MiB değeri, projeniz zaten BeautifulSoup kullanıyorsa biraz nominal kalır; birçok Python web kazıma projesinde durum böyledir — böyle bir durumda markdownify’ın ek maliyeti neredeyse yoktur.

markdownify’ın sürüm temposu bu üçlü arasında en sağlıklısı: 44 sürüm ve testten altı hafta önce yapılmış bir güncelleme; buna karşılık html2text’in son sürümü Nisan 2025’te.

Tek satırlık Python gerçekte ne kazandırıyor

Kütüphanenin tamamı markdownify(html) çağrısıdır ve bu çağrının sizin yerinize hangi kararları verdiğini açıkça söylemek gerekir; çünkü bu karşılaştırmada öne çıkan üç karar bunlardır.

BeautifulSoup ile ayrıştırır, istenmeden <script> ve <style> öğelerini kaldırır ve dış dikey çizgiler ile korunmuş boş hücreler içeren GFM tarzı tablo üretir. Yalnızca ayrıştırıcı soy ağacı, bozuk girişlerde nasıl davranacağını garanti etmez; bu konu aşağıda ayrı olarak ölçülmüştür.

Bunların hiçbiri sizin ayarladığınız seçenekler değildir. Varsayılan davranış bunlardır ve turndown’ın varsayılanının JavaScript’i olduğu gibi bırakıp html2text’in varsayılanının 78 karakterde sert satır kırması gibi bir kategoride, kutudan çıktığı haliyle düzeltme gerektirmeyen bir kütüphane tek başına değerlidir.

İhtiyaç duyduğunuzda seçenekler vardır — heading_style, bullets, code_language, öğe izinlisteleri ve yasaklisteleri için strip ve convert, öğe bazında özel davranış için MarkdownConverter. Burada ölçülen hiçbir şey bu seçenekleri kullanmadı.

Bellek ve bozuk HTML’nin etkisi

Measured results chart: markdownify: memory and malformed input

Daha geniş stres testi bağlamı on kütüphaneli bellek ve bozuk HTML karşılaştırmasında.

Bu serideki her incelemenin daha önce test edilmemiş olarak bıraktığı iki konu şimdi ölçüldü.

Tepe bellek kullanımı, /usr/bin/time -l ile, her hücre için temiz bir süreç — import tabanı, kütüphanenin yüklenmiş ve boşta dururken maliyetini gösterir; tepe değerler ise belgeyi de içerir.

KütüphaneÇalışma ortamıImport tabanı226 KB tepe10 MB tepe
html2textpython3.1418.719.971.2
pyquerypython3.1430.333.9172.5
resiliparsepython3.1420.525.1225.1
markdownifypython3.1423.928.9278.5
goose3python3.1444.152.4398.5
cheerionode2266.876.5398.5
justextpython3.1430.336.6431.2
newspaper4kpython3.1452.661.8668.5
trafilaturapython3.1452.564.8927.1
turndownnode2247.868.42947.1

memory-results.json. Python ve Node taban çizgileri birbirleriyle doğrudan karşılaştırılabilir değildir; her ikisinin içinde de yorumlayıcı bulunur.

markdownify orta noktada yer alıyor: 23,9 MiB taban ve 10 MB’lık bir belgede 278,5 MiB. Bu, html2text’in tepe değerinin 3,9 katı ve turndown’ın yaklaşık onda biri; BeautifulSoup üzerinde kurulmanın karşılığı bu.

Bozuk HTML. Her biri yalnızca bir şeyi bozan on iki belge — kapatılmamış etiketler, yanlış iç içe geçmiş satır içi öğeler, boşluk içeren tırnaksız öznitelikler, tek başına kapanış etiketleri, hiç <html> olmaması, yinelenen öznitelikler, etiket ortasında kesilmiş belge, bozuk entity’ler, kapatılmamış <script>, yanlış charset bildirimi, işaretleme içeren bir yorum ve 600 katmanlı iç içe yapı — ayrıca eşleşen boyutlarda iki düzgün biçimlendirilmiş kontrol örneği; çünkü “hiçbir şey döndürmedi” ifadesi, ancak kütüphane aynı boyutta temiz bir belgede de sessiz değilse, bozukluk hakkında anlam taşır.

markdownify, kırık örneklerin 1/14’ünde hata verdi ve 0 durumda boş döndü; bozuk örnekler genelinde 33 belirtecin 30’unu kurtardı (malformed-results.json). Bu sayıya bir örnek dahil edilmedi: HTML5’e göre kapatılmamış bir <script> sonrasındaki her şey script içeriğidir; dolayısıyla orada kaybolması doğrudur ve onu geri getirmek sapma olur.

Artılar ve eksiler

Lehine. Aynı kuralla sayıldığında markitdown ile eşit tablo satırı doğruluğu. Dört arasında en düşük token sayısı. MIT. 1,8 MiB ve BeautifulSoup zaten yığınınızdaysa ek maliyet neredeyse sıfır. 0,046 s ile en hızlı soğuk içe aktarma. Aktif sürüm takvimi. Boş tablo hücrelerini koruyor. MarkdownConverter üzerinden öğe bazında geçersiz kılınabilir dönüşüm. Tek satırlık sade çağrı doğru tercih.

Aleyhine. BeautifulSoup’a bağlı olduğu için, sizde zaten yoksa html2text’e göre disk üzerinde dokuz kat daha büyük. 2.235 yıldız, turndown’a kıyasla daha küçük bir topluluk demek — sıra dışı bir sorunla karşılaştığınızda daha az örnek. Yalnızca Python, yani Node yığınında yardımcı olmaz. Ve 42 açık sorun.

Kim kullanmalı, kim kullanmamalı

Bu tür Python iş yüklerinde markdownify ile başlayın; özellikle girdileriniz bu örneklere benziyorsa. Bu sayaçta markitdown ile aynı tablo satırı sayısını veriyor, en düşük token grubunda yer alıyor ve MIT lisanslı. Zaten BeautifulSoup’a bağlıysanız ek kurulum yükü küçük olabilir; yine de kendi ortamınızda gerçek bağımlılık farkını doğrulayın.

Alternatif olarak html2text’i değerlendirin eğer bağımlılık bütçeniz yüzbinlerce bayt düzeyinde ölçülüyorsa ve çıktısının biçimi sayfalarınız için uygunsa. Dağıtımdan önce GPL-3.0-or-later lisansını lisans sahibinizle gözden geçirin.

markitdown’ı düşünün eğer zaten PDF veya Office belgelerini de dönüştürüyorsanız. Bu karşılaştırmada HTML sonuçları aynı sayıda tablo satırı üretti, ancak daha geniş içerik doğruluğunun eşdeğer olduğu gösterilmedi.

Node tarafında kullanmayın; orada doğal seçenek turndown’dır — ama turndown-plugin-gfm ile birlikte kurulu olmalıdır, çünkü turndown’ın çekirdeği tek başına hiç tablo üretmez.

Yönetilen API burada nereye oturur

markdownify, elinizde zaten bulunan HTML’i dönüştürür. Sayfayı çekmez, JavaScript render etmez, anti-bot katmanını aşmaz — bu dört dönüştürücünün hiçbiri bunları yapmaz; pek çok gerçek hedefte işin daha zor yarısı da zaten budur.

Beş dönüştürücünün tamamında aynı örnekler için beşli HTML’den Markdown’a karşılaştırmaya bakabilirsiniz.

Thunderbit içindeki geliştirme yığınımız bu üst akış işini çözüyor: POST /distill bir URL alıp Markdown döndürür, POST /extract ise şema biçimli JSON verir. İkisi de bir MCP sunucusu ve CLI üzerinden erişilebilir; fiyat bilgisi Thunderbit fiyatlandırma sayfasında. Bu barındırılan uç noktalar yerel dönüştürücülerle karşılaştırılmadı; dolayısıyla bu bir kategori ayrımıdır, performans karşılaştırması değil.

Dürüst çerçeve şu: HTML sizdeyse ve Markdown istiyorsanız, markdownify ücretsizdir ve işi buradaki seçeneklerin en iyisi kadar iyi yapar. Ama sayfaları çekiyorsanız ya da düz metin yerine satır yapısı istiyorsanız, bu bambaşka bir satın alma kararıdır.

Daha geniş alan için, web scraping API derlememiz barındırılan seçenekleri, açık kaynak scraper rehberi ise kendi barındırdıklarınızı kapsıyor. Python’da HTML’yi Markdown’a dönüştürme ise pratik anlatımdır.

Web Verisi Çıkarmak için Thunderbit’i Deneyin

markdownify kullanılmalı mı?

Python için, girdileriniz bu örneklere benziyorsa güçlü bir aday; ama varsayılanınız yapmadan önce kendi tablolarınız ve bozuk sayfalarınız üzerinde test edin.

Bu sayaçta markitdown ile berabere kalıyor, en düşük token kümesinde yer alıyor, bu çalışmada en hızlı içe aktarılıyor ve MIT lisanslı. Buna karşılık html2text’ten daha fazla bellek kullandı, sadece Python’da çalışıyor ve bozuk girişli örneklerden birinde hata verdi. Disk kullanımı ve lisans da seçimde önemli faktörlerdir, tek kriter değildir.

Dikkat çeken şey yıldız sayısı. turndown beş kat daha fazla ilgi görüyor ama kutudan çıktığı haliyle markdownify’ın doğru işlediği tabloların hiçbirini işlemez. Bu kategoride popülerlik, ölçülen davranışı yakalamıyor; bu karşılaştırmayı yapmaya değer kılan ana nedenlerden biri de buydu.

Web Verisi Çıkarmak için Thunderbit’i Deneyin Get Started Free

SSS

markdownify gerçekten HTML üzerinde markitdown kadar iyi mi?
Bu dört örnekte, her biri 36 tanınmış Markdown tablo satırı üretti, kontrol edilen 16 dizinin tamamını kurtardı ve karakter sayısı bakımından %0,2 içinde çıktı verdi. Bu, hücre düzeyinde veya render eşdeğerliği testi değildir. markitdown ayrıca PDF ve Office biçimlerini de işler; dolayısıyla bu karşılaştırma yalnızca ölçülen HTML çıktılarıyla ilgilidir.

BeautifulSoup gerekiyor mu?
Evet — ayrıştırıcısı odur ve 1,8 MiB’ın büyük kısmını da bu oluşturur. Projeniz zaten BeautifulSoup kullanıyorsa markdownify’ın ek maliyeti küçüktür. Kullanıyorsanız ve disk gerçekten kritikse, html2text tek paketle 0,2 MiB’tır; bedeli ise GPL-3.0-or-later lisansıdır.

Boş tablo hücrelerini nasıl ele alıyor?
Olduğu gibi çıkarır. Veride boşlukların bulunduğu örnekte, çıktı boş hücreyi doğru konumda tutar; böylece sonraki tüm değerler kendi sütununda kalır. Boş hücreleri atlayan bir dönüştürücü ise hâlâ geçerli görünen ama tüm değerleri bir sütun sola kaymış bir tablo üretir; daha kötü bir hata da budur çünkü bunu işaret eden hiçbir şey yoktur.

Fonksiyonu mu sınıfı mı kullanmalıyım?
Yaygın kullanım için markdownify() fonksiyonu. Belirli bir öğenin nasıl dönüştürüleceğini özelleştirmeniz gerekiyorsa MarkdownConverter. Burada ölçülen her şey, varsayılan seçeneklerle sade fonksiyonu kullandı.

Burada ne test edilmedi?
Dört ortak örnek ve bir yalnızca tablo tanılaması, temsilî bir veri kümesi değildir. Ayrı bozuk HTML seti 12 isimlendirilmiş bozulma türünü ve iki kontrol örneğini kapsadı; ama bozuk HTML’nin her biçimini değil. İç içe listeler, tanım listeleri, dipnotlar, matematik, Markdown’dan HTML’e geri dönüşler, hücre düzeyinde tablo eşdeğerliği, yapılandırma varyantları ve dönüştürme hızı karşılaştırılmadı.

Ke
Ke
Thunderbit’ta CTO | Kıdemli Veri Bilimci ve ML Uzmanı Makine öğrenimi ve veri bilimi alanında yaklaşık on yıllık deneyime sahip olan Ke Shen, Columbia University mezunu ve Walmart Labs’te eski Kıdemli Veri Bilimci’dir. Python, R, Java ve İstatistik konularında derin ve meslektaşları tarafından tanınan uzmanlığıyla, karmaşık yapay zekâ algoritmalarını teoriden üretim düzeyinde mimariye taşıma konusunda sahada test edilmiş içgörüler paylaşır.
İçindekiler
Thunderbit · AI web veri ajanı

Herhangi bir sayfadan 1 tık içinde veri çıkar

250.000+ kullanıcı tarafından güveniliyor
ücretsiz plan mevcut
Web sayfasından tabloya
İhtiyacını anlat — Thunderbit’in AI Ajanı bunu çeker ve Excel, Google Sheets, Airtable veya Notion’a aktarır. Başlamak ücretsiz.
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week