Docling İncelemesi: IBM’in Belgeyi Markdown’a Dönüştüren Aracı PDF’lerinize Gerçekte Ne Yapıyor?

Son güncelleme: August 12, 2026
Docling İncelemesi: IBM’in Belgeyi Markdown’a Dönüştüren Aracı PDF’lerinize Gerçekte Ne Yapıyor?
AI Özeti
Bu Docling incelemesi, IBM’in belgeyi Markdown’a dönüştüren aracını bir web kazıyıcıdan ziyade belge işleme araç seti olarak ele alıyor. PDF ve ofis belgelerinin dönüştürülmesini, tablo yapısının geri kazanımını, OCR davranışını, seyrek sayfa sınıflandırmasını, model boyutunu ve soğuk/sıcak çalışma sürelerini test ediyor. Makale, özellikle tablo geri kazanımında Docling’in güçlü yönlerini vurgularken model boyutu ve ilk çalıştırma maliyetleri konusunda da dürüst davranıyor. Ayrıca, yeterli bağlam olmadığında seyrek sayfaların yanlış sınıflandırılabileceği konusunda uyarıda bulunuyor. Sonuç olarak, Docling’in daha ağır model tabanlı hattının PDF’ler ve belge arşivleri için kullanmaya değer olup olmadığına karar veren ekipler için pratik bir rehber sunuyor.

Docling sık sık web kazıyıcılarla aynı sepete konuyor, ama aslında öyle değil. IBM Research’ten çıkan — şimdi LF AI & Data Foundation bünyesinde yer alan — bir belge dönüştürme araç seti; elinizde zaten bulunan dosyaları (PDF, DOCX, PPTX, XLSX, HTML, görseller) alıp Markdown ya da JSON’a çeviriyor. Kendi sloganı bile doğrudan şöyle: "Get your documents ready for gen AI."

Bu yüzden aşağıdaki çalışma bir dönüştürücü incelemesi; bir tarayıcı incelemesi değil. Buradaki her şey tek bir CPU’lu makinede ölçüldü (macOS arm64, Python 3.14.2, Docling 2.111.0), komut dosyalarıyla puanlandı ve hatalar olduğu gibi kaydedildi. Depo devasa boyutta ve her gün değişiyor — 63.069 yıldız, 4.449 fork ve metadata’yı çektiğim gün atılmış bir push — dolayısıyla burada göreceğiniz sürüm ya da hata sayıları sabit değil, yalnızca bir anlık görüntü.

Docling Tam Olarak Nedir, Nedir Değildir?

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

Docling belgeleri Markdown veya JSON’a dönüştürür ve bir tarayıcı değildir

Başlıca yeteneği PDF ve görsel işleme yoludur. Bu yol, basit metin 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. İncelenmesi gereken asıl bölüm de burasıdır; yalnızca HTML’e bakan bir testin asla göremeyeceği kısım da yine burasıdır.

Bir ayrım, bir haftalık kafa karışıklığını önlüyor. Docling hiçbir şey çekmez. JavaScript çalıştırmaz, anti-bot duvarlarını aşmaz, crawl yapmaz. Siz dosyayı verirsiniz; o anlamlandırır. Tarama işi başka bir aracın görevidir ve bu fark, insanların ileride Docling’in Firecrawl’ın yerini alıp alamadığını sormasıyla önem kazanır (almaz — birbirini tamamlarlar, birazdan nedenini anlatacağım).

Kimsenin Sizi Uyarma­dığı İlk Çalıştırma

pip install docling, Python 3.14.2 üzerinde sorunsuz tamamlanıyor. Sonra sanal ortama bakıyorsunuz ve boyutu 1,3 GB. Docling, siz yalnızca bir HTML dosyası dönüştürüyor olsanız bile tüm ML yığınını doğrudan bağımlılık olarak çekiyor:

Docling model ayak izi: 506 MiB, symlink çift sayımı yapılan 1060,2 MB değil

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

Bu, tek bir PDF bile dönüştürmeden önceki durum.

Asıl sürtünme ilk PDF dönüşümünde ortaya çıkıyor; çünkü modelleri o zaman indiriyor. Taze, izole bir HuggingFace önbelleğinde, ilk PDF dönüşümü yaklaşık 224 saniye sürdü — ve bunun neredeyse tamamı hesaplamadan değil, indirmeden kaynaklandı. Düzen + TableFormer modelleri diskte yaklaşık 506 MiB yer kaplıyor (342 MiB TableFormer + 164 MiB layout, du ile doğrulandı) ve RapidOCR de site-packages içine yaklaşık 40 MB’lık PP-OCRv4 ağırlığı indiriyor. Aynı dosyanın ikinci kez dönüştürülmesi? 0,55 saniye. Modeller önbelleğe alınıyor; bedeli bir kez ödüyorsunuz.

Docling soğuk ve sıcak dönüştürme: ilk çalıştırma yaklaşık 224 saniye, sıcak çalıştırma 0,55 saniye

Göz ardı etmeniz gereken bir sayı var: coldstart betiği model_download_mb olarak 1060,2 yazdırıyor. Bunu ayak izi diye alıntılamayın. Bunun nedeni os.walk’ın symlink’leri izlemesi ve HuggingFace önbelleğinin her model dosyasını blobs/ altında bir kez saklayıp sonra snapshots/ altında symlink olarak yeniden göstermesi — dolayısıyla tarama 14 model dosyasını iki kez sayıyor. du ile uyumlu, symlink çift sayımından arındırılmış gerçek değer yaklaşık 506 MiB (yalnızca blobs: 505,4 MiB). Docling’i benchmark eden herkes için çıkarım şu: indirme baytlarını ve diskte kaplanan baytları ayrı raporlayın; çünkü aynı şey değiller.

Bir başka ayrıntı da Docling konteyneri hazırlayanları vuruyor. Ağırlıklar iki konuma, iki ayrı takvimle dağılıyor. Layout ve TableFormer modelleri HF_HOME’a uyar ve ilk PDF dönüşümünde indirilir. RapidOCR modelleri ise uymuyor — doğrudan …/site-packages/rapidocr/models/ içine gelir ve önbellek ayarınızı tamamen atlar. Eğer imajı önceden pişiriyorsanız ya da air-gap bir ortamda çalışıyorsanız, iki önbelleği de ayrıca ele almanız gerekir; HF_HOME ayarlamak ikinciyi yakalamaz.

Yine de adil tarafı söyleyelim. Docling’in önceki sürümlerinden beri proje, docling-slim paketini sundu — yaklaşık 50 MB’lık bir çekirdek; HTML için pip install docling-slim[format-html] kullanıp torch’u çekmeden ilerleyebiliyorsunuz. Yani varsayılan docling meta paketi için 1,3 GB’lık yük gerçek; ama artık zorunlu değil. Ben varsayılan paketi test ettim, çünkü pip install docling hâlâ bunu veriyor; ancak bu ağırlık çözülmemiş bir kusur değil — modüler çözüm mevcut ve #2393 numaralı issue altında izleniyor.

Kurulum sırasında küçük ama sinir bozucu bir detayla karşılaştım: import docling; docling.__version__ çalıştırınca AttributeError: module 'docling' has no attribute '__version__' hatası geliyor. Modül bu bilgiyi dışa açmıyor. Çalışan kontrol importlib.metadata.version("docling"); bu da '2.111.0' döndürüyor. Küçük bir geliştirici deneyimi pürüzü; Temmuz 2026’dan beri upstream’de açık, issue #3733.

Tablo Doğruluğu: TableFormer’ın Kendini Gösterdiği Yer

Docling’i düz PDF-to-text çıktısından ayıran şey tablolardır; bu yüzden makine tarafından okunabilir gerçek veriye sahip yedi tablo PDF’i oluşturdum ve çıktıyı hücre hücre puanladım. Burada önemli olan iki metrik aynı şey değildir: cell recall, gerçek verideki değerlerin tespit edilen tabloda herhangi bir yerde bulunma oranıdır; in-row rate ise doğru satıra yerleşenlerin oranıdır. Bu ikisini birbirine karıştırmak aracı olduğundan daha iyi gösterir; o yüzden ikisini de veriyorum:

Docling TableFormer tablo doğruluğu: 5 tespit edilen tablo, hücre hatırlama 1,00, satır içi 0,97

Tablo (stres testi)Tespit edildiHücre recallSatır içi oranNot
T1 basit kenarlıklı ızgara (8 satır × 5 sütun), sayfada tek başınaHayır0.0<!-- image --> olarak sınıflandı, tüm hücreler düştü
T2 çerçevesiz (yalnızca başlık çizgisi var)Evet1.001.00kusursuz, birebir ızgara
T3 birleştirilmiş 2 seviyeli colspan başlıkEvet1.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ı
T5 colspan başlık + çerçevesizEvet1.000.97tüm değerler bulundu; T3 ile aynı başlık-satır kayması
T6 finansal tablo, boş sütun, sağa hizalıEvet1.001.00boş sütun korunmuş, kaymamış
T7 geniş 12 sütunlu ızgaraEvet1.001.00geniş tabloda sütun kayması yok

Docling’in tespit ettiği beş tabloda gerçek verideki her değer başarıyla geçti — hücre recall tümünde 1.00. Bu beş tablonun üçünde, her değer doğru satıra da yerleşti. Çok seviyeli başlık içeren iki vakada (T3 ve T5), bir başlık değeri orijinal satırından kayıp bir alt satıra düşüyor; böylece in-row oranı 0.97’ye iniyor — veri kaybolmuyor, yalnızca üst üste binmiş başlıklarda satır ataması biraz sallanıyor.

Zor yapısal durumlarda beklediğimden daha iyi dayandı. İki seviyeli colspan başlık GitHub tarzı Markdown’a doğru biçimde düzleştirildi ("Q1 2026" etiketi, colspan’ı GFM’e dönüştürmenin doğru yolu olarak, kapsadığı iki sütunda tekrarlandı). Sadece başlık çizgisi olan çerçevesiz ızgara (T2) birebir geçti. 12 sütunlu geniş tablo (T7) kaymadı. Ve tamamen boş bir finansal sütun (T6), atılmak ya da çökmek yerine boş hücreler halinde korundu. Bu, resmî TableFormer TEDS skorlarıyla tutarlı — basit tabloda 95.4, karmaşık tabloda 90.1, tüm tablolarda 93.6 — ve model kartı Camelot (73.0) ile EDD (88.3) değerlerinin oldukça üstünde benchmark ediyor.

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ı yanlış işlediğini bildiriyor. Benim test setimde basit colspan (T3/T5) ve rowspan değerleri doğru biçimde düzleştirildi; yalnızca yukarıda belirttiğim çok seviyeli başlık satır kayması görüldü. Ancak #3698’deki başarısız örnekler, düzensiz çok satırlı/çok sütunlu birleştirmeler ve çok sayfalı tablolar — yani en problemli uç. Benim örneklerim ise basit uçta kalıyor. Dolayısıyla doğru ifade dar olmalı: burada basit colspan ve rowspan değerleri geri kazanıldı (çok seviyeli başlıklarda bir satır kayması olabilir); karmaşık ve düzensiz birleştirmeler ise belgelenmiş açık bir sorun olmaya devam ediyor. Ne “birleştirilmiş hücreler çalışıyor” deyin, ne de “birleştirilmiş hücreler bozuk.”

Tuzak: Sayfada Tek Başına Kalan Tablo Kaybolabilir

Tabloya geri bakın — T1 ve T4 hiç tespit edilmedi. Docling <!-- image --> üretti ve hiçbir hata vermeden tüm hücreleri düşürdü. T1, son derece sıradan, kenarlıklı, 8 satır ve 5 sütunlu bir ızgara. Bunun tablo ayrıştırma zayıflığı olup olmadığını söylemeden önce asıl tetikleyiciyi izole etmek istedim; bu yüzden betikli bir A/B testi kurdum.

Docling seyrek sayfa A/B: tek başına tablo resme dönüşüyor, bağlamla birlikte tablo oluyor

Ö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üler değil, gerçekten dijital PDF’ler. OCR’ı kapatmak (do_ocr=False) yardımcı olmuyor; tablolar yine kayboluyor. Ve DoclingDocument’i doğrudan inceleyince len(doc.tables) == 0 iken len(doc.pictures) == 1 çıkıyor — düzen modeli tüm tablo bölgesini Picture olarak sınıflandırmış.

Sonra belirleyici testi yaptım. Aynı T1 ve T4 tablolarını tekrar işledim; bu kez etraflarına birkaç normal paragraf ekledim ve yeniden dönüştürdüm. İkisi de kusursuz geçti: len(doc.tables) == 1, doğru GFM tabloları üretildi ve T4b’nin rowspan etiketi "North" üç satır boyunca doğru şekilde tekrarlandı. Aynı tablo. Değişen tek şey, sayfada tek başına ve seyrek durumda mı olduğu, yoksa metin içine gömülü mü olduğuydu.

Dolayısıyla gerçek uyarı şu: TableFormer kırılgan olduğu için değil; Docling’in RT-DETR düzen modeli sayfa bağlamını kullandığı için, başka neredeyse hiçbir şeyin olmadığı bir sayfada tek başına duran küçük bir tablo Picture olarak okunup sessizce düşebiliyor. Bu pratikte kolayca karşınıza çıkar; çünkü fatura, teknik döküman ve kırpılmış dışa aktarımlar tam da böyle görünür: sayfada bir tablo, etrafta neredeyse hiç yazı yok. Çözüm sıradan ama etkili: düzen modeline sayfa bağlamı verin ya da dönüşümden sonra doc.tables sayısını kontrol edip sıfır olan sayfaları işaretleyin. Bu, #3495 issue’suna (bir tablonun hem Table hem Picture olarak algılanması) komşu bir durum; ancak sayfa seyrekliğinin tetiklediği bu özel davranış — aynı tablo yalnız bırakılınca düşüyor, metin içine gömülünce geçiyor — yayımlanmış bir yerde bulamadım. Ölçülmüş, daha önce belgelenmemiş; ama kimsenin bilmediği bir bug da 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 yerdir; bu yüzden Docling’e ölçülebilir şekilde 0 karakterlik metin katmanı olan iki gerçek tarama verdim — pypdfium2, kurtarılabilir karakter sayısını sıfır raporlayarak tüm çıktının OCR olduğunu, yanında gizli bir metin katmanı olmadığını doğruluyor.

Tek sayfalık ocr_test.pdf, CPU üzerinde 14,3 saniyede tertemiz geri döndü: "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, dört sayfanın tamamında OCR çalıştırdı ve toplam 70,1 saniyede (17,5 sn/sayfa) her sayfaya test cümlesini tekrar yazdı. Varsayılan OCR otomatik devreye girdi — ne bayrak ne konfigürasyon gerekiyordu.

Buradaki en önemli ayrıntı şu: varsayılan OCR motoru RapidOCR, EasyOCR değil. Bunu, ilk çalıştırmada PP-OCRv4 .pth ağırlıklarının indirildiğini görerek 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 isteğe bağlı bir eklenti. Geçerli kalan uyarı ise şu: OCR, ölçekte yavaş yoldur ve burada gördüğünüz her şey CPU sınırında ölçüldü — bir GPU bu süreleri ciddi biçimde düşürür.

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

Sentetik örnekler belirli davranışları kanıtlar; gerçek PDF’ler ise işin gerçekten çalıştığını gösterir. İki doğrudan dijital akademik makale üzerinde test yaptım — 9 sayfalık Docling teknik raporu ve 15 sayfalık "Attention Is All You Need"; ikisi de iki sütunlu, tablolı ve formüllüydü.

15 sayfalık Attention makalesinde, tüm beş bölüm işareti — Abstract, Introduction, Background, Conclusion, References — iki sütunlu düzene rağmen doğrusal Markdown içinde belgenin sırasına uygun şekilde görünüyor. Her içerik doğrulama noktası (Transformer, encoder, BLEU, multi-head) mevcut ve meşhur çok sütunlu sonuç tabloları dört tespit edilen tablo olarak kaydediliyor. Bu, gerçek okuma sırası ve sütun birleştirme geri kazanımıdır; RAG parçalama için temel değer önerisi de tam olarak budur — eğer doğrusal hale getirici iki sütunlu bir sayfayı iç içe geçmiş saçmalığa çeviriyorsa, belgeyi anlamlı biçimde parçalara ayıramazsınız.

Zamanlama beklenmedik bir ders veriyor. Sayfa başına süreyi belirleyen şey, sayfa sayısından çok, her sayfadaki yapı yoğunluğu. Daha yoğun 9 sayfalık rapor, sayfa başına 14,95 saniye ile 15 sayfalık makaleden daha yavaştı; 15 sayfalık makale ise sayfa başına 5,99 saniye sürdü. Çünkü yoğun rapor sayfa başına daha fazla tablo ve şekil içeriyor — 9 sayfada 3 tablo, 15 sayfada 4 tablo — ve her biri ek düzen ve TableFormer çıkarımı tetikliyor. Bu ince bir fark; mutlak olarak bakınca daha yoğun belgenin tablosu daha az, daha çok değil. Dolayısıyla CPU üzerinde “sayfa başına saniye”, uzunluğun değil yapısal yoğunluğun fonksiyonu. Bu tek CPU koşusunda elde edilen bir ölçüm; ü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 doğrulama noktaları olan bir DOCX, bir XLSX ve bir PPTX ürettim, ardından iki şeyi kontrol ettim: bu doğrulama noktaları Markdown’da görünüyor mu ve export_to_dict() üzerinden JSON’a döndürülünce kaybolmadan korunuyor mu?

DosyaDönüşüm snMarkdown’da bulunan probe’larMD içindeki tablo sayısıProbe’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 probe’ları Markdown’a geçti, tablolar geri kazanıldı (DOCX’teki birleştirilmiş "Total" satırı ve her iki XLSX sayfası dahil) ve her probe export_to_dict() JSON’unda da korundu — bu da kayıpsız DoclingDocument iddiası için, en azından temiz girdilerde, anlamlı kanıt. Bu formatlar ML modelleri yerine formatın kendi arka uçlarını kullanıyor; bu yüzden milisaniyeler içinde çalışıyor ve tamamen çevrimdışı işliyorlar. Kapsam dürüst: format başına bir temiz dosya, genişliği kanıtlar; sorunlu Office dosyaları için stres testi değildir.

HTML: Sadık, Ama Temiz Değil

Bu, Docling’in RAG hattınıza girip girmeyeceğini belirleyen uyarıdır; dikkatle okuyun. Docling, tüm HTML belgesini dönüştürür. Readability tarzı ana içerik çıkarımı yapmaz. Sitenin üstbilgi/altbilgi, TOC, cookie ve benzeri kalabalığının ne kadarının korunduğunu, Docling’in kendi çıktısında bu tür satırları sayarak ölçtüm.

SayfaBoş olmayan MD satırıŞablon satırı% şablonMakalenin başladığı satır
Wikipedia "Web scraping"2553413.3%28
scrapethissite/forms6311.6%
books.toscrape6500.0%
quotes.toscrape3500.0%

Wikipedia gibi kalabalık bir sayfada Markdown satırlarının yaklaşık %13’ü nav/TOC/footer şablonundan geliyor ve gerçek makale 28. satırda başlıyor — çıktı “move to sidebar / Contents / Toggle the table of contents” ile açılıyor, “CS1 maint… / Search Wikipedia” ile kapanıyor. Temiz içerik sayfalarında (books, quotes) bu oran yaklaşık %0; yani sorun sayfa başına bir vergi değil, şablon kalabalığı problemi. Docling size temiz ana makale ayıklaması değil, sadık bir tam belge Markdown’u verir. Yukarı akışta HTML mobilyası sorunu #1865 numaralı issue’da (kapalı) ve #1930’da (açık) takip ediliyor.

Adil kalmasını sağlayan iki nokta var. Birincisi, HTML tarafında Docling hiçbir ML modeli çalıştırmaz — yalnızca basit bir pipeline üzerinde BeautifulSoup arka ucu kullanır. Sayfanızı vision modellerinin okuduğu hikâyesi sadece PDF ve görseller için geçerlidir; Docling’e HTML verirseniz layout ya da TableFormer mekanizmalarının hiçbiri devreye girmez. İkincisi, PDF yolunda header ve footer gibi şablon öğelerini sınıflandırma denemesi vardır; dolayısıyla “hiç şablon temizleme yapmıyor” demek fazla güçlü olur — özellikle HTML arka ucunun kalabalığı aynen geri verdiğini söylemek daha doğrudur.

Başka Araçlarla Karşılaştırma ve Thunderbit’in Yeri

Web Veri Çıkarmak İçin Thunderbit’i Deneyin

İnsanların Docling’i en sık kıyasladığı araç Firecrawl olduğu için burada bir konumlandırma tablosu veriyorum. Önceden bir not: bu, dokümantasyon seviyesinde bir karşılaştırmadır, aynı makinede yapılmış bir benchmark değildir. Firecrawl’ı bu örnekler üzerinde çalıştırmadım. Burada ölçülen yalnızca Docling sütunudur; Firecrawl sütunu kendi herkese açık dokümanlarından alınmıştır.

EksenFirecrawl (dokümanlarına göre)Docling (burada ölçülen)
Temel işCanlı web’i tara + kazı → MarkdownZaten elinizde olan belgeyi → Markdown/JSON’a dönüştü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 şablon)
PDF tablo yapısı (ML)sınırlıEvet — TableFormer (resmî TEDS 93.6; tespit edilen örneklerde hücre recall 1.00, satır içi 0.97–1.00)
Taranmış PDF / OCRsınırlıEvet — varsayılan RapidOCR (0 metin katmanlı taramayı geri kazandı)
Format çeşitliliğiweb 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 yüküAPI anahtarı / hafif istemci1,3 GB varsayılan kurulum + ~506 MiB model (veya docling-slim)
Lisansticari / kaynak erişimliMIT

Kısa versiyon şu: veriniz canlı web’delse 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ı — ve gerçek tablo/OCR anlayışıyla, yapıyı koruyan, çevrimdışı bir dönüşüm istiyorsanız Docling doğru araçtır. Birbirlerini tamamlarlar. Gerçekçi bir pipeline birini crawl için, diğerini belge dönüşümü için kullanır.

Sıra Thunderbit’e de dürüstçe gelmişken açık konuşayım; çünkü burada çalışıyorum ve aksi halde tarafsızmışım gibi davranırsam haklı olarak şüphelenirsiniz. Thunderbit ve Docling aynı işi yapmıyor; bunu zorla eşitlemeyeceğim. Geliştiriciler için Thunderbit, AI scraping API’si + MCP server + CLI olarak çalışır ve iş birimi canlı web sayfasıdür: POST /distill bir URL’yi, JS render, anti-bot ve CAPTCHA dahil olmak üzere, temiz ve LLM’ye hazır Markdown’a çevirir; POST /extract ise tanımladığınız JSON Schema üzerinden şemaya uygun yapılandırılmış JSON döndürür. Bu, bir RAG hattının çekme ve temizleme tarafıdır. Docling ise yerel belge tarafıdır — PDF, tarama, diskinizde zaten duran e-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 taramalarsa Docling’i kullanın. Gerçek dünyadaki çoğu hatta ikisi birlikte kullanılır; biri diğerinin yerine geçmez.

Karar: Geçici, Ama Yapılacak Ödevler Kaldı

Size 0–100 arasında tek bir puan vermeyeceğim; çünkü burada ağırlıklı toplam yapmak, Docling’in hiç iddia etmediği şeyler için de ceza yazmak anlamına gelir (örneğin crawling) ve bunları karşılaştırılabilir gibi göstermek olur. Test ettiğim örneklerde boyut bazında sonuç şu:

  • Kurulum / ilk çalıştırma: ağır — 1,3 GB venv, yaklaşık 506 MiB model, ilk PDF’de yaklaşık 224 sn, sıcak çalışmada yaklaşık 0,55 sn — ama docling-slim bu yükten kaçınmanızı sağlıyor.
  • Tablo doğruluğu: tablo tespit edildiğinde güçlü (5/5’te hücre recall 1.00, satır içi 0.97–1.00), bu örneklerde resmî TEDS anlatımıyla uyumlu.
  • Tablo tespiti sağlamlığı: seyrek sayfa tuzağı — tek başına kalan bir tablo Picture olarak düşebilir. doc.tables kontrol edin.
  • Taranmış / OCR: çalışıyor, varsayılan RapidOCR; ölçekte yavaş.
  • Çoklu format: sağlam, JSON round-trip bozulmuyor.
  • HTML: sadık, ama temiz değil — ana içerik ayıklaması yok.
  • Geliştirici deneyimi: temiz 3 satırlık API ve düzenli bir DoclingDocument, eksik __version__ hariç.

Kimler için uygun: PDF, tarama ve Office dosyaları üzerinde, çevrimdışı, yapıyı koruyan dönüştürme ve gerçek tablo + OCR anlayışı isteyen RAG veya veri hattı ekipleri. Kimler için uygun değil: canlı web crawling ya da temiz ana makale HTML çıkarımı isteyenler — bunun için başka bir araç gerekiyor.

Ve bu bir inceleme, basın bülteni değil; sınırlamalar etiket üzerinde kalmalı. Bu, hedefli bir testtir — tek CPU’lu makinede 7 sentetik tablo + 2 gerçek PDF — TEDS ölçeğinde bir doğruluk benchmark’ı değil. Docling’e bir hat kurmadan önce sizin de test etmeniz gereken birkaç şey var: isteğe bağlı VLM (GraniteDocling) yolu, gerçek docling-slim ayak izi, herhangi bir GPU çalışması, karmaşık ve düzensiz birleştirilmiş hücreler ile çok sayfalı tablolar, formülden LaTeX’e doğruluk ve — üretimde sizi en çok şaşırtabilecek olan — batch bellek büyümesi, thread/GIL ölçeklenmesi ve binlerce dönüşüm boyunca nesne yaşam döngüsünün dayanıklılığı. Docling, iddia ettiği şeylerde güçlü; ölçülmüş, pazarlanmış değil; ama güvenmeden önce haritalamak isteyeceğiniz gerçek sınırları da var. Seyrek sayfa uyarısını bilin, ilk indirme maliyetini bütçeye ekleyin ve ölçek altındaki davranışı kendiniz doğrulayın.

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

SSS

Docling bir web scraper ya da crawler mı? Hayır. Docling, elinizde zaten bulunan belgeleri — PDF, DOCX, PPTX, XLSX, HTML, görseller — Markdown veya JSON’a çevirir. URL çekmez, JavaScript çalıştırmaz, anti-bot ile uğraşmaz. Canlı web’i taramak, Firecrawl ya da Thunderbit’in web API’si gibi araçların işidir; Docling ise sizin verdiğiniz dosyadan başlar.

Docling kurulumu ve ilk çalıştırma indirmesi 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 (tek başına torch 536 MiB). İlk PDF dönüşümü, layout ve TableFormer modellerinden yaklaşık 506 MiB’ı diske indirir; buna ek olarak RapidOCR ağırlıkları da yaklaşık 40 MB’tır ve işlem yaklaşık 224 saniye sürer — bunun neredeyse tamamı indirme süresidir. İkinci dönüşüm yaklaşık 0,55 saniyedir. Yalnızca hafif formatlara ihtiyacınız varsa, docling-slim (~50 MB çekirdek) ağır yolu atlar.

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

Docling neden tablomı görsele çevirdi ya da tabloyu düşürdü? En olası sebep seyrek sayfa etkisidir. Docling’in RT-DETR düzen 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ı tablo, etrafında gövde metni olduğunda sorunsuz dönüştürülür. Çözüm, düzen modeline sayfa bağlamı vermek ya da dönüşümden sonra doc.tables sayısını kontrol edip sıfır olan sayfaları işaretlemektir.

Docling mi Firecrawl mı — hangisini kullanmalıyım? Farklı işler oldukları için çoğu zaman ya o ya bu değil. Firecrawl canlı web’i tarar, JavaScript’i çalıştırır ve ana içeriği çıkarır. Docling ise elinizde zaten olan 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 veya Thunderbit’in API/MCP/CLI’si). PDF, tarama ya da Office dosyalarıysa Docling’i kullanın. Gerçek dünyadaki çoğu hat 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.
İç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