Docling İncelemesi: IBM’in Belgeleri Markdown’a Dönüştüren Aracının PDF’lerinize Gerçekte Ne Yaptığı

Son güncelleme: July 17, 2026
Docling İncelemesi: IBM’in Belgeleri Markdown’a Dönüştüren Aracının PDF’lerinize Gerçekte Ne Yaptığı
AI Özeti
Bu Docling incelemesi, IBM’in belgeden Markdown’a dönüştürücüsünü bir web scraper’ı değil, bir belge işleme araç seti olarak açıklıyor. Yazı; PDF ve Office belge dönüşümünü, tablo yapısı geri kazanımını, OCR davranışını, seyrek sayfa sınıflandırmasını, model boyutunu ve soğuk-sıcak çalışma süresi farkını test ediyor. Makale, Docling’in özellikle tablo kurtarma gibi yapılandırılmış belge çıkarımındaki gücünü vurgularken, model boyutu ve ilk çalıştırma maliyetleri konusunda da açık sözlü davranıyor. Ayrıca seyrek sayfaların yeterli bağlam yoksa yanlış sınıflandırılabileceği uyarısını yapıyor. Sonuç olarak, PDF’ler ve belge arşivleri için Docling’in daha ağır model tabanlı hattının buna değip değmeyeceğine karar veren ekipler için pratik bir rehber sunuyor.

Docling sürekli web scraper’larla aynı kategoriye konuyor, ama aslında öyle değil. Bu araç, IBM Research kökenli — şimdi LF AI & Data Foundation çatısı altındaki bir proje — bir belge dönüştürme araç seti. Elinizde zaten موجود olan dosyaları (PDF, DOCX, PPTX, XLSX, HTML, görseller) alıp bunları Markdown ya da JSON formatına çeviriyor. Kendi sloganı bile doğrudan şu: "Get your documents ready for gen AI."

Yani bu yazı bir tarayıcıyı değil, bir dönüştürücüyü uygulamalı olarak inceliyor. Aşağıdaki tüm sonuçlar tek bir CPU-only makinede ölçüldü (macOS arm64, Python 3.14.2, Docling 2.111.0); skorlar script’lerden alındı ve başarısızlıklar başarısızlık olarak kaydedildi. Repo devasa ve her gün değişiyor — 63,069 yıldız, 4,449 fork ve metadata’yı çektiğim günle aynı gün yapılmış bir push — bu yüzden burada gördüğünüz sürüm veya hata sayısını sabit bir değer değil, anlık bir görüntü olarak değerlendirin.

Docling Gerçekte Nedir, Nedir Değildir?

Docling’de her şeyin temel birimi DoclingDocument’tir: bir dosyayı önce bu yapıya ayrıştırırsınız, ardından Markdown, HTML, DocTags ya da kayıpsız JSON olarak dışa aktarırsınız. Kod MIT lisanslıdır (tek tek model lisansları değişebilir), kökeni IBM Research Zurich’e dayanır ve bu yazı yazılırken en güncel sürüm, ben bu testi çalıştırmadan iki gün önce yayımlanan v2.112.0’dır.

Docling belgeleri Markdown veya JSON’a dönüştürür; bir crawler değildir

Öne çıkan yetenek PDF ve görsel işleme yoludur. Bu yol basit bir string ayrıştırma değildir; RT-DETR düzen modeli, TableFormer tablo yapısı modeli, isteğe bağlı bir vision-language modeli ve taramalar için RapidOCR’den oluşan bir makine öğrenmesi yığınıdır. Bu modeller sayfa düzenini, okuma sırasını ve tablo yapısını geri kazanır. İncelemeye değer olan kısım da tam olarak burasıdır; yalnızca HTML üzerinde yapılan bir test bunu hiç gösteremez.

Bir ayrım, bir haftalık kafa karışıklığını engeller. Docling hiçbir şey çekmez. JavaScript render etmez, anti-bot engellerini aşmaz, crawl yapmaz. Dosyayı siz getirirsiniz; anlamlandırmayı o yapar. Tarama başka bir aracın işidir; bu nokta ileride insanların Docling’in Firecrawl’ın yerini alıp almadığını sorduğunda önem kazanacak (almıyor — birbirini tamamlıyorlar; nedenini birazdan anlatacağım).

İlk Çalıştırmada Sizi Kimse Uyarmıyor

pip install docling Python 3.14.2 üzerinde sorunsuz tamamlanıyor. Sonra sanal ortamınıza bakıyorsunuz ve boyut 1.3 GB. Docling, siz yalnızca HTML dönüştürüyor olsanız bile tüm ML yığınını zorunlu bağımlılık olarak çekiyor:

Docling model footprint: 506 MiB, not the symlink double-counted 1060.2 MB

BağımlılıkDiskteki boyut (MiB, du)
torch (2.13.0)536
opencv (cv2)119
transformers (5.8.1)101
scipy99
sympy76
pandas72
rapidocr (+ paket içi modeller)75.6
docling_parse30

Bu, tek bir PDF bile dönüştürmeden önceki durum. Asıl sürtünme ilk PDF dönüştürmede başlıyor; çünkü modellerin indirilmesi o zaman gerçekleşiyor. Sıfırdan oluşturulmuş, izole bir HuggingFace önbelleğinde ilk PDF dönüştürme yaklaşık 224 saniye sürdü — ve bunun neredeyse tamamı hesaplama değil, indirme süreciydi. Düzen + TableFormer modelleri diskte toplam yaklaşık 506 MiB yer kaplıyor (342 MiB TableFormer + 164 MiB layout, du ile doğrulandı) ve RapidOCR yaklaşık 40 MB PP-OCRv4 ağırlığını site-packages içine indiriyor. Aynı dosyanın ikinci dönüştürmesi? 0.55 saniye. Modeller önbelleğe alınıyor; bedeli bir kez ödüyorsunuz.

Docling cold versus warm conversion: first run about 224 seconds, warm run 0.55 seconds

Göz ardı etmeniz gereken bir sayı var: coldstart script’i model_download_mb olarak 1060.2 yazdırıyor. Bunu footprint olarak alıntılamayın. Sebebi, os.walk’un sembolik bağlantıları da takip etmesi; HuggingFace önbelleği her model dosyasını bir kez blobs/ altında saklıyor ve sonra snapshots/ üzerinden sembolik bağlantıyla yeniden gösteriyor — dolayısıyla yürüyüş 14 model dosyasını iki kez sayıyor. du ile uyumlu, symlink’ler çıkarılmış gerçek değer yaklaşık 506 MiB’dir (yalnızca blobs: 505.4 MiB). Docling’i benchmark eden herkes için çıkarım şu: indirme baytlarını ve diskteki baytları ayrı ayrı rapor edin, çünkü bunlar aynı şey değil.

Docling ile konteyner hazırlayanları vuran ikinci bir ayrıntı daha var. Ağırlıklar iki farklı yerde ve iki farklı zamanlamayla indiriliyor. Layout ve TableFormer modelleri HF_HOME ayarını dikkate alıyor ve ilk PDF dönüştürmede indiriliyor. RapidOCR’nin modelleri ise buna uymuyor — doğrudan …/site-packages/rapidocr/models/ içine gidiyor ve önbellek ayarlarınızı tamamen bypass ediyor. Bir imajı önceden hazırlıyor ya da air-gap ortamda çalıştırıyorsanız, iki önbelleği de ayrıca yönetmeniz gerekir; HF_HOME ayarlamak ikinci kısmı yakalamaz.

Ama hakkını verelim. Docling’in önceki sürümlerinden farklı olarak proje artık docling-slim sürümünü de sunuyor — torch’u çekmeden HTML için pip install docling-slim[format-html] yapmanızı sağlayan, yaklaşık 50 MB’lık çekirdek paket. Yani varsayılan docling meta paketi için 1.3 GB’lık ağırlık gerçektir; fakat artık bundan kaçınmak mümkün. Varsayılan paketi test ettim çünkü pip install docling hâlâ bunu getiriyor; ancak bu şişkinlik çözülmemiş bir kusur değil — modüler çözüm mevcut ve #2393 numaralı issue altında takip ediliyor.

Kurulum sırasında küçük ama sinir bozucu bir ayrıntıya da takıldım: import docling; docling.__version__ çalıştırınca AttributeError: module 'docling' has no attribute '__version__' hatası alıyorsunuz. Yani modül sürüm bilgisini doğrudan expose etmiyor. Çalışan yöntem importlib.metadata.version("docling"); bu da '2.111.0' döndürüyor. Küçük bir DX rahatsızlığı, Temmuz 2026’dan beri upstream’de issue #3733 olarak açık.

Tablo Doğruluğu: TableFormer’ın Parladığı Yer

İnsanların düz bir PDF-to-text dökümüne karşı Docling’i tercih etmesinin asıl nedeni tablolar; bu yüzden makine tarafından okunabilir ground truth içeren yedi tablo PDF’i ürettim ve çıktıyı hücre hücre puanladım. İki metrik önemli ve bunlar aynı şey değil: cell recall, ground truth değerlerinin tespit edilen tablonun herhangi bir yerinde bulunma oranıdır; in-row rate ise bunların doğru satıra yerleşme oranıdır. Bu ikisini karıştırmak aracı olduğundan iyi gösterir; bu yüzden ikisini de veriyorum:

Docling TableFormer table fidelity: 5 detected tables, cell recall 1.00, in-row 0.97

Tablo (zorlayıcı durum)Tespit edildiCell recallIn-row rateNot
T1 basit çerçeveli ızgara (5×8), sayfada tek başınaHayır0.0<!-- image --> olarak sınıflandırıldı, tüm hücreler düştü
T2 çerçevesiz (yalnızca header çizgisi)Evet1.001.00kusursuz, birebir ızgara
T3 birleştirilmiş 2 seviyeli colspan başlığıEvet1.000.97tüm değerler bulundu; bir başlık değeri bir satır kaydı
T4 birleştirilmiş rowspan satır etiketi, sayfada tek başınaHayır0.0<!-- image --> olarak sınıflandırıldı
T5 colspan başlığı + çerçevesiz yapıEvet1.000.97tüm değerler bulundu; T3’tekiyle aynı başlık-satır kayması
T6 finansal tablo, boş sütun, sağa hizalıEvet1.001.00boş sütun korundu, kaymadı
T7 geniş 12 sütunlu ızgaraEvet1.001.00geniş tabloda sütun kayması yok

Docling’in tespit ettiği beş tabloda ground truth’taki tüm değerler geldi — cell recall her yerde 1.00. Bu beş tablonun üçünde tüm değerler doğru satıra da yerleşti. Çok seviyeli başlık içeren iki durumda (T3 ve T5) ise bir başlık değeri orijinal satırından kaydı ve in-row oranı 0.97’ye düştü — yani veri tamamen mevcut, yalnızca katmanlı başlıklarda satır ataması biraz sarsılıyor.

Zor yapısal vakalar beklediğimden daha iyi dayandı. İki seviyeli colspan başlığı GitHub-flavored Markdown’a doğru biçimde düzleştirildi ("Q1 2026" etiketi, kapsadığı iki sütunun üzerinde tekrarlandı; colspan’i GFM’ye çevirmenin doğru yolu da budur). Sadece başlık çizgisi olan çerçevesiz ızgara (T2) aynen korundu. Geniş 12 sütunlu tablo (T7) kaymadı. Ve tamamen boş bir finansal sütun (T6), atılmak ya da birleştirilmek yerine boş hücreler olarak korundu. Bu, resmî TableFormer TEDS skorlarıyla uyumlu: 95.4 basit, 90.1 karmaşık, 93.6 tüm tablolar — model kartı, Camelot (73.0) ve EDD (88.3) ile karşılaştırıldığında oldukça iyi bir performans gösteriyor.

Birleştirilmiş hücreler konusunda temkinli olun; çünkü bunun tersini söyleyen açık bir issue var. #3698 numaralı issue, V1 ve V2’nin birleştirilmiş satır ve sütunları doğru işlemekte zorlandığını bildiriyor. Benim testlerimde basit colspan (T3/T5) ve rowspan değerleri doğru şekilde düzleştirildi; yalnızca yukarıda bahsettiğim çok seviyeli başlık satır kayması görüldü. Ancak #3698’deki başarısızlıklar düzensiz çok satırlı/çok sütunlu birleştirmeler ve çok sayfalı tablolar gibi patolojik uç örnekler. Benimkiler ise basit tarafta kalıyor. Dolayısıyla doğru ifade dar kapsamlıdır: basit colspan ve rowspan burada kurtarıldı (çok seviyeli başlıklarda bir satır kayma olabilir); karmaşık ve düzensiz birleştirmeler ise hâlâ belgelenmiş açık bir sorun. Ne “birleştirilmiş hücreler çalışıyor” ne de “birleştirilmiş hücreler bozuk.”

Tuzak: Sayfada Tek Başına Duran Tablo Kaybolabilir

Tabloya tekrar bakın — T1 ve T4 hiç tespit edilmedi. Docling <!-- image --> üretti ve hiçbir hata vermeden tüm hücreleri düşürdü. T1, gayet sıradan çerçeveli 5×8 bir ızgara. Bunun tablo ayrıştırma zayıflığı olduğunu söylemeden önce neyin bunu tetiklediğini ayırmak istedim, bu yüzden script ile bir A/B testi kurdum.

Docling sparse page A/B: isolated table becomes picture, with context becomes table

Önce bariz açıklamaları eledim. Metin katmanı sağlam — pypdfium2, T1’den 327 karakter ve T4’ten 221 karakter okuyor; yani bunlar taranmış görüntü değil, gerçek dijital PDF’ler. OCR’yi kapatmak (do_ocr=False) işe yaramıyor; tablolar yine düşüyor. DoclingDocument’ı doğrudan inceleyince len(doc.tables) == 0 ve len(doc.pictures) == 1 çıkıyor — yani layout modeli tüm tablo bölgesini bir Picture olarak sınıflandırmış.

Sonra belirleyici test geldi. Aynı T1 ve T4 tablolarını bu kez birkaç sıradan paragrafla çevreleyip yeniden dönüştürdüm. İkisi de kusursuz geldi: len(doc.tables) == 1, doğru GFM tabloları üretildi ve T4b’nin "North" satır etiketi üç satır boyunca doğru şekilde tekrarlandı. Aynı tablo. Değişen tek şey, tablonun boş bir sayfada tek başına durup durmadığıydı.

O hâlde asıl uyarı TableFormer’ın kırılgan olması değil; Docling’in RT-DETR layout modelinin sayfa bağlamını kullanması ve küçük bir tablonun neredeyse bomboş bir sayfada tek başına kalınca Picture olarak okunup sessizce atılabilmesi. Bu pratikte çok kolay yaşanır; çünkü fatura, teknik föy ve kırpılmış çıktıların tam olarak görünümü budur: sayfa başına bir tablo, etrafta metin yok. Çözüm basit ve etkili — layout modeline sayfa bağlamı verin ya da dönüştürmeden sonra doc.tables değerini kontrol edip tablo sayısı sıfır olan sayfaları işaretleyin. Bu durum #3495 numaralı issue ile yakından ilişkili (aynı tablonun hem Table hem Picture olarak algılanması) ama sayfa seyrekliği tetikleyicisini — aynı tablo, tek başına kalınca düşüyor, metin içinde kalınca dönüştürülüyor — yayımlanmış halde bulamadım. Ölçülmüş, daha önce belgelenmemiş; kimsenin bilmediği bir bug değil.

Gerçek Taramalarda OCR: EasyOCR Değil, RapidOCR

Taranmış PDF’ler, birçok dönüştürücünün sessizce tökezlediği alanlardır; bu yüzden Docling’e ölçülmüş 0 karakterlik metin katmanı olan iki gerçek tarama verdim — pypdfium2, kurtarılabilir karakter sayısını sıfır olarak raporluyor; yani çıkan sonuçların hepsi OCR, gizli bir metin katmanının yan ürünleri değil.

Tek sayfalık ocr_test.pdf, CPU üzerinde 14.3 saniyede temiz şekilde geri geldi: "Docling bundles PDF document conversion to JSON and Markdown in an easy self contained package," ifadesi birebir kurtarıldı. Dört sayfalık nemotron_multipage.pdf ise dört sayfanın hepsinde OCR çalıştırdı; toplam süre 70.1 saniye oldu (17.5 sn/sayfa) ve test cümlesini her sayfada tekrar etti. Varsayılan OCR otomatik olarak devreye girdi — ek bayrak gerekmedi, ayar gerekmedi.

İncelemelerin çoğunun yanlış anlattığı kritik ayrıntı şu: varsayılan OCR motoru EasyOCR değil, RapidOCR. Bunu ilk çalıştırmada indirilen PP-OCRv4 .pth ağırlıklarını izleyerek doğruladım. Mevcut blogların ve eski Docling SSS metinlerinin çoğu hâlâ varsayılanın EasyOCR olduğunu söylüyor; bu bilgi güncel değil. EasyOCR artık yalnızca opsiyonel bir eklenti. Ancak değişmeyen uyarı şu: OCR büyük ölçekte yavaştır ve burada gördüğünüz tüm süreler CPU-only bir tavan değer; GPU bunu ciddi biçimde düşürür.

Gerçek PDF’ler, Okuma Sırası ve Sayfa Başı Süre

Sentetik testler belirli davranışları kanıtlar; gerçek PDF’ler ise aracın gerçekten işe yaradığını gösterir. İki dijital doğumlu akademik makale çalıştırdım — 9 sayfalık Docling teknik raporu ve 15 sayfalık "Attention Is All You Need"; ikisi de iki sütunlu, tablolar ve formüller içeriyor.

15 sayfalık Attention makalesinde beş bölüm işaretinin tamamı — Abstract, Introduction, Background, Conclusion, References — iki sütunlu düzende bile düzleştirilmiş Markdown içinde belge sırasıyla görünüyor. Her içerik ipucu (Transformer, encoder, BLEU, multi-head) mevcut ve meşhur çok sütunlu sonuç tabloları dört tespit edilmiş tablo olarak kayda geçiyor. Bu, gerçek okuma sırası ve sütun birleştirme geri kazanımıdır; RAG parçalama için temel değer de budur — iki sütunlu bir sayfayı iç içe geçmiş anlamsızlığa çeviren bir linearizer ile belgeyi mantıklı şekilde parçalayamazsınız.

Zamanlama beklenmedik bir ders veriyor. Sayfa başı süreyi belge uzunluğu değil, her sayfadaki yapısal yoğunluk belirliyor. Daha yoğun olan 9 sayfalık rapor, sayfa başına 14.95 saniye ile 15 sayfalık makaleden (sayfa başına 5.99 saniye) daha yavaş çıktı; çünkü içinde daha fazla tablo ve şekil var ve bunların her biri ekstra layout ve TableFormer çıkarımı tetikliyor. Yani CPU üzerinde “sayfa başına saniye”, uzunluktan çok yapısal yoğunluğun bir fonksiyonudur. Bu tek bir CPU-only çalıştırmadır; üretim değeri değil, üst sınırdır.

Çoklu Format ve Kayıpsız JSON İddiası

Docling birleşik çoklu format ayrıştırma sunduğunu söylüyor; bu yüzden bilinen içerik ve ground truth ipuçları içeren bir DOCX, bir XLSX ve bir PPTX ürettim, ardından iki şeyi kontrol ettim: ipuçları Markdown’da görünüyor mu ve export_to_dict() üzerinden JSON round-trip sırasında korunuyor mu?

DosyaDönüştürme snMD’de bulunan ipuçlarıMD’deki tablo sayısıİpuçları JSON’da korunuyor mu
report.docx (başlıklar + birleştirilmiş "Total" tablosu + madde işaretleri)0.1377/71Evet
workbook.xlsx (2 sayfa, boş sütun)0.0166/62Evet
deck.pptx (3 slayt, madde işaretleri + tablo)0.0386/61Evet

Tüm içerik ipuçları Markdown’a ulaştı, tablolar geri kazanıldı (DOCX’teki birleştirilmiş "Total" satırı ve XLSX’in iki sayfası dahil) ve her ipucu export_to_dict() JSON’unda da korundu — temiz girdiler üzerinde en azından kayıpsız DoclingDocument iddiası için önemli kanıt bu. Bu formatlar ML modelleri yerine formatın kendi arka plan mekanizmaları üzerinden işleniyor; bu yüzden onlarca milisaniyede tamamlanıyor ve tamamen çevrimdışı çalışıyor. Kapsam dürüst: format başına bir temiz dosya genişliği gösterir, patolojik Office dosyalarında stres testi yaptığını değil.

HTML: Sadık, Ama Temiz Değil

Bu, Docling’in RAG pipeline’ınıza girip girmeyeceğine karar veren nokta; dikkatle okuyun. Docling tüm HTML belgesini dönüştürür. Readability tarzı bir ana içerik çıkarımı yapmaz. Site çerçevesinden ne kadar şeyin korunduğunu, Docling’in kendi çıktısında nav, TOC, cookie ve footer işaret satırlarını sayarak ölçtüm.

SayfaBoş olmayan MD satırıBoilerplate satırı% boilerplateMakale şu satırda başlıyor
Wikipedia "Web scraping"2553413.3%28
scrapethissite/forms6311.6%
books.toscrape6500.0%
quotes.toscrape3500.0%

Wikipedia gibi çok fazla arayüz öğesi olan bir sayfada Markdown satırlarının yaklaşık %13’ü nav/TOC/footer boilerplate’idir ve gerçek makale 28. satırdan sonra başlar — çıktı “move to sidebar / Contents / Toggle the table of contents” ile açılır ve “CS1 maint… / Search Wikipedia” ile kapanır. Temiz içerik sayfalarında (books, quotes) bu oran yaklaşık %0’dır; yani bu bir sayfa başı vergi değil, şablon çerçevesi problemidir. Docling size temiz ana makale çıkarımı değil, sadık ama tam belge Markdown’ı verir. Upstream, HTML’deki bu “mobilya” sorununu issue #1865 (kapalı) ve #1930 (açık) altında takip ediyor.

Bunu adil tutan iki nokta var. İlki, HTML tarafında Docling hiçbir ML modeli çalıştırmaz — basit bir pipeline üzerinde BeautifulSoup backend’i kullanır. Sayfanızı "görsel modeller okuyor" hikâyesi yalnızca PDF ve görseller için geçerlidir; Docling’e HTML verdiğinizde layout ve TableFormer mekanizmalarının hiçbiri devreye girmez. İkincisi, PDF yolunda header ve footer furniture sınıflandırması yapılır; bu yüzden “hiç boilerplate temizleme yok” demek fazla iddialı olur — şablon çerçevesini geri veren spesifik olarak HTML backend’idir.

Diğer Araçlarla Karşılaştırma ve Thunderbit’in Konumu

Web Veri Çekimi için Thunderbit’i Deneyin

İnsanların Docling’i karşılaştırdığı temel araç Firecrawl’dır; bu yüzden burada bir konumlandırma tablosu veriyorum. Başta küçük bir not önemli: bu, dokümantasyon seviyesinde bir karşılaştırmadır; aynı makinede yapılmış bir benchmark değildir. Firecrawl’ı bu test dosyalarında çalıştırmadım. Burada yalnızca Docling sütunu ölçülüdür; Firecrawl sütunu ise kendi kamuya açık dokümantasyonundan alınmıştır.

BoyutFirecrawl (dokümanlarına göre)Docling (burada ölçülen)
Temel işCanlı web’i crawl + scrape edip Markdown’a dönüştürürZaten elinizde olan belgeyi Markdown/JSON’a dönüştürür
Fetch / JS render / anti-botEvet (barındırılan tarayıcı)Hayır — dosyayı siz sağlarsınız
Ana içerik çıkarımıEvetHayır — tam belgeyi sadık biçimde verir (Wikipedia’da ~%13 çerçeve)
PDF tablo yapısı (ML)sınırlıEvet — TableFormer (resmî TEDS 93.6; tespit edilen örneklerde cell recall 1.00, in-row 0.97–1.00)
Taranmış PDF / OCRsınırlıEvet — varsayılan RapidOCR (0 metin katmanlı taramayı kurtardı)
Format kapsamıweb sayfalarıPDF/DOCX/PPTX/XLSX/HTML/EPUB/görseller
Dağıtımbarındırılan API (+ self-host)yerel pip kütüphanesi, çevrimdışı, API anahtarı yok
Kurulum ağırlığıAPI anahtarı / hafif istemcivarsayılan kurulumda 1.3 GB + ~506 MiB modeller (veya docling-slim)
Lisansticari / source-availableMIT

Tek cümlelik özet şu: Veriniz canlı web üzerindeyse ve crawling, JS render ve ana içerik temizliği gerekiyorsa Firecrawl doğru araçtır. Elinizde belge zaten varsa — özellikle PDF, tarama ve tablo ağırlıklı Office dosyaları — Docling doğru araçtır; çevrimdışı, yapıyı koruyan ve gerçek tablo ile OCR anlayışına sahip bir dönüşüm sunar. Birbirini tamamlarlar. Gerçekçi bir pipeline’da biriyle crawl edilir, diğeriyle belgeler dönüştürülür.

Burada kendi ürünümüz olan Thunderbit için de net olayım; çünkü burada çalışıyorum ve aksi halde sizi yanıltmaya çalışıyormuşum gibi görünmesi haklı bir şüphe olur. Thunderbit ve Docling aynı işi yapmıyor; bunu zorla eşitlemeyeceğim. Geliştiriciler için Thunderbit, bir AI scraping API’si + MCP server + CLI’dir ve çalışma birimi canlı web sayfasıdır: POST /distill bir URL’yi temiz, LLM’ye hazır Markdown’a çevirir (Docling’in açıkça dokunmadığı JS render, anti-bot ve CAPTCHA süreçlerini ele alır); POST /extract ise tanımladığınız JSON Schema üzerinden şemaya uyan yapılandırılmış JSON döndürür. Bu, bir RAG pipeline’ının fetch-and-clean kısmıdır. Docling ise yerel belge tarafıdır — PDF, tarama, diskinizde zaten duran elektronik tablo. Kaynağınız web sayfalarıysa Thunderbit’in API’sini, MCP araçlarını (thunderbit_suggest_fields, thunderbit_distill, thunderbit_extract) ya da CLI’ını (npx @thunderbit/thunderbit-cli) kullanın. PDF ve taramalar varsa Docling’i kullanın. İkisi de varsa — ki gerçek pipeline’ların çoğu böyledir — birlikte kullanın; hiçbirinin diğerinin yerine geçmeye çalıştığı yok.

Son Hüküm: Geçici, Üzerinde Çalışılacak Noktalarla Birlikte

Size tek bir 0–100 puan vermeyeceğim; çünkü burada ağırlıklı toplam yapmak, Docling’in hiç iddia etmediği şeyler için (örneğin crawling) ceza yazıp bunları karşılaştırılabilir sanmak olur. Test ettiğim örnekler bazında, boyutlara göre değerlendirme şöyle:

  • Kurulum / ilk çalıştırma: ağır — 1.3 GB venv, ~506 MiB modeller, ilk PDF’de ~224 sn, sıcak çalıştırmada ~0.55 sn — ama docling-slim bu ağırlığı seçmeli hale getiriyor.
  • Tablo doğruluğu: tablo tespit edilirse güçlü (5/5’te cell recall 1.00, in-row 0.97–1.00), bu örneklerde resmî TEDS anlatısıyla uyumlu.
  • Tablo tespiti sağlamlığı: seyrek sayfa tuzağı — izole bir tablo Picture olarak düşebilir. doc.tables kontrol edin.
  • Taranmış belge / OCR: çalışıyor; varsayılan RapidOCR, fakat büyük ölçekte yavaş.
  • Çoklu format: sağlam, JSON round-trip bozulmuyor.
  • HTML: sadık, ama temiz değil — ana içerik çıkarımı yok.
  • Geliştirici deneyimi: missing __version__ dışında temiz, 3 satırlık API ve düzenli bir DoclingDocument.

Kimin için: PDF, tarama ve Office dosyaları üzerinde RAG ya da veri pipeline’ı kuran ve çevrimdışı, yapıyı koruyan dönüştürme ile gerçek tablo + OCR anlayışı isteyen ekipler. Kimin için değil: canlı web crawling ya da temiz ana makale HTML çıkarımı isteyenler — bunun için başka araç gerekir.

Ve bu bir inceleme olduğu için, lansman metni gibi davranmayacağım; sınırlamalar da açık kalacak. Bu, TEDS ölçeğinde bir doğruluk benchmark’ı değil; tek bir CPU-only makinede yapılan, 7 sentetik tablo + 2 gerçek PDF içeren hedefli bir probe. Test etmediğim ve bir pipeline’ı Docling’e emanet etmeden önce sizlerin de test etmesi gereken birkaç konu var: isteğe bağlı VLM (GraniteDocling) yolu, gerçek docling-slim footprint’i, herhangi bir GPU koşumu, karmaşık ve düzensiz birleştirilmiş hücreler ile çok sayfalı tablolar, formülün LaTeX’e birebir dönüşüm doğruluğu ve — üretimde sizi en çok şaşırtabilecek olan — toplu kullanımda bellek büyümesi, thread/GIL ölçeklenmesi ve binlerce dönüşüm boyunca nesne yaşam döngüsü dayanıklılığı. Docling, iddia ettiği şeylerde güçlü; pazarlama değil ölçüm konuşuyor; ama güvenmeden önce haritalamanız gereken gerçek sınırları da var. Seyrek sayfa uyarısını bilin, ilk çalıştırma indirmesi için bütçe ayırın ve büyük ölçekteki davranışı kendiniz doğrulayın.

Web Veri Çekimi için Thunderbit’i Deneyin Get Started Free

SSS

Docling bir web scraper ya da crawler mı? Hayır. Docling, zaten elinizde olan belgeleri — PDF, DOCX, PPTX, XLSX, HTML, görseller — Markdown ya da JSON’a çevirir. URL çekmez, JavaScript render etmez, anti-bot mekanizmalarını işlemez. Canlı web’i crawl etmek Firecrawl veya Thunderbit’in web API’si gibi araçların işidir; Docling sizin verdiğiniz dosyadan başlar.

Docling kurulumu ve ilk indirme ne kadar büyük? Varsayılan docling meta paketi, tam ML yığınını zorunlu bağımlılık olarak çektiği için yaklaşık 1.3 GB’lık bir venv oluşturur (yalnızca torch 536 MiB). İlk PDF dönüştürme, diske yaklaşık 506 MiB layout ve TableFormer modeli ile yaklaşık 40 MB RapidOCR ağırlığı indirir ve yaklaşık 224 saniye sürer — bunun neredeyse tamamı indirme süresidir. İkinci dönüştürme yaklaşık 0.55 saniyedir. Yalnızca hafif formatlara ihtiyacınız varsa, docling-slim (yaklaşık 50 MB çekirdek) ağır yolu atlar.

Docling OCR yapıyor mu, hangi motoru kullanıyor? Evet. Metin katmanı olmayan taranmış bir PDF’de OCR otomatik olarak devreye girer ve benim testimde metni temiz biçimde kurtardı. Varsayılan motor EasyOCR değil, RapidOCR’dir — eski yazılarda sık yapılan bir hata budur. EasyOCR artık isteğe bağlı bir eklentidir. OCR, özellikle CPU üzerinde, büyük ölçekte yavaş kalır.

Docling neden tablomı resme dönüştürdü ya da tamamen düşürdü? Büyük olasılıkla seyrek sayfa etkisi. Docling’in RT-DETR layout modeli sayfa bağlamını kullanır ve neredeyse boş bir sayfada tek başına duran küçük bir tablo Picture olarak sınıflandırılıp hata vermeden düşebilir. Aynı tabloyu gövde metniyle çevrelediğinizde sorunsuz dönüştürülür. Çözüm, layout modeline sayfa bağlamı vermek ya da dönüştürmeden sonra doc.tables değerini kontrol edip tablo sayısı sıfır olan sayfaları işaretlemektir.

Docling mi Firecrawl mı — hangisini kullanmalıyım? Farklı işler; bu yüzden çoğu zaman ya o ya bu değildir. Firecrawl canlı web’i tarar, JavaScript render eder ve ana içeriği çıkarır. Docling ise elinizde zaten bulunan belgeleri, gerçek PDF tablo yapısı ve OCR desteğiyle, tamamen çevrimdışı dönüştürür. Kaynağınız web sayfalarıysa bir web aracı kullanın (Firecrawl ya da Thunderbit’in API/MCP/CLI’si). PDF, tarama ya da Office dosyalarıysa Docling kullanın. Gerçek pipeline’ların çoğu ikisini birlikte çalıştırır.

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.

Thunderbit'i dene

Potansiyel müşterileri ve diğer verileri sadece 2 tıkla topla. Yapay zekâ destekli.

Thunderbit'i al Ücretsiz
Yapay Zekâ ile Veri Çıkar
Verileri kolayca Google Sheets, Airtable veya Notion'a aktar
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week