PDF Tablolarından Bilgi Getirme
Mühendislik

PDF Tablolarından Bilgi Getirme

Bir sayı; satır etiketini, sütun başlığını, birimini ya da dipnotunu kaybettiği anda yanlış yanıta dönüşür. Tabloyu yapısıyla çıkarmayı, satır satır dizine yazmayı ve sonucu ölçmeyi anlatıyoruz.

Kısa cevap

PDF tablolarından doğru bilgi getirmek için tabloyu düz metin olarak değil, satır ve sütunlarıyla çıkarmanız gerekir. Her değeri satır etiketi, sütun başlığı, birimi, dipnotu ve sayfa numarasıyla birlikte saklayın; aramayı bu başlıkları taşıyan satır metinleri üzerinde yapın ve yanıtı kaynak hücreyle doğrulayın. Ayrıştırıcıyı seçmeden önce kendi belgelerinizden örnek tablolarda hücre doğruluğunu ölçün.

PDF tablolarında düz metin çıkarma neden yetmez?

Yetmez, çünkü PDF bir tabloyu satır ve sütunlardan oluşan bir ızgara olarak değil, sayfadaki koordinatlara yerleştirilmiş karakterler olarak saklar. Metin çıkarıcı bu karakterleri okuma sırasına dizmeye çalışırken sütunları karıştırabilir, bir hücreyi iki satıra bölebilir ya da değeri anlamını veren başlıktan koparabilir. "12.400" tek başına bir şey söylemez; hangi ürüne, hangi yıla, hangi para birimine ait olduğu ve bir dipnotla koşula bağlanıp bağlanmadığı ancak tablo yapısı korunursa bilinir.

Sorun parçalama (chunking) aşamasında büyür. Paragraflar için tasarlanmış bir parçalayıcı tabloyu sabit uzunlukta keser; başlık satırı bir parçada, veri satırları başka parçada kalır. Arama doğru satırı bulsa bile modelin elinde sütun başlığı olmayan bir sayı dizisi vardır. Sık görülen zor durumlar şunlardır: birden çok düzeyli başlıklar ("2026" altında "EUR" ve "USD"), birleşik hücreler, başlıkta duran birimler ("bin TL"), yıldızla işaretlenmiş dipnotlar, ara toplam satırları, birden fazla sayfaya yayılıp her sayfada başlığı tekrarlanan tablolar, döndürülmüş sayfalar ve taranmış belgeler.

Bazı PDF'ler yapıyı zaten taşır. Erişilebilirlik için etiketlenmiş (tagged) PDF'lerde tablo, W3C'nin PDF6 tekniğinde anlatıldığı gibi Table, TR, TH ve TD yapı öğeleriyle işaretlenir; ekran okuyucular satır ve başlık ilişkisini buradan anlar. Ancak kurum arşivlerindeki belgelerin önemli bir kısmı etiketsiz ya da hatalı etiketlidir, bu yüzden etiketlere güvenmeden önce örneklem üzerinde kontrol etmek gerekir.

Hangi PDF'e hangi ayrıştırma yöntemi uyar?

Tek bir ayrıştırıcı her PDF türünde iyi sonuç vermez; doğru yaklaşım belgeleri türlerine ayırıp her türü kendisine uyan yola yönlendirmektir. Aşağıdaki tablo bu yönlendirme için bir başlangıç noktasıdır:

PDF türüUygun yolDikkat edilecek nokta
Etiketli dijital PDFYapı etiketlerini doğrudan okumakEtiketler eksik veya yanlış olabilir; örneklemle doğrulayın
Kenarlıklı (çizgili) dijital tabloÇizgi tabanlı ayrıştırmaÇizgisi olmayan tablolarda çalışmaz
Çizgisiz, boşluklarla hizalanmış tabloMetin hizasına dayalı ayrıştırmaSütun sınırları tahmindir; dar sütunlar birbirine karışabilir
Taranmış veya görüntü PDFOCR ile birlikte tablo yapısı tanımaOCR hatası sayıyı bozar; hücre güven skorunu izleyin
Çok düzeyli başlıklı, birleşik hücreli tabloYerleşim (layout) modeli ve insan doğrulamasıBaşlık hiyerarşisini çıktıdan ayrıca kurmanız gerekir

Açık kaynak Camelot kütüphanesinin çalışma biçimi belgesi bu ayrımı iyi gösterir: Lattice yöntemi hücreler arasında çizgi olan tabloları çizgi kesişimlerinden çözer, Stream yöntemi ise hücreler arasındaki boşluklardan tablo yapısını çıkarır. İkisi de metin katmanı olan PDF'ler içindir; taranmış sayfada önce OCR gerekir.

Bulut hizmetleri yapıyı daha zengin döndürür. Amazon Textract'ın tablo çıktısı her hücreyi satır ve sütun indeksiyle ayrı bir blok olarak verir; birleşik hücreleri ayrı bir ilişkiyle bağlar, hücreleri sütun başlığı, tablo başlığı, dipnot (footer), bölüm başlığı ve özet hücresi olarak işaretleyebilir ve her blok için bir güven skoru üretir. Microsoft'un Document Intelligence yerleşim modeli de satır ve sütun sayısını, satır ve sütun yayılımını ve başlık hücrelerini döndürür; v4.0 sürümünün Markdown çıktısında tablolar, birleşik hücreleri ve çok satırlı başlıkları koruyabilmek için HTML tablosu olarak yazılır. Aynı belgede önemli bir ayrıntı vardır: bu sürümde tablonun sınır bölgesi başlık yazısını (caption) ve dipnotları kapsamaz. Yani dipnotu tabloya siz bağlamazsanız "KDV hariçtir" gibi bir koşul kaybolur.

Tablo verisi dizine nasıl yazılmalı?

Her satırı, başlıklarını ve bağlamını kendi üzerinde taşıyan bağımsız bir kayıt olarak yazın. Kullanıcının sorusu çoğunlukla tek bir satıra ya da tek bir hücreye denk gelir; bu yüzden aramanın birimi de satır olmalıdır. Satır kaydında en az şu alanlar bulunsun:

  • Kaynak bilgisi: Belge kimliği, sürüm, sayfa numarası, tablo kimliği ve tablo başlığı.
  • Satır etiketi: Satırın adı ve varsa üst grubu ("Destek paketleri > Premium").
  • Sütun başlık yolu: Çok düzeyli başlıklarda tam yol ("2026 > EUR").
  • Değer: Ham metin, normalize edilmiş sayı ve birim. "12.400,50" ile "12,400.50" aynı sayıdır; ayrıştırmayı belgenin diline göre yapın ve başlıktaki "bin TL" gibi birimleri her değere taşıyın.
  • Dipnot: İşaret değil, işaretin karşılığı olan metin.
  • Kalite bilgisi: Ayrıştırıcının adı ve sürümü, hücre güven skoru ve hücrenin sayfadaki koordinatları.

Aranacak metni bu alanlardan üretin: "2026 fiyat listesi, Premium destek paketi, yıllık fiyat, EUR, KDV hariç: 10.300". Yapısal hücreleri ise ayrı saklayın; yanıtı doğrularken ve hesap yaparken onları kullanacaksınız. Uzun tablolarda başlık satırını her parçaya yeniden ekleyin. "Hangi tabloda indirim oranları var?" gibi tablo düzeyindeki sorular için tablo başlığını ve sütun adlarını içeren ayrı bir özet kayıt da eklemek işe yarar. Boş hücreyi sıfır saymayın; kaynakta bir kural yoksa "değer yok" olarak saklayın. Ara toplam ve genel toplam satırlarını da işaretleyin ki normal veri satırıyla karışmasın.

Varsayımsal örnek: fiyat tablosundan doğru hücreyi getirmek

Bir satın alma ekibinin tedarikçi teklifleri arasında aşağıdaki gibi bir tablo olduğunu düşünün. Tablonun altında "* Fiyatlar KDV hariçtir. 2026 fiyatları ön tekliftir." dipnotu yer alıyor. Rakamlar örnek amaçlıdır.

Destek paketi2025 EUR2025 USD2026 EUR*2026 USD*
Temel4.2004.5504.4004.750
Premium9.80010.60010.30011.100

Kullanıcı "Premium paketin 2026 EUR fiyatı ne?" diye soruyor. Doğru yanıt 10.300 EUR'dur ve iki koşul taşır: KDV hariçtir ve ön tekliftir. Düz metin çıkarıldığında satır "Premium 9.800 10.600 10.300 11.100" biçimine döner; model dört sayıdan birini seçmek zorunda kalır ve sütun sırası çıkarımda kaymışsa yanlış sayıyı güvenle söyler. Parçalayıcı başlık satırını ayrı parçaya düşürmüşse hangi sütunun 2026 olduğu hiç bilinmez. Dipnot tablodan ayrı tutulmuşsa yanıt "ön teklif" uyarısını atlar. Üç hatanın üçünde de yanıt doğru sayfaya atıf verebilir; yani sayfa düzeyinde atıf kontrolü bu hataları yakalamaz. Doğru kayıtla arama, "Premium" satırını, "2026 > EUR" başlık yolunu ve dipnot metnini birlikte getirir; yanıt da hücreye kadar doğrulanabilir.

Ayrıştırıcıları nasıl karşılaştırmalısınız?

Ayrıştırıcıyı ürün tanıtımına göre değil, kendi belgelerinizden seçtiğiniz tablolar üzerinde ölçerek seçin. Uygulanabilir bir test tasarımı şöyledir:

  1. Arşivden her türden tablo seçin: etiketli ve etiketsiz dijital PDF, taranmış sayfa, çizgili ve çizgisiz tablo, birden fazla sayfaya yayılan tablo, birleşik başlıklı tablo. Her türden birkaç örnek, toplamda 20–40 tablo başlangıç için yeterlidir.
  2. Her tablonun beklenen ızgarasını elle çıkarın: hücre değerleri, satır etiketleri, sütun başlık yolları, birimler ve dipnot bağlantıları.
  3. Her aday yöntemi (düz metin, çizgi veya hiza tabanlı ayrıştırıcı, bulut yerleşim hizmeti) aynı tablolarda çalıştırın.
  4. Hücre içeriği doğruluğunu, her değerin doğru satır ve sütun başlığına bağlanma oranını, birim ve dipnotun korunmasını ve normalize sayının birebir eşleşmesini ölçün. Tablo yapısı tanıma araştırmalarında kullanılan GriTS ölçütü, tabloyu bir matris olarak ele alıp hücre topolojisini, konumunu ve içeriğini aynı çerçevede değerlendirir; kendi puanlamanızı kurarken iyi bir referanstır.
  5. Sayfa başına işleme süresini ve maliyetini kaydedin.
  6. Ardından aramayı sınayın: gerçek kullanıcı sorularından 30–50 soru yazın, her biri için beklenen satır kimliğini işaretleyin ve doğru satırın ilk birkaç sonuç arasında gelip gelmediğini, yanıttaki sayının hücredeki sayıyla aynı olup olmadığını ölçün.

Karar kuralı basit tutulabilir: her belge türü için eşiği geçen en ucuz yöntemi seçin ve belgeleri türüne göre yönlendirin. Eşiği hiçbir yöntemin geçemediği türler için insan doğrulamalı ayrı bir yol açın.

Karşılaştırma ve toplam soruları nasıl yanıtlanır?

Satır düzeyinde arama tek bir değeri soran sorularda iyi çalışır; "En ucuz paket hangisi?" ya da "2025'ten 2026'ya en çok hangi kalem arttı?" gibi bütün tabloyu taramayı gerektiren sorularda ise yetmez, çünkü arama yalnızca en benzer birkaç satırı getirir. Bu tür sorular sık soruluyorsa tabloları ayrıca yapısal bir depoya, örneğin ilişkisel bir veritabanı tablosuna yazın ve bu soruları oraya yönlendiren bir sorgu adımı ekleyin. Sorgu sonucunu yine kaynak tablo ve sayfa bilgisiyle gösterin. Hangi soruların bu yola gideceğini test sorularınızdan çıkarın; her soruyu yapısal sorguya göndermek, basit değer sorularına gereksiz bir hata kaynağı ekler.

Yanıt aşamasında tablo hataları nasıl önlenir?

Modele dağınık değer listesi değil, başlıkları, birimi, dipnotu ve sayfa bilgisiyle birlikte ilgili satırı verin; yanıttan sayfa, tablo ve satıra kadar atıf isteyin. Toplama, fark veya oran gibi hesapları modele bırakmayın: hesabı yapısal hücrelerden kodla yapın ve işlemin girdilerini yanıtla birlikte gösterin ki inceleyen kişi sonucu yeniden üretebilsin. Basit bir otomatik kontrol de çok iş görür: yanıttaki her sayı atıf yapılan hücrede birebir bulunmalıdır, bulunmuyorsa yanıt incelemeye düşer. Hücre güveni düşükse, başlık yolu belirsizse ya da aynı tablonun iki sürümü farklı değer veriyorsa kaynak sayfanın görüntüsünü gösterip kullanıcıdan doğrulama isteyin. Özgün PDF her zaman erişilebilir kalmalıdır; ayrıştırılmış yapı, kanıtın kendisi değil türetilmiş bir görünümüdür.

Sık yapılan hatalar

  • Tabloyu paragraf parçalayıcısına bırakmak ve başlığı veri satırlarından ayırmak.
  • Başlıktaki birimi ve dipnot işaretini değerlere taşımamak.
  • Boş hücreyi sıfır, ara toplam satırını normal satır saymak.
  • Her sayfada tekrarlanan başlık satırını veri satırı olarak dizinlemek.
  • Yalnızca sayfa atfını kontrol edip yanıttaki sayıyı hücreyle karşılaştırmamak.

Nereden başlamalı?

Önce arşivinizdeki tablo türlerinin envanterini çıkarın: kaç belge taranmış, kaçında çok düzeyli başlık var, hangi sorular tablolara düşüyor? Ardından yukarıdaki küçük testi çalıştırın ve yöntemi ölçüme göre seçin. Taranmış tablolar ağırlıktaysa taranmış PDF'lerle RAG kurma rehberimizdeki OCR kalite kapılarını da aynı teste ekleyin. PDF ve Word belgelerinden metin, tablo ve meta veri çıkaran belge alımının arama, yetki ve atıf adımlarıyla nasıl birleştiğini kurumsal RAG ve anlamsal arama hizmet sayfamızda bulabilirsiniz.

Önemli çıkarımlar

  • PDF'leri türüne göre ayırın: etiketli, çizgili, çizgisiz ve taranmış tablolar farklı ayrıştırma yolu ister.
  • Her satırı başlık yolu, birim, dipnot, sayfa ve güven skoruyla bağımsız bir kayıt olarak dizine yazın.
  • Dipnotları tabloya siz bağlayın; bazı yerleşim modelleri dipnotu tablo bölgesine dahil etmez.
  • Ayrıştırıcıyı kendi 20–40 tablonuzda hücre doğruluğunu ve başlık eşleşmesini ölçerek seçin.
  • Yanıttaki her sayıyı atıf yapılan hücreyle karşılaştırın; hesapları modele değil koda yaptırın.

Sıkça sorulan sorular

RAG sistemleri PDF'teki tabloları okuyabilir mi?

Okuyabilir, ancak yalnızca tablo yapısı çıkarma sırasında korunursa. Düz metin çıkarmada sütunlar karışabilir ve değerler başlıklarından kopabilir. Tablo duyarlı bir ayrıştırıcı ya da yerleşim modeliyle satır ve sütunları çıkarıp her satırı başlıklarıyla birlikte dizine yazın.

PDF'ten tablo çıkarmak için hangi araç kullanılmalı?

Belge türüne bağlıdır. Çizgili dijital tablolara çizgi tabanlı, çizgisiz tablolara hiza tabanlı ayrıştırıcılar uyar; taranmış sayfalar ise OCR ile tablo yapısı tanıma gerektirir. Seçimi kendi belgelerinizden 20–40 tabloda hücre doğruluğunu ölçerek yapın.

Tablolar RAG için nasıl parçalanmalı?

Tablonun ortasından kesilerek değil, satır satır. Her satır kaydına tablo başlığını, sütun başlık yolunu, birimi ve dipnotu ekleyin; uzun tablolarda başlık satırını her parçada tekrarlayın.

Taranmış PDF'lerdeki tablolarda ne değişir?

Önce OCR gerekir ve OCR hatası doğrudan sayıyı bozar. Hücre güven skorlarını saklayın, güveni düşük hücreleri insan doğrulamasına gönderin ve sayıları dizine yazmadan önce normalize edin.

Tablodan gelen yanıtın doğru olduğunu nasıl kontrol ederim?

Yanıttaki her sayının atıf yapılan hücrede birebir bulunduğunu otomatik olarak kontrol edin. Sayfa düzeyinde atıf yetmez; yanlış sütundan alınmış bir sayı da doğru sayfaya atıf verebilir.

Tüm yazılar