--- title: "Tablo2SQL-TR Pilot Çalışma Raporu" subtitle: "Geliştirmede görülmemiş belge düzenleriyle stres testi · 12 Ekim 2026 (düzeltme sonrası sonuçlar eklendi)" lang: tr cover: no --- ## Özet Hakem incelemesi, gerçek belgelerle küçük bir pilot istemişti. Gerçek belgeler bulunana kadar, gerçek Türk kurum belgelerinin düzenini taklit eden **üç kurgusal belge** ve **44 soru** hazırlandı. Belgeler, ana test kümesindeki altı belgeden bilerek farklı tasarlandı. Sistemin kodu pilottan önce donduruldu ve pilot tek seferde çalıştırıldı; sonuçlar görüldükten sonra yazılımda hiçbir ayar yapılmadı. **Sonuç: sistem yeni düzenlere iyi genellenmedi.** | Ölçüt | Ana test kümesi (TR-TabloSQL) | Pilot, dondurulmuş kod | Pilot, düzeltme sonrası | |---|---|---|---| | Genel doğruluk | %92,9 (92/99) | **%25,0 (11/44)** | %59,1 (26/44) | | Cevaplanabilir sorularda doğruluk | %93,2 | **%15,8 (6/38)**; tesadüfen doğru bir olgu çıkarılınca %13,2 | %57,9 (22/38); tesadüfi olgu çıkarılınca %55,3 | | Cevapsız sorularda doğru red | %90,9 | %83,3 (5/6); redlerin bir kısmı yanlış gerekçeyle | %66,7 (4/6) | | Cevaplanabilir soruda yanlış red | %0,0 | **%39,5 (15/38)** | %5,3 (2/38) | Düzeltme sonrası sütun, aşağıda (Bölüm 8) açıklanan genel hata düzeltmelerinden sonra elde edildi. Düzeltmeler bu pilotun bulgularına dayandığı için bu sütun görülmemiş veride ölçülmüş bir skor **değildir**. Başarısızlıkların **32'sinin 19'unda** kök neden ya da katkıda bulunan neden tablo çıkarmadır. Kalanlar kural tabanlı üreticinin yeni ifadelerde yanlış sütun ya da işlem seçmesinden kaynaklanıyor. Pilot ayrıca yazılımda **altı somut hata** ortaya çıkardı. Bunlardan biri, iki belgedeki adsız tabloların aynı adı alması yüzünden bir tablonun sessizce silinmesine yol açan bir veri kaybı hatası. **Önemli sınırlama.** Belgeler kurgusal ve aynı ekip tarafından hazırlandı. Bu nedenle pilot, hakemin istediği **bağımsız gerçek belge pilotunun yerini tutmaz**. Doğru tanımı "geliştirmede görülmemiş düzenlerle stres testi"dir. Gerçek belgeler geldiğinde aynı düzenek değiştirilmeden kullanılabilir (bkz. `pilot/README.md`). --- ## 1. Belgeler | Belge | Biçim | Taklit edilen gerçek belge | Ana kümede olmayan zorluklar | |---|---|---|---| | Yeşilvadi Belediyesi 2025 Faaliyet Raporu | PDF, 3 sayfa, çizgili | 5018 sayılı Kanun kapsamındaki belediye faaliyet raporu | Ekonomik kod sütunu; "Ödenek" altında dört alt sütun; "-" ile gösterilen tanımsız oran; "(*)" dipnotlu satır adı; **iki sayfaya bölünmüş, başlığı her sayfada tekrar eden 63 satırlık tablo** | | Kuzeyçınar Gıda A.Ş. 31.12.2025 Konsolide Finansal Tablolar | PDF, 2 sayfa, **dikey çizgisiz** | KAP'ta yayımlanan TFRS finansal tabloları | Dipnot sütunu; üç satırlı dönem başlığı ("Bağımsız Denetimden Geçmiş / Cari Dönem / 31.12.2025"); girintili kalemler; bölüm başlığı satırları; ara toplamlar; parantezli negatifler; 4 ondalıklı pay başına kazanç | | Ardıçlı İli 2025 İstatistik Bülteni | HTML | İl müdürlüğü istatistik bülteni | Çeyrek (Ç1–Ç4) sütunları; "İl Toplamı" satırı; `
` içinde kaynak notu; "Ocak 2025" biçimli ay satırları; negatif yüzde değişimler | Her sayfada "KURGUSAL ÖRNEK BELGE" uyarısı bulunur; kurum, il ve ilçe adları uydurmadır. **Sorular.** 44 soru hazırlandı: 38'i cevaplanabilir, 6'sı cevapsız. Zorluk dağılımı 6 kolay, 22 orta, 16 zor. Altın cevaplar soru metninden değil, belgeleri üreten ham verilerden programla hesaplandı. Ayrı bir denetimde 44 altın cevabın tamamı, belgeler `pdftotext` ile okunarak yeniden kontrol edildi; yanlış altın cevap bulunmadı. --- ## 2. Protokol 1. **Kod donduruldu.** Pilot öncesinde `t2s/` kodunun SHA-256 özetleri `pilot/kod_parmak_izi.txt` dosyasına kaydedildi ve çalıştırma öncesinde değişmediği doğrulandı. 2. **Arka uç kural tabanlı.** Ana deneylerle aynı ayarlar kullanıldı: K = 3 ve Türkçe normalizasyon. Hibrit geri düşme kapalı. 3. **Değerlendirme cevap düzeyinde,** altın SQL olmadan yapıldı. Kurallar `pilot/README.md` dosyasında. Ölçütte yapılan tek değişiklik şu: ilk çalıştırmadan sonra, metin cevaplarda tarihlerin ISO karşılığıyla eşleşmesi kabul edildi ("Ekim 2025" = "2025-10"). Bunun nedeni, sistemin ayları ISO biçiminde saklaması. Bu düzeltme sistemi değil yalnızca puanlamayı değiştirdi ve bir sorunun sonucunu etkiledi. O soru da aşağıda "tesadüfen doğru" olarak işaretlendi. --- ## 3. Sonuçlar ### 3.1 Belgeye ve zorluğa göre | | Doğru / Toplam | Oran | |---|---|---| | Faaliyet raporu (PDF) | 6 / 22 | %27,3 | | Finansal tablolar (PDF) | 2 / 14 | %14,3; iki doğru da cevapsız sorulardır, cevaplanabilir 12 sorunun hiçbiri doğru değil | | İstatistik bülteni (HTML) | 3 / 8 | %37,5 | | Kolay / orta / zor | 2/6 · 7/22 · 2/16 | %33,3 · %31,8 · %12,5 | **Tesadüfen doğru.** P42'de ("satışların en çok düştüğü ay") SQL, önceki yılın satışına göre sıralama yapıyor. Bu yanlış sıralama, rastlantı sonucu doğru ayı döndürdü. **Yanlış gerekçeyle doğru red.** P35'te sistem şirket sorusunu belediye personel tablosuna bağlayıp "2025 verisi yok" gerekçesiyle reddetti. P36'da ise red, gelir tablosunun veritabanında hiç bulunmamasından kaynaklandı. ### 3.2 Tablo çıkarma **Değer geri çağırma** şunu ölçer: belgedeki ham sayıların kaçının çıkarılan tablolarda bir sayı olarak bulunduğu. | Belge | Yazılan tablo | Değer geri çağırma | |---|---|---| | Faaliyet raporu | 4 (çok sayfalı tablo ikiye bölündü) | %100 | | Finansal tablolar | 1 (gelir tablosu kayboldu) | %64,7 (44/68) | | İstatistik bülteni | 2 | %100 | Sayıların değerleri doğru ayrıştırıldı. Sorun, tabloların **yapısında ve meta verisinde**: tablo adları, sütun adları, yıllar ve tabloların bölünmesi. ### 3.3 Başarısızlık nedenleri (32 cevaplanabilir yanlış) | Kod | Neden | Olgu | Örnek | |---|---|---|---| | A | Kapsam denetimi yanlış reddi ("2025 verisi yok") | 11 (9'unda kök neden çıkarma) | Mahalle tablosunda "Nüfus (2025)" başlığındaki yıl silindiği için 2025 soruları reddedildi | | B | Doğru tabloda yanlış sütun | 6 | "Toplam ödenek" yerine "bütçe ödeneği"; "üçüncü çeyrek" yerine Ç1 | | D | Yanlış işlem ya da niyet | 8 | Değer yerine COUNT(*); NULL değerin sıralamada başa gelmesi; eksik filtre | | E | Birim dönüşümü | 1 | TL'den milyon TL'ye çevrilmedi | | F | Çıkarma hatası yüzünden cevap imkânsız | 6 | Gelir tablosu veritabanında yok; bölünmüş tabloda sayım eksik | **Çıkarma kök ya da katkı nedeni: 19/32.** --- ## 4. Pilotun ortaya çıkardığı yazılım hataları | # | Hata | Etki | Önem | |---|---|---|---| | 1 | **Adsız tablolar aynı adı alıyor** (`sutun`) ve sonraki belge öncekinin üzerine yazıyor | Finansal belgedeki gelir tablosu sessizce silindi; ona ait 6 sorunun (P29–P34) cevabı imkânsız hâle geldi | **Yüksek (veri kaybı)** | | 2 | **Parantez içindeki yıl, birim sanılıp siliniyor:** "Nüfus (2025)" → `nufus_2` | Yıl bilgisi kayboluyor, kapsam denetimi soruları reddediyor | Yüksek | | 3 | **Çok sayfalı tablo birleştirilmiyor;** ikinci parça başlıksız ayrı bir tablo oluyor | Sayım ve sıralama soruları eksik veriyle yanıtlanıyor | Orta (bilinen sınırlılık) | | 4 | **Dikey çizgisiz finansal tablolarda:** başlık yerine üstteki paragraf alınıyor; "Dipnot Referansları" iki sütuna bölünüyor; tarih satırı veri satırı oluyor; bölüm başlıkları NULL satırlar olarak saklanıyor | Sütunlarda dönem ve yıl bilgisi yok; yanlış sütun seçiliyor | Yüksek | | 5 | **HTML `` içindeki kaynak notu** veri satırı olarak saklanıyor | Listelerde fazladan satır çıkıyor | Düşük | | 6 | **Toplam satırı kalıbı** "İl Toplamı", "BRÜT KAR" ve "DÖNEM KARI" gibi satırları tanımıyor | Toplamada çift sayım (P38'de iki kat sonuç) | Orta | Ayrıca **kapsam denetimi**, yılı yalnızca tablo başlığında, sütun adlarında ve hücre değerlerinde arıyor. Belge metnindeki "2025 mali yılı" ifadesini görmediği için yıl içermeyen bütçe tablosuna yönelik 2025 sorularını reddediyor. --- ## 5. Yorum 1. **Ana kümedeki %92,9 genellenmiyor.** Kural tabanlı üretici, geliştirme sırasında görülen ifade ve düzenlere bağımlı. Bu, hakemin "aşırı uyum" endişesini doğruluyor; makaledeki "geliştirme skoru iyimserdir" sınırlılığının boyutunu da gösteriyor. 2. **Çıkarma, başarısızlıkların çoğunun kaynağı.** Sayılar doğru ayrıştırılıyor; Türkçe normalizasyon pilotta da sorunsuz çalıştı. Sorun tablo yapısında ve meta veride. Yukarıdaki 1, 2 ve 4 numaralı hataların giderilmesi, LLM'den bağımsız olarak büyük kazanç sağlayacaktır. 3. **LLM deneyi daha da önemli hâle geldi.** B, D ve E türündeki 15 hata, sabit kalıplarla çalışan bir üreticinin sınırlarını gösteriyor. Bunlar bir LLM'nin çözmesi beklenen türden hatalar. 4. **Cevapsızlık davranışı da sınırlı.** Doğru redlerin bir kısmı yanlış gerekçeye dayanıyor ve cevaplanabilir soruların %39,5'i reddedildi. Ana kümede yanlış red %0'dı. --- ## 6. Makale için öneri (uygulandı: makale v5, Bölüm 6.6) Bu pilot dürüstçe raporlanırsa makaleyi güçlendirir. Önerilen biçim: Bölüm 7'ye ya da ek materyale kısa bir **"Görülmemiş düzenlerle stres testi"** paragrafı eklemek. Paragraf ana bulguyu (%93,2 → %15,8), başarısızlıkların çıkarmadan kaynaklandığını ve bunun gerçek belge pilotunun yerini tutmadığını açıkça belirtmeli. Yazılım hataları düzeltilip pilot yeniden çalıştırılırsa, iki sonuç "dondurulmuş kod" ve "düzeltme sonrası" olarak ayrı ayrı raporlanmalıdır. --- ## 8. Düzeltme sonrası Pilotun bulduğu hatalar, **pilot sorularına özgü hiçbir kural eklenmeden** genel biçimde düzeltildi: | Hata | Düzeltme | |---|---| | Adsız tabloların aynı adı alıp birbirinin üzerine yazılması | Başlığı okunamayan tablo belge ve sayfa adıyla adlandırılıyor; başka bir belgenin ya da aynı sayfadaki başka bir tablonun üzerine yazılmıyor, aynı tablo yeniden aktarılırsa kendi yerine yazılıyor | | Parantezli yılın silinmesi | "Nüfus (2025)" → `nufus_2025` | | Bölünmüş tablolar | Ardışık sayfalarda aynı başlıkla süren ve kendine ait farklı başlığı olmayan parçalar birleştiriliyor (üç ve daha fazla sayfa dahil) | | Çizgisiz finansal tablolar | "… Tablosu"/"Bilanço" satırı başlık olarak seçiliyor; başlık araması 6 satıra çıktı; yalnızca tarihlerden oluşan etiketsiz satır dönem başlığı sayılıyor, ondan sonraki "VARLIKLAR" gibi satırlar gövdede kalıyor; satır sonunda bölünmüş başlık sözcükleri soldaki sütunla birleşiyor; dipnot/kod sütunları ölçü sayılmıyor | | `` ve tablo altı notları | Veri satırı olarak alınmıyor | | "İl Toplamı" | "… Toplamı" kalıbı toplam satırı olarak işaretleniyor | | Yıl içermeyen tablolar | Tablonun üstündeki metinde geçen yıllar ("2025 mali yılı") dönem olarak kaydediliyor; hiç yıl bilgisi olmayan tabloda yıl gerekçesiyle red verilmiyor | | Tanımsız ("-") değerler | En yüksek/en düşük sıralamasına alınmıyor | **Sonuç:** değer geri çağırma üç belgede de %100'e, doğruluk %59,1'e çıktı. Ana test kümesindeki bütün sonuçlar değişmedi; yalnızca Camelot-stream çıkarıcısının iki tablodaki hücre doğruluğu iyileşti (ortalama %60,7 → %96,7). Bu hatalar için 8 regresyon testi eklendi; toplam 50 testin hepsi geçiyor. **Gerileme:** P10 ("2024 yılı personel gideri") daha önce doğru reddediliyordu. Mahalle tablosunda 2024 yılı artık görünür olduğu için bu soru o tablodan yanıtlanıyor. **Kalan hatalar:** cevaplanabilir sorularda kalan 16 hatanın çoğu kural tabanlı üreticinin yeni ifadelerde yanlış sütun ya da işlem seçmesi: "üçüncü çeyrek" sorusunda Ç1 seçiliyor, "kadro sayısı" sorusunda değer yerine COUNT kullanılıyor, "milyon TL" dönüşümü yapılmıyor. Bunlar bilerek düzeltilmedi; düzeltilirlerse üretici pilot sorularına göre ayarlanmış olurdu. Bu tür hatalar LLM üreticiyle ölçülmelidir. Dondurulmuş koddaki sonuçlar `sonuclar/`, düzeltme sonrası sonuçlar `sonuclar_duzeltme/` klasöründe. Her iki kodun parmak izi `kod_parmak_izi.txt` ve `kod_parmak_izi_duzeltme.txt` dosyalarında. ## 9. Yeniden üretim ```bash python pilot/belge_uret.py python pilot/pilot_calistir.py # düzeltilmiş kodla python pilot/pilot_calistir.py --cikti pilot/sonuclar_duzeltme # düzeltme sonrası çıktı klasörü ``` Sonuçlar `pilot/sonuclar/pilot_sonuclari.json` dosyasında. Her soru için SQL, dönen satırlar ve sistemin cevap metni kayıtlıdır.