SevdanurGenc commited on
Commit
a72d1cf
·
verified ·
1 Parent(s): ea96655

Upload 466 files

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .dockerignore +12 -0
  2. .env.example +15 -0
  3. .gitattributes +62 -0
  4. .gitignore +10 -0
  5. DENEY_KILAVUZU.md +256 -0
  6. Dockerfile +18 -0
  7. KURULUM.md +257 -0
  8. LICENSE +26 -0
  9. README.md +197 -0
  10. Tablo2SQL-TR_Deney_Kilavuzu.docx +0 -0
  11. agir_kume/README.md +64 -0
  12. agir_kume/altin_denetimi.json +44 -0
  13. agir_kume/belgeler/belediye_00_yesilvadi_2024_butce.pdf +0 -0
  14. agir_kume/belgeler/belediye_01_akkopru_mahalle.pdf +0 -0
  15. agir_kume/belgeler/belediye_07_akkopru_personel.html +14 -0
  16. agir_kume/belgeler/belediye_10_yesilvadi_2025_tarife.pdf +0 -0
  17. agir_kume/belgeler/belediye_13_serinsu_2025_butce.pdf +0 -0
  18. agir_kume/belgeler/belediye_14_cinarli_mahalle.pdf +0 -0
  19. agir_kume/belgeler/belediye_20_cinarli_personel.pdf +0 -0
  20. agir_kume/belgeler/belediye_23_serinsu_2025_tarife.html +17 -0
  21. agir_kume/belgeler/belediye_26_kartaltepe_2025_butce.pdf +0 -0
  22. agir_kume/belgeler/belediye_27_bademli_mahalle.html +69 -0
  23. agir_kume/belgeler/belediye_33_bademli_personel.pdf +0 -0
  24. agir_kume/belgeler/belediye_36_kartaltepe_2026_tarife.pdf +0 -0
  25. agir_kume/belgeler/belediye_39_kumluca_ova_2024_butce.html +30 -0
  26. agir_kume/belgeler/belediye_40_gokdere_mahalle.pdf +0 -0
  27. agir_kume/belgeler/belediye_46_gokdere_personel.pdf +0 -0
  28. agir_kume/belgeler/belediye_49_kumluca_ova_2025_tarife.pdf +0 -0
  29. agir_kume/belgeler/il_03_deniztepe_2025_turizm.html +23 -0
  30. agir_kume/belgeler/il_04_ardicli_2024_konut.pdf +0 -0
  31. agir_kume/belgeler/il_05_deniztepe_2025_tufe.pdf +0 -0
  32. agir_kume/belgeler/il_08_deniztepe_2025_yatirim.pdf +0 -0
  33. agir_kume/belgeler/il_09_ardicli_enerji.pdf +0 -0
  34. agir_kume/belgeler/il_11_aksungur_2025_havalimani.html +23 -0
  35. agir_kume/belgeler/il_12_gokceova_kaza.pdf +0 -0
  36. agir_kume/belgeler/il_16_aksungur_2025_turizm.pdf +0 -0
  37. agir_kume/belgeler/il_17_kizilyar_2025_konut.pdf +0 -0
  38. agir_kume/belgeler/il_18_aksungur_2025_tufe.pdf +0 -0
  39. agir_kume/belgeler/il_21_aksungur_2024_yatirim.pdf +0 -0
  40. agir_kume/belgeler/il_22_kizilyar_enerji.pdf +0 -0
  41. agir_kume/belgeler/il_24_yaylacik_2025_havalimani.pdf +0 -0
  42. agir_kume/belgeler/il_25_deniztepe_kaza.pdf +0 -0
  43. agir_kume/belgeler/il_29_yaylacik_2025_turizm.pdf +0 -0
  44. agir_kume/belgeler/il_30_gokceova_2024_konut.pdf +0 -0
  45. agir_kume/belgeler/il_31_yaylacik_2024_tufe.html +22 -0
  46. agir_kume/belgeler/il_34_yaylacik_2025_yatirim.pdf +0 -0
  47. agir_kume/belgeler/il_35_gokceova_enerji.html +20 -0
  48. agir_kume/belgeler/il_37_ardicli_2024_havalimani.pdf +0 -0
  49. agir_kume/belgeler/il_38_aksungur_kaza.pdf +0 -0
  50. agir_kume/belgeler/il_42_ardicli_2025_turizm.pdf +0 -0
.dockerignore ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .venv
2
+ .env
3
+ .git
4
+ **/__pycache__
5
+ .pytest_cache
6
+ ayarlar/*.json
7
+ outputs/qa/db
8
+ outputs/.ai_onbellek.json
9
+ gercek_pilot/test_belgeler/*.pdf
10
+ gercek_pilot/db_test
11
+ *.zip
12
+ outputs/otomasyon
.env.example ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # İSTEĞE BAĞLI. Anahtarları uygulamadaki "Model bağlantıları" panelinden girmek en kolay yoldur
2
+ # (ayarlar/tablo2sql-ayarlar.json dosyasına kaydedilir). Anahtarı o dosyada tutmak istemiyorsanız
3
+ # bu dosyayı ".env" adıyla kopyalayın ve kullandığınız sağlayıcının anahtarını girin.
4
+ # .env dosyası uygulama açılırken okunur; anahtarlar arayüzde ayrıca yazılmak zorunda kalmaz.
5
+ # .env dosyasını kimseyle paylaşmayın.
6
+
7
+ # Claude (Anthropic) — https://console.anthropic.com
8
+ ANTHROPIC_API_KEY=
9
+
10
+ # OpenAI veya OpenAI uyumlu bir uç nokta (OpenRouter, vLLM, LM Studio…)
11
+ OPENAI_API_KEY=
12
+ # OPENAI_BASE_URL=https://api.openai.com/v1
13
+
14
+ # Ollama (yerel, anahtar gerekmez) — varsayılan http://localhost:11434
15
+ # OLLAMA_HOST=http://localhost:11434
.gitattributes CHANGED
@@ -33,3 +33,65 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ assets/fonts/DejaVuSans-Bold.ttf filter=lfs diff=lfs merge=lfs -text
37
+ assets/fonts/DejaVuSans.ttf filter=lfs diff=lfs merge=lfs -text
38
+ docs/ekran/01_belgeler.png filter=lfs diff=lfs merge=lfs -text
39
+ docs/ekran/02_bilgi_tabani.png filter=lfs diff=lfs merge=lfs -text
40
+ docs/ekran/04_hata_katalogu.png filter=lfs diff=lfs merge=lfs -text
41
+ docs/ekran/06_otomasyon.png filter=lfs diff=lfs merge=lfs -text
42
+ docs/ekran/07_raporlar.png filter=lfs diff=lfs merge=lfs -text
43
+ docs/ekran/08_genel_rapor.png filter=lfs diff=lfs merge=lfs -text
44
+ docs/ekran/09_test_raporu.png filter=lfs diff=lfs merge=lfs -text
45
+ docs/ekran/10_soru_red.png filter=lfs diff=lfs merge=lfs -text
46
+ docs/img/en/01_genel_bakis.png filter=lfs diff=lfs merge=lfs -text
47
+ docs/img/en/02_kenar_cubugu.png filter=lfs diff=lfs merge=lfs -text
48
+ docs/img/en/03_cikarim_ham_izgara.png filter=lfs diff=lfs merge=lfs -text
49
+ docs/img/en/05_bilgi_tabani.png filter=lfs diff=lfs merge=lfs -text
50
+ docs/img/en/06_soru_cevap.png filter=lfs diff=lfs merge=lfs -text
51
+ docs/img/en/08_hata_katalogu.png filter=lfs diff=lfs merge=lfs -text
52
+ docs/img/en/09_degerlendirme.png filter=lfs diff=lfs merge=lfs -text
53
+ docs/img/en/10_model_senkron.png filter=lfs diff=lfs merge=lfs -text
54
+ docs/img/en/11_ai_oneriler.png filter=lfs diff=lfs merge=lfs -text
55
+ docs/img/en/13_kendini_duzeltme.png filter=lfs diff=lfs merge=lfs -text
56
+ docs/img/en/15_ollama.png filter=lfs diff=lfs merge=lfs -text
57
+ docs/img/en/16_karanlik_tema.png filter=lfs diff=lfs merge=lfs -text
58
+ docs/img/en/17_model_karsilastirma.png filter=lfs diff=lfs merge=lfs -text
59
+ docs/img/tr/01_genel_bakis.png filter=lfs diff=lfs merge=lfs -text
60
+ docs/img/tr/02_kenar_cubugu.png filter=lfs diff=lfs merge=lfs -text
61
+ docs/img/tr/03_cikarim_ham_izgara.png filter=lfs diff=lfs merge=lfs -text
62
+ docs/img/tr/05_bilgi_tabani.png filter=lfs diff=lfs merge=lfs -text
63
+ docs/img/tr/06_soru_cevap.png filter=lfs diff=lfs merge=lfs -text
64
+ docs/img/tr/08_hata_katalogu.png filter=lfs diff=lfs merge=lfs -text
65
+ docs/img/tr/09_degerlendirme.png filter=lfs diff=lfs merge=lfs -text
66
+ docs/img/tr/10_model_senkron.png filter=lfs diff=lfs merge=lfs -text
67
+ docs/img/tr/11_ai_oneriler.png filter=lfs diff=lfs merge=lfs -text
68
+ docs/img/tr/13_kendini_duzeltme.png filter=lfs diff=lfs merge=lfs -text
69
+ docs/img/tr/15_ollama.png filter=lfs diff=lfs merge=lfs -text
70
+ docs/img/tr/16_karanlik_tema.png filter=lfs diff=lfs merge=lfs -text
71
+ docs/img/tr/17_model_karsilastirma.png filter=lfs diff=lfs merge=lfs -text
72
+ docs/Tablo2SQL-TR_Kullanim_Kilavuzu.docx filter=lfs diff=lfs merge=lfs -text
73
+ docs/Tablo2SQL-TR_User_Guide.docx filter=lfs diff=lfs merge=lfs -text
74
+ gercek_pilot/rapor/img/01_cikarim.png filter=lfs diff=lfs merge=lfs -text
75
+ gercek_pilot/rapor/img/02_bilgi_tabani.png filter=lfs diff=lfs merge=lfs -text
76
+ gercek_pilot/rapor/img/03_soru_dogru.png filter=lfs diff=lfs merge=lfs -text
77
+ gercek_pilot/rapor/img/03_soru_red.png filter=lfs diff=lfs merge=lfs -text
78
+ gercek_pilot/rapor/img/03_soru_yanlis.png filter=lfs diff=lfs merge=lfs -text
79
+ gercek_pilot/rapor/img/04_hata_bozuk_yazi_tipi.png filter=lfs diff=lfs merge=lfs -text
80
+ gercek_pilot/rapor/img/05_hata_iki_sutunlu_bilanco.png filter=lfs diff=lfs merge=lfs -text
81
+ gercek_pilot/rapor/img/06_hata_cift_sayfa_duzeni.png filter=lfs diff=lfs merge=lfs -text
82
+ gercek_pilot/rapor/Tablo2SQL-TR_Gercek_Belge_Pilotu.docx filter=lfs diff=lfs merge=lfs -text
83
+ outputs/ekran/1_belgeler.png filter=lfs diff=lfs merge=lfs -text
84
+ outputs/ekran/2_bilgi.png filter=lfs diff=lfs merge=lfs -text
85
+ outputs/ekran/3_soru.png filter=lfs diff=lfs merge=lfs -text
86
+ outputs/ekran/4_hata.png filter=lfs diff=lfs merge=lfs -text
87
+ outputs/ekran/5_degerlendirme_calisma.png filter=lfs diff=lfs merge=lfs -text
88
+ outputs/ekran/5_degerlendirme.png filter=lfs diff=lfs merge=lfs -text
89
+ outputs/ekran/v2_en_dark_ask.png filter=lfs diff=lfs merge=lfs -text
90
+ outputs/ekran/v2_en_dark_docs.png filter=lfs diff=lfs merge=lfs -text
91
+ outputs/ekran/v2_en_dark_kb.png filter=lfs diff=lfs merge=lfs -text
92
+ outputs/ekran/v2_tr_light_ask.png filter=lfs diff=lfs merge=lfs -text
93
+ outputs/ekran/v2_tr_light_err.png filter=lfs diff=lfs merge=lfs -text
94
+ outputs/ekran/v2_tr_light_extract.png filter=lfs diff=lfs merge=lfs -text
95
+ outputs/ekran/v2_tr_light_kb.png filter=lfs diff=lfs merge=lfs -text
96
+ outputs/ekran/v2_tr_light_start.png filter=lfs diff=lfs merge=lfs -text
97
+ outputs/ekran/v2_tr_ollama_sidebar.png filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ # Anahtarlar ve kişisel ayarlar: asla paylaşmayın
2
+ .env
3
+ ayarlar/*.json
4
+ ayarlar/*.tmp
5
+ # Üretilen çıktılar ve önbellekler
6
+ __pycache__/
7
+ .pytest_cache/
8
+ .venv/
9
+ outputs/.ai_onbellek.json
10
+ outputs/qa/db/
DENEY_KILAVUZU.md ADDED
@@ -0,0 +1,256 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: "Tablo2SQL-TR Deney Kılavuzu"
3
+ subtitle: "LLM deneylerini kendi bilgisayarında çalıştırmak için adım adım yönerge"
4
+ cover: "no"
5
+ ---
6
+
7
+ # Bu kılavuz ne için?
8
+
9
+ Makaledeki sonuçlar şimdiye kadar yalnızca kural tabanlı motorla alındı. Bu kılavuzla aynı deneyleri **büyük dil modelleriyle (LLM)** çalıştıracaksın. İki deney var:
10
+
11
+ | Deney | Ne ölçer? | Çıktı klasörü |
12
+ |---|---|---|
13
+ | **1. Makale protokolü** | 99 soruluk ana test kümesi beş koşulda: döngü açık/kapalı, statik denetim kapalı, sayılar metin, İngilizce yerel ayar. Ardından pilot, stres kümesi ve ağır kümenin 200 soruluk hızlı alt kümesi. | `outputs/llm/<sağlayıcı>_<model>/` |
14
+ | **2. Gerçek belge pilotu** | 7 kurumdan 18 gerçek belge üzerinde 189 soru | `gercek_pilot/sonuclar/` |
15
+
16
+ Her iki deneyi de seçilen **her model için birer kez** çalıştıracaksın. Kodda hiçbir değişiklik yapma; ayrıntısı Bölüm 9'da.
17
+
18
+ **İki kurulum yolu var; birini seç:**
19
+
20
+ | | A. Sanal ortam (başlatıcı) | B. Docker |
21
+ |---|---|---|
22
+ | Kurulum | `baslat.bat`'a çift tıkla | Docker Desktop'u kur, `docker_baslat.bat`'a çift tıkla |
23
+ | Paket sürümleri | Başlatıcı uygun sürümleri kurar; küçük farklar olabilir | Makaledeki sonuçların alındığı sürümlerle **birebir aynı** |
24
+ | Kime uygun | Docker kullanmayanlara | Docker'ı zaten kullananlara; en güvenilir tekrar üretim |
25
+ | Bölümler | 3, 6, 7, 8 | 3B, 7B, 8B |
26
+
27
+ Deney komutları iki yolda da terminalden çalıştırılır (Bölüm 6). İki yolda da Bölüm 2 (dosyalar), 4 (model bağlantıları), 5 (model seçimi), 9 (kurallar) ve 10 (geri gönderim) aynıdır.
28
+
29
+ # 1. Gerekenler
30
+
31
+ - **Bilgisayar:** Windows 10/11, macOS ya da Linux. En az 8 GB RAM ve 3 GB boş disk.
32
+ - **Python 3.10, 3.11 ya da 3.12.** Yoksa başlatıcı kurmayı önerir. Windows'ta kurulum sırasında **"Add python.exe to PATH"** kutusunu işaretle.
33
+ - **İnternet bağlantısı:** Paket kurulumu ve bulut modelleri için gerekli.
34
+ - **B yolu için:** [Docker Desktop](https://www.docker.com/products/docker-desktop/). A yolunda gerekmez; B yolunda Python kurmak gerekmez.
35
+ - **API anahtarları ve kredi:**
36
+ - Claude için: [console.anthropic.com](https://console.anthropic.com/settings/keys)
37
+ - OpenAI için: [platform.openai.com](https://platform.openai.com/api-keys)
38
+ - Hesaplarda kullanım kredisi tanımlı olmalı.
39
+ - **Yerel model için Ollama:** [ollama.com/download](https://ollama.com/download).
40
+ - En az 8 GB belleği olan bir ekran kartı önerilir.
41
+ - Ekran kartı yoksa çalışır ama deneyler çok uzun sürer (bir günden fazla olabilir).
42
+
43
+ # 2. Dosyaları yerleştir
44
+
45
+ Sana iki dosya gelecek:
46
+
47
+ 1. **`tablo2sql.zip`:** Uygulama, test kümeleri ve betikler.
48
+ 2. **`gercek_belgeler.zip`:** 18 gerçek belge (PDF, yaklaşık 115 MB).
49
+
50
+ Adımlar:
51
+
52
+ 1. `tablo2sql.zip`'i kısa, boşluksuz ve Türkçe karaktersiz bir yola aç. Örneğin Windows'ta `C:\tablo2sql`, macOS'ta `~/tablo2sql`.
53
+ 2. `gercek_belgeler.zip`'i **`tablo2sql/gercek_pilot/test_belgeler/`** klasörünün içine aç. Klasörde 18 PDF olmalı ve doğrudan bu klasörde durmalı, alt klasörde değil. Dosya adlarını değiştirme.
54
+
55
+ ```
56
+ tablo2sql/
57
+ ├── baslat.bat / baslat.command / baslat.sh
58
+ ├── scripts/llm_deneyi.py ← Deney 1
59
+ ├── gercek_pilot/
60
+ │ ├── calistir.py ← Deney 2
61
+ │ ├── db_kur.py
62
+ │ └── test_belgeler/ ← 18 PDF buraya
63
+ └── ...
64
+ ```
65
+
66
+ # 3. Kurulum (A yolu: sanal ortam)
67
+
68
+ 1. Başlatıcıya çift tıkla:
69
+ - Windows: `baslat.bat`
70
+ - macOS: `baslat.command`
71
+ - Linux: terminalde `./baslat.sh`
72
+ 2. İlk açılışta başlatıcı `.venv` adında bir sanal ortam kurar ve gerekli paketleri indirir. Bu 5–10 dakika sürebilir.
73
+ 3. Kurulum bitince tarayıcıda uygulama açılır. Terminal penceresini kapatma; uygulama o pencere açık kaldıkça çalışır.
74
+
75
+ # 4. Model bağlantılarını kur
76
+
77
+ Uygulamada sağ üstteki **🔌 Bağlantılar** düğmesine bas.
78
+
79
+ - **Claude:** API anahtarını yapıştır ve **Kaydet ve senkronize et**'e bas. Kart *Bağlı · N model* olmalı.
80
+ - **OpenAI:** Aynı şekilde anahtarı yapıştır. Sunucu adresi alanını boş bırak.
81
+ - **Ollama:**
82
+ 1. Ollama uygulaması açık olmalı. Kart *Bağlı* görünmüyorsa Ollama'yı başlat ve **Modelleri senkronize et**'e bas.
83
+ 2. **Hangi Ollama modeli?** bölümünü aç, `qwen2.5-coder:7b`'yi seç ve **⬇️ Model indir**'e bas. Yaklaşık 4,7 GB indirilir.
84
+ 3. Hesaplama aygıtını **Otomatik** bırak.
85
+
86
+ Anahtarlar `tablo2sql/ayarlar/tablo2sql-ayarlar.json` dosyasına kaydedilir ve deney betikleri anahtarı oradan okur. **Bu dosyayı kimseyle paylaşma.** İçinde anahtarlar düz metin olarak durur.
87
+
88
+ # 5. Modelleri önceden seç ve not et
89
+
90
+ Hakemler, birkaç model deneyip yalnızca en iyisinin raporlanmasını kabul etmez. Bu yüzden **çalıştırmaya başlamadan önce** üç modeli seç ve aşağıdaki tabloya yaz. Sonra bu üçünün hepsini, sonuç ne ç��karsa çıksın, çalıştır.
91
+
92
+ | Rol | Sağlayıcı | Model kimliği |
93
+ |---|---|---|
94
+ | Güçlü bulut modeli | claude | ………………………… |
95
+ | İkinci bulut modeli | openai | ………………………… |
96
+ | Yerel model | ollama | qwen2.5-coder:7b |
97
+
98
+ **Model kimliği nasıl bulunur:** Model bağlantıları panelinde ilgili kartın **Modelleri göster** listesindeki `model` sütunundan aynen kopyala. Kimlik genelde tarih içerir, örneğin `claude-…-2025….`. Takma ad yerine tarihli sürüm varsa onu seç; böylece aynı model yeniden kullanılabilir. Komutlarda `<MODEL>` yazan yere bu kimliği koyacaksın.
99
+
100
+ # 6. Terminali aç
101
+
102
+ Komutlar `tablo2sql` klasöründe çalıştırılır.
103
+
104
+ - **Windows:**
105
+ 1. Dosya Gezgini'nde `tablo2sql` klasörünü aç.
106
+ 2. Üstteki adres çubuğuna `cmd` yaz ve Enter'a bas.
107
+ 3. Açılan pencerede bir kez şunu çalıştır: `set PYTHONUTF8=1`
108
+ 4. Python komutu: `.venv\Scripts\python`
109
+ - **macOS / Linux:**
110
+ 1. Terminalde `cd ~/tablo2sql` ile klasöre geç.
111
+ 2. Python komutu: `.venv/bin/python`
112
+
113
+ Aşağıdaki örnekler Windows içindir. macOS/Linux'ta `.venv\Scripts\python` yerine `.venv/bin/python` yaz, ters eğik çizgileri `/` yap.
114
+
115
+ # 7. Deney 1: Makale protokolü (A yolu)
116
+
117
+ Her model için önce maliyet tahminini al, sonra deneyi çalıştır:
118
+
119
+ ```
120
+ .venv\Scripts\python scripts\llm_deneyi.py --saglayici claude --model <MODEL> --kuru
121
+ .venv\Scripts\python scripts\llm_deneyi.py --saglayici claude --model <MODEL>
122
+ ```
123
+
124
+ - `--kuru` hiçbir istek göndermez. Yalnızca yaklaşık token sayısını yazar. Toplam yaklaşık 4–5 milyon giriş tokenı beklenir.
125
+ - İkinci komut bağlantıyı dener ("Bağlantı denemesi… tamam"), sonra sırasıyla şunları çalıştırır:
126
+ 1. Ana test kümesi, 5 koşulda.
127
+ 2. Pilot.
128
+ 3. Stres kümesi.
129
+ 4. Ağır küme hızlı alt kümesi.
130
+ - Süre bulut modellerinde birkaç saat sürebilir. Yerel model ekran kartıyla benzer, ekran kartı olmadan çok daha uzundur.
131
+ - Bitince ekrana bir özet basılır. Sonuçlar `outputs\llm\claude_<MODEL>\` klasörüne yazılır; en önemli dosyalar `rapor.md` ve `ozet.json`.
132
+
133
+ Diğer iki model için `--saglayici` değerini değiştir:
134
+
135
+ ```
136
+ .venv\Scripts\python scripts\llm_deneyi.py --saglayici openai --model <MODEL>
137
+ .venv\Scripts\python scripts\llm_deneyi.py --saglayici ollama --model qwen2.5-coder:7b
138
+ ```
139
+
140
+ # 8. Deney 2: Gerçek belge pilotu (A yolu)
141
+
142
+ Bu deney `gercek_pilot` klasöründe çalışır.
143
+
144
+ ```
145
+ cd gercek_pilot
146
+ ..\.venv\Scripts\python db_kur.py
147
+ ..\.venv\Scripts\python calistir.py --arka-uc kural
148
+ ```
149
+
150
+ 1. **`db_kur.py`:** 18 belgenin her biri için bir veritabanı kurar. Yalnızca bir kez gerekir ve 20–40 dakika sürer.
151
+ 2. **`calistir.py --arka-uc kural`:** Ortamın doğru kurulduğunu doğrulayan **kontrol çalıştırmasıdır.** Sonunda `"basari": 19.6` görmelisin; bu, raporladığımız sonuçla aynı. Farklı bir sayı çıkarsa LLM deneylerine geçme ve bize haber ver (Bölüm 10). Büyük olasılıkla bir paket sürümü farklıdır.
152
+ 3. Ardından seçtiğin üç model:
153
+
154
+ ```
155
+ ..\.venv\Scripts\python calistir.py --arka-uc claude:<MODEL>
156
+ ..\.venv\Scripts\python calistir.py --arka-uc openai:<MODEL>
157
+ ..\.venv\Scripts\python calistir.py --arka-uc ollama:qwen2.5-coder:7b
158
+ ```
159
+
160
+ - `--arka-uc` biçimi şöyle: `sağlayıcı:model-kimliği`. Ollama modelinin adında da `:` var; bu sorun değil.
161
+ - Her çalıştırma `gercek_pilot\sonuclar\sonuclar_<arka-uç>.json` dosyasını üretir.
162
+ - Önce bağlantıyı denemek istersen `--sinir 5` ekle. Yalnızca 5 soru çalışır. Bu deneme çalıştırmasının sonucu raporlanmaz.
163
+
164
+ # Docker ile (B yolu)
165
+
166
+ Bu yolda Python ve paketler bir Docker imajının içindedir. Proje klasörü konteynere bağlanır; ayarlar, veritabanları ve sonuçlar doğrudan bilgisayarındaki `tablo2sql` klasörüne yazılır. Böylece konteyner silinse de hiçbir şey kaybolmaz.
167
+
168
+ ## 3B. Kurulum (bir kez)
169
+
170
+ 1. [Docker Desktop](https://www.docker.com/products/docker-desktop/)'ı kur ve aç. Windows'ta WSL 2 seçeneğini kabul et.
171
+ 2. Bölüm 2'deki gibi dosyaları yerleştir.
172
+ 3. Başlatıcıya çift tıkla:
173
+ - Windows: **`docker_baslat.bat`**
174
+ - macOS: `docker_baslat.command`
175
+ - Linux: terminalde `./docker_baslat.sh`
176
+
177
+ Başlatıcı şu adımları sırayla yapar:
178
+ 1. Docker Desktop kapalıysa açar.
179
+ 2. İlk seferde imajı kurar. Bu 5–10 dakika sürer ve makaledeki sonuçların üretildiği paket sürümlerini (`requirements-docker.txt`) kullanır.
180
+ 3. Uygulamayı başlatır ve tarayıcıda **http://localhost:8501** adresini açar.
181
+
182
+ Başlatıcının penceresini kapatabilirsin; uygulama arka planda çalışmaya devam eder.
183
+ 4. Bölüm 4'teki gibi model bağlantılarını kur.
184
+
185
+ Aynı işleri terminalden de yapabilirsin: `docker compose build`, ardından `docker compose up -d uygulama`.
186
+
187
+ **Ollama hakkında:**
188
+ - Ollama'yı bilgisayarın kendisine kur, Docker'ın içine değil. Böylece ekran kartını doğrudan kullanır.
189
+ - Konteyner Ollama'ya `http://host.docker.internal:11434` adresiyle ulaşır. Ayar dosyası ilk kez Docker içinde oluşursa bu adres kendiliğinden yazılır.
190
+ - Daha önce A yoluyla uygulamayı açtıysan Ollama kartında **Sunucu adresini değiştir**'i aç ve bu adresi gir.
191
+
192
+ Uygulamayı kapatmak için **`docker_durdur.bat`**'a çift tıkla (konteyner silinmez, yalnızca durur) (macOS/Linux: `./docker_baslat.sh durdur`). Paketler güncellenirse imajı yeniden kurmak için: `docker_baslat.bat yeniden-kur`.
193
+
194
+ ## 7B. Deney 1 (Docker ile)
195
+
196
+ ```
197
+ docker compose run --rm deney scripts/llm_deneyi.py --saglayici claude --model <MODEL> --kuru
198
+ docker compose run --rm deney scripts/llm_deneyi.py --saglayici claude --model <MODEL>
199
+ docker compose run --rm deney scripts/llm_deneyi.py --saglayici openai --model <MODEL>
200
+ docker compose run --rm deney scripts/llm_deneyi.py --saglayici ollama --model qwen2.5-coder:7b
201
+ ```
202
+
203
+ Sonuçlar bilgisayarındaki `tablo2sql/outputs/llm/` klasörüne yazılır.
204
+
205
+ ## 8B. Deney 2 (Docker ile)
206
+
207
+ ```
208
+ docker compose run --rm -w /app/gercek_pilot deney db_kur.py
209
+ docker compose run --rm -w /app/gercek_pilot deney calistir.py --arka-uc kural
210
+ docker compose run --rm -w /app/gercek_pilot deney calistir.py --arka-uc claude:<MODEL>
211
+ docker compose run --rm -w /app/gercek_pilot deney calistir.py --arka-uc openai:<MODEL>
212
+ docker compose run --rm -w /app/gercek_pilot deney calistir.py --arka-uc ollama:qwen2.5-coder:7b
213
+ ```
214
+
215
+ Kontrol çalıştırmasında (`--arka-uc kural`) sonuç yine **%19,6** olmalı. Sonuçlar `tablo2sql/gercek_pilot/sonuclar/` klasörüne yazılır.
216
+
217
+ **Uzun çalıştırmalar için:** Terminal penceresini kapatırsan `docker compose run` da durur. Bilgisayarın uyku moduna girmemesine dikkat et.
218
+
219
+ # 9. Kurallar
220
+
221
+ 1. **Koddaki hiçbir dosyayı değiştirme.**
222
+ - `calistir.py` başlarken kodun dondurulduğu andaki parmak izini doğrular. Kod değişmişse "KOD DEĞİŞMİŞ, çalıştırma durduruldu" der ve çalışmaz.
223
+ - Bu hatayı görürsen düzeltmeye çalışma; bize bildir.
224
+ 2. **Her modeli bir kez çalıştır.**
225
+ - Bir çalıştırma ağ hatası ya da elektrik kesintisi yüzünden yarıda kesilirse aynı komutu baştan çalıştır ve bunu not al.
226
+ - Sonuç beğenilmediği için tekrar çalıştırma.
227
+ 3. **Seçtiğin üç modelin hepsini raporla.** Sonucu kötü olan model de makalede yer alacak.
228
+ 4. **Ayarları değiştirme.** Model sıcaklığı 0, deneme sayısı 3 ve hibrit geri düşme kapalı olarak betiklerde sabit.
229
+
230
+ # 10. Sonuçları geri gönder
231
+
232
+ Deneyler bitince şu klasörleri tek bir zip dosyasında topla:
233
+
234
+ - `tablo2sql\outputs\llm\` (Deney 1, tüm modeller)
235
+ - `tablo2sql\gercek_pilot\sonuclar\` (Deney 2, tüm modeller ve kontrol çalıştırması)
236
+ - `tablo2sql\gercek_pilot\db_test\kurulum_gunlugu.json`
237
+ - Model kimliklerini yazdığın tablo (Bölüm 5) ve varsa yarıda kesilen çalıştırma notları.
238
+
239
+ **Gönderme:** `ayarlar` klasörünü (API anahtarları) ve `.env` dosyasını gönderme.
240
+
241
+ # 11. Sorun giderme
242
+
243
+ | Belirti | Çözüm |
244
+ |---|---|
245
+ | `401` / "invalid x-api-key" / "Incorrect API key" | Anahtar yanlış ya da süresi dolmuş. Model bağlantıları'nda yeni anahtarı kaydet. |
246
+ | `429` / "rate limit" / "overloaded" | Sağlayıcının hız sınırı. 10–15 dakika bekleyip aynı komutu yeniden çalıştır. |
247
+ | "credit balance is too low" / "insufficient_quota" | Hesaba kredi yükle. |
248
+ | Ollama: "model not found" | Model indirilmemiş. Model bağlantıları → Ollama → Model indir. |
249
+ | Ollama: model açılmıyor ya da bellek hatası | Hesaplama aygıtını *Otomatik* yap ya da başka uygulamaları kapat. |
250
+ | "No module named t2s" | Komutu yanlış klasörde çalıştırdın. Deney 1 `tablo2sql` içinde, Deney 2 `tablo2sql\gercek_pilot` içinde çalışır. |
251
+ | Türkçe karakterlerde hata (`UnicodeEncodeError`) | Windows'ta önce `set PYTHONUTF8=1` çalıştır. |
252
+ | `db_kur.py` bir belgede hata verdi | O belgenin dosya adını kontrol et (Bölüm 2); hata mesajını not al ve gönder. |
253
+ | Docker: "Cannot connect to the Docker daemon" | Docker Desktop açık değil; aç ve bir dakika bekle. |
254
+ | Docker: Ollama kartı "Ulaşılamıyor" | Ollama bilgisayarda açık mı? Kart adresi `http://host.docker.internal:11434` olmalı. |
255
+ | Docker: 8501 portu dolu | `docker-compose.yml`'de `"8501:8501"` satırını `"8502:8501"` yap ve http://localhost:8502 adresini aç. |
256
+ | Kontrol çalıştırmasında %19,6'dan farklı sonuç | LLM deneylerine geçmeden önce terminal çıktısını gönder. A yolunda paketleri birebir sabitlemek için: `.venv\Scripts\python -m pip install -r requirements-docker.txt` (Python 3.13 gerekir) ya da B yolunu (Docker) kullan. |
Dockerfile ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Tablo2SQL-TR deney ortamı: makaledeki sonuçların üretildiği paket sürümleri (requirements-docker.txt) sabitlenmiştir.
2
+ FROM python:3.13-slim
3
+
4
+ ENV PYTHONUTF8=1 \
5
+ PYTHONUNBUFFERED=1 \
6
+ PYTHONDONTWRITEBYTECODE=1 \
7
+ PIP_NO_CACHE_DIR=1 \
8
+ PIP_DISABLE_PIP_VERSION_CHECK=1
9
+
10
+ WORKDIR /app
11
+ COPY requirements-docker.txt .
12
+ RUN pip install -r requirements-docker.txt
13
+
14
+ COPY . .
15
+
16
+ EXPOSE 8501
17
+ CMD ["streamlit", "run", "app.py", "--server.address=0.0.0.0", "--server.port=8501", \
18
+ "--server.headless=true", "--browser.gatherUsageStats=false"]
KURULUM.md ADDED
@@ -0,0 +1,257 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Tablo2SQL-TR — Kurulum ve ayrıntılı kullanım
2
+
3
+ **Dokümanlardaki Tabloların Yapılandırılmış Bilgi Tabanına Dönüştürülmesi ve Doğal Dille Sorgulanması (Text-to-SQL)**
4
+
5
+ PDF / HTML / CSV / XLSX belgelerindeki tabloları çıkarır, birleşik hücreleri ve çok satırlı başlıkları çözer,
6
+ Türkçe sayı/tarih/birim normalizasyonuyla SQLite'a aktarır ve Türkçe soruları kendini düzelten bir ajanla SQL'e çevirir.
7
+ Cevap tablolarda yoksa bunu açıkça söyler.
8
+
9
+ > 📘 **Kullanım kılavuzu (ekran görüntülü):** [Türkçe](docs/KULLANIM_KILAVUZU.md) · [çevrimdışı HTML](docs/kullanim_kilavuzu.html) · [Word](docs/Tablo2SQL-TR_Kullanim_Kilavuzu.docx)
10
+ >
11
+ > 📗 **User guide (with screenshots):** [English](docs/USER_GUIDE.md) · [offline HTML](docs/user_guide.html) · [Word](docs/Tablo2SQL-TR_User_Guide.docx)
12
+
13
+ ```
14
+ Belge (PDF/HTML) ─► Çıkarım (pdfplumber · Camelot · BeautifulSoup)
15
+ └► Çözümleme: rowspan/colspan, çok satırlı başlık, başlık/açıklama satırı ayıklama
16
+ └► Normalizasyon: '1.234,56'→1234.56 · '(1.200)'→-1200 · '%4,5'→4.5
17
+ 'Ocak 2024'→'2024-01' · birim ('bin TL', 'bin MWh') · 'Toplam' satırı bayrağı
18
+ └► SQLite + meta tablolar (_tablolar, _sutunlar)
19
+ Soru (TR) ─► Ajan: şema bağlama → SQL üretimi (LLM veya kural tabanlı) → statik denetim
20
+ → yürütme → sonuç denetimi → hata tipiyle geri besleme (≤N deneme) → Türkçe cevap / "cevap yok"
21
+ ```
22
+
23
+ ## Hızlı başlangıç (tek tık)
24
+
25
+ Zip'i bir klasöre çıkarın ve işletim sisteminize uygun başlatıcıyı çalıştırın:
26
+
27
+ | Sistem | Çalıştırın | Masaüstü kısayolu |
28
+ |---|---|---|
29
+ | Windows 10/11 | `baslat.bat` (çift tık) | `kisayol_olustur.bat` |
30
+ | macOS | `baslat.command` (ilk seferde **sağ tık › Aç**) | `kisayol_olustur.command` → Masaüstü'nde `Tablo2SQL.app` |
31
+ | Linux | `bash baslat.sh` | `bash kisayol_olustur.sh` → uygulama menüsü + masaüstü |
32
+
33
+ Başlatıcı şunları kendiliğinden yapar:
34
+
35
+ 1. **Python ≥ 3.10'u arar** (py başlatıcısı, PATH, Homebrew, python.org kurulumları, uv). Bulamazsa izin isteyerek kurar:
36
+ - Windows: `winget` → yoksa python.org kurulum dosyasını indirip sessizce kullanıcı hesabına kurar
37
+ - macOS: Homebrew → yoksa `uv` (yönetici izni gerekmez) → yoksa python.org paketini indirip açar
38
+ - Linux: `apt` / `dnf` / `pacman` / `zypper` / `apk` (sudo) → yoksa `uv` (yönetici izni gerekmez)
39
+ - Hiçbiri olmazsa ne yapılacağını adım adım yazar ve indirme sayfasını açar
40
+ 2. Proje içinde **sanal ortam** (`.venv`) kurar; Debian/Ubuntu'da eksik `python3-venv` paketini önerir. Klasör taşındığı
41
+ için bozulmuş bir `.venv`'i fark edip yeniden oluşturur.
42
+ 3. **Paketleri** `requirements.txt`'den kurar (dosya değişmedikçe tekrar kurmaz) ve tek tek içe aktararak doğrular.
43
+ 4. İsteğe bağlı bileşenler için **öneri** verir: LLM API anahtarı, Ollama (kurulu/çalışıyor mu, model var mı).
44
+ 5. Örnek belgeler eksikse üretir, **boş bir port** bulur (8501'den başlayarak), arayüzü başlatır, hazır olunca
45
+ **tarayıcıyı açar**. Uygulama zaten çalışıyorsa yenisini başlatmaz, mevcut sayfayı açar.
46
+ 6. İlk çalıştırmada masaüstü kısayolu oluşturmayı önerir.
47
+
48
+ Ek seçenekler (her üç başlatıcıda aynı): `--kontrol` (yalnızca denetle), `--sifirla` (.venv'i silip yeniden kur),
49
+ `--port 8600`, `--tarayici-yok`, `--kisayol`. Arayüz günlüğü: `outputs/arayuz.log`.
50
+
51
+ **Güvenlik uyarıları:** İnternetten indirilen betikler için Windows SmartScreen "Windows bilgisayarınızı korudu" derse
52
+ *Ek bilgi › Yine de çalıştır*; macOS "geliştirici doğrulanamadı" derse *sağ tık › Aç* (veya Sistem Ayarları ›
53
+ Gizlilik ve Güvenlik › Yine de Aç). Kısayol oluşturucu macOS'ta proje klasöründeki karantina işaretini kaldırır.
54
+
55
+ ## Elle kurulum ve çalıştırma
56
+
57
+ ```bash
58
+ python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
59
+ pip install -r requirements.txt
60
+
61
+ python scripts/run_all.py # örnek belgeler → veritabanları → test kümesi → değerlendirme → rapor
62
+ streamlit run app.py # arayüz: http://localhost:8501
63
+ pytest -q # 42 birim/entegrasyon testi
64
+
65
+ # Test edilen sürümler (Python 3.13): streamlit 1.65, pandas 3.0, camelot-py 2.0, pdfplumber 0.11, reportlab 5.0
66
+ ```
67
+
68
+ LLM arka uçları (isteğe bağlı):
69
+
70
+ ```bash
71
+ export ANTHROPIC_API_KEY=... && python scripts/run_all.py --claude # Claude
72
+ export OPENAI_API_KEY=... && python scripts/run_all.py --openai gpt-4o-mini # OpenAI uyumlu
73
+ ollama pull qwen2.5-coder:7b && python scripts/run_all.py --ollama qwen2.5-coder:7b # yerel, ücretsiz
74
+ ```
75
+
76
+ Arayüzde varsayılan model sağ üstteki model menüsünden seçilir; anahtarlar **Bağlantılar** penceresinden girilir.
77
+
78
+ ## Arayüz
79
+
80
+ Sayfalar üstteki gezinme çubuğundadır (dar pencerede sığmayanlar "more" menüsüne, telefonda yan menüye geçer).
81
+ Üst çubuğun sağında: varsayılan model ve ajan ayarları menüsü, **🔌 Bağlantılar**, **dil** (TR / EN) ve **tema**
82
+ (☀ / 🌙). Tercihler saklanır ve uygulama yeniden açıldığında korunur.
83
+
84
+ | Sekme | İçerik |
85
+ |---|---|
86
+ | ① Belgeler & çıkarım | Dosya yükle / örnek seç, çıkarıcı ve sayı kipi seç. Her tablo için **ham ızgara** (birleşik hücreler vurgulu), çözümlenmiş tablo, şema önizlemesi. AI açıksa: önerilen tablo adı, tablo özeti, sütun açıklamaları ve ayrıştırma uyarıları. Aktarım sonrası veritabanı hemen indirilebilir. |
87
+ | ② Bilgi tabanı | Tablolar ve meta veriler, veri görünümü, salt-okunur SQL konsolu. **Veritabanını indir:** SQLite (.db), Excel (.xlsx), CSV (.zip), SQL dökümü (.sql); tek tablo CSV/XLSX. AI açıksa tabloyu açıklama. |
88
+ | ③ Soru sor | Sohbet. Durum rozeti, SQL ve **ajan adımları**. AI açıksa: veritabanına özel örnek sorular, cümleleştirilmiş cevap, İngilizce soru desteği. |
89
+ | ④ Hata kataloğu | Hata tiplerinin tanımı/örneği/önlemi, kaydedilen hatalar. AI açıksa seçilen hatayı **sade dille açıklama**. |
90
+ | ⑤ Değerlendirme | Seçili arka uçla EX çalıştırma, soru bazında yanlışlar. AI açıksa başarısız örnekleri **temalara ayıran analiz**. |
91
+ | ⑥ Otomasyon | Seçilen testleri **arka planda sırayla** çalıştırır (tarayıcı kapansa da sürer). Önce tüm modelleri sınar; rastgele (üst model ağırlıklı), tek model ya da her model kipinde çalışır. Her test için **Türkçe/İngilizce HTML ve PDF** rapor + genel rapor; bitince bir kez uyarı penceresi. Ayrıntı: aşağıda *Otomasyon*. |
92
+ | ⑦ Raporlar | Geçmiş otomasyon çalıştırmaları: genel raporu sayfada görüntüleme, raporları tek tek ya da ZIP olarak indirme, çalıştırma silme. |
93
+
94
+ ## Otomasyon (⑥ sekmesi)
95
+
96
+ Başında beklemeden çok sayıda testi çalıştırmak için.
97
+
98
+ 1. **Testleri seç.** Liste uygulamadaki tüm kümeleri (TR-TabloSQL ana küme, pilot, stres, ağır, ağır hızlı;
99
+ PDF'ler varsa gerçek belge pilotu) ve dışarıdan eklenen testleri gösterir. *Dışarıdan test ekle*: belgeler
100
+ (PDF/HTML/CSV/XLSX) + `sorular.json` ya da hepsi tek ZIP. Örnek `sorular.json` sekmeden indirilebilir; dış
101
+ testler `testler/` klasörüne kaydedilir.
102
+ 2. **Model seçimi.**
103
+ - *Rastgele*: her test için çalışan modeller arasından seçer; üst kademe (ör. Opus/Fable, GPT-5/6, 30B+ yerel)
104
+ modeller daha sık seçilir (*üst model ağırlığı*). Çok pahalı `-pro` ve sohbet dışı modeller varsayılan
105
+ olarak havuz dışıdır.
106
+ - *Tek model*: tüm testler aynı modelle.
107
+ - *Her model*: her test seçilen her modelle (karşılaştırma için).
108
+ 3. **Model sınaması.** İş başlarken her model kısa bir ping ve küçük bir SQL göreviyle sınanır; cevap vermeyen ya
109
+ da SQL yazamayan modeller kullanılmaz. Rastgele kipte bir model test sırasında çökerse (çağrıların yarısından
110
+ fazlası hata) test başka bir modelle yeniden çalıştırılır.
111
+ 4. **Seçenekler.** Test başına soru sınırı (tohuma göre tekrarlanabilir örneklem), kendini düzeltme, deneme
112
+ sayısı, rapor dilleri ve biçimleri.
113
+ 5. **Başlat.** İş ayrı bir süreçte çalışır; sayfada ve üst çubukta canlı ilerleme görünür, *Durdur* ile
114
+ mevcut sorudan sonra durur. Bitince özetle bir uyarı penceresi açılır (sayfa o sırada kapalıysa bir sonraki
115
+ açılışta, yalnızca bir kez). Hiçbir dosya kendiliğinden indirilmez.
116
+ 6. **Raporlar** sekmesi: geçmiş çalıştırmalar; genel raporu sayfada görüntüleme, raporları tek tek ya da hepsini
117
+ ZIP olarak indirme.
118
+
119
+ Çıktılar: `outputs/otomasyon/isler/<tarih-saat>/` — `genel_rapor_{tr,en}.{html,pdf}`,
120
+ `testler/NN_<test>__<model>/rapor_{tr,en}.{html,pdf}` + `sonuclar.json`, `model_sinamasi.json`, `gunluk.txt`,
121
+ `tum_raporlar.zip`. Otomasyon, deney için dondurulmuş `t2s/` koduna dokunmaz; yalnızca onu kullanır.
122
+
123
+ ## Yapay zekâ (isteğe bağlı)
124
+
125
+ Sağlayıcı sağ üstteki model menüsünden seçilir: **Kural tabanlı (AI kapalı)**, **Claude**, **OpenAI / uyumlu**, **Ollama (yerel)**.
126
+
127
+ - **Model senkronizasyonu:** Model listesi sağlayıcının API'sinden otomatik çekilir (Claude `/v1/models`,
128
+ OpenAI `/v1/models`, Ollama `/api/tags`); model adını elle yazmak gerekmez. 🔄 düğmesi listeyi yeniler.
129
+ Ollama'da model yoksa önerilen modeller arayüzden indirilebilir. Komut satırında `--claude`, `--openai`,
130
+ `--ollama` model adı verilmeden kullanılırsa en yeni model otomatik seçilir.
131
+ - **Anahtarlar:** `.env.example` dosyasını `.env` olarak kopyalayıp doldurun ya da arayüze yazın
132
+ (arayüze yazılan anahtar yalnızca oturumda tutulur).
133
+ - **AI'nın kullanıldığı yerler:** SQL üretimi ve kendini düzeltme · tablo adı/özet/sütun açıklaması önerisi ·
134
+ örnek soru önerisi · cevabı cümleleştirme · hata açıklaması · değerlendirme analizi · çok tablolu
135
+ veritabanlarında şema seçimi. AI yalnızca öneri üretir; tablo çıkarma, sayı ayrıştırma ve denetimler
136
+ deterministik kalır. AI çıktıları arayüzde “AI tarafından üretildi” notuyla işaretlenir.
137
+ - **Hibrit çalışma:** AI'ya ulaşılamazsa soru otomatik olarak kural tabanlı üreticiyle yanıtlanır.
138
+ - **Önbellek ve kullanım:** Aynı AI isteği tekrar ücretlendirilmez (`outputs/.ai_onbellek.json`); kenar
139
+ çubuğunda çağrı ve belirteç sayısı gösterilir.
140
+ - **Test:** `tests/mock_llm_server.py`, üç sağlayıcının API biçimini taklit eden **sahte** bir sunucudur
141
+ (gerçek model değildir); entegrasyon testleri anahtar olmadan bununla çalışır.
142
+
143
+ Ekran görüntüleri: `outputs/ekran/` (`v2_*` dosyaları sahte sunucuyla alınmıştır; cevaplardaki `[MOCK]` öneki bunu gösterir).
144
+
145
+ ## Çıktılar
146
+
147
+ | Çıktı | Yer |
148
+ |---|---|
149
+ | Tablo çıkarma ve dönüştürme hattı | `t2s/extract.py`, `t2s/schema.py`, `t2s/trnum.py`, `t2s/pipeline.py` |
150
+ | Text-to-SQL modülü (ajan + LLM + kural tabanlı) | `t2s/agent.py`, `t2s/llm.py`, `t2s/rulebased.py` |
151
+ | Hata kataloğu | `t2s/errors.py` (tanımlar + çalışma zamanı sınıflandırıcı + değerlendirme teşhisi), `outputs/hata_gunlugu.jsonl` |
152
+ | Türkçe test kümesi (TR-TabloSQL, 99 soru) | `benchmark/tr_tablosoru.json`, üretici: `benchmark/build_benchmark.py` |
153
+ | Karşılaştırmalı başarım raporu | `outputs/basarim_raporu.html`, ham sonuçlar `outputs/sonuclar/`, `outputs/ozet.json` |
154
+
155
+ ## Mevcut sonuçlar (LLM'siz çalıştırma)
156
+
157
+ | Sistem | EX | Ayrılmış test EX | Cevapsız sorularda doğru red |
158
+ |---|---|---|---|
159
+ | Kural tabanlı · TR normalizasyon | %92,9 | %88,6 | %90,9 |
160
+ | Kural tabanlı · naif İngilizce yerel ayar | %29,3 | %28,6 | %90,9 |
161
+ | Kural tabanlı · sayılar metin | %13,1 | %14,3 | %90,9 |
162
+
163
+ **Türkçe sayı biçimi etkisi:** *Doğru* (altın) SQL sorguları, naif ayrıştırılmış veritabanlarında çalıştırıldığında
164
+ cevapların %71,6'sı (en kipi) ve %80,7'si (metin kipi) bozuluyor. Ör. `'1.346'` → 1,346 (1000 kat hata), `'4,5'` → 45,
165
+ `SUM('1.234,56')` → 1,234.
166
+
167
+ **Tablo çıkarma:** `auto` kipi 7 tablonun tamamında %100 hücre doğruluğu. pdfplumber ve Camelot-lattice çizgisiz tabloyu
168
+ bulamıyor; Camelot-stream çizgili ve çok satırlı başlıklı tablolarda başlık yapısını bozuyor (ort. %71,9).
169
+
170
+ ## Docker ile çalıştırma
171
+
172
+ Makaledeki sonuçların üretildiği paket sürümleri `requirements-docker.txt` dosyasında sabitlenmiştir.
173
+
174
+ Windows'ta `docker_baslat.bat`'a çift tıklamak yeterli (macOS: `docker_baslat.command`, Linux: `./docker_baslat.sh`); durdurmak için `docker_durdur.bat` (konteyneri yalnızca durdurur, silmez). Terminalden:
175
+
176
+ ```bash
177
+ docker compose build # imajı bir kez kur
178
+ docker compose up -d uygulama # arayüz: http://localhost:8501
179
+ docker compose run --rm deney scripts/llm_deneyi.py --saglayici claude --model <MODEL>
180
+ docker compose run --rm -w /app/gercek_pilot deney calistir.py --arka-uc kural
181
+ ```
182
+
183
+ LLM deneylerinin adım adım yönergesi: `DENEY_KILAVUZU.md` (Word: `Tablo2SQL-TR_Deney_Kilavuzu.docx`).
184
+
185
+ ## Model bağlantıları (Ollama, OpenAI, Claude)
186
+
187
+ Üst çubuktaki **🔌 Bağlantılar** düğmesi üç sağlayıcıyı tek yerde yönetir:
188
+
189
+ - **Ollama (yerel):** sunucu adresi, bağlantı durumu, kurulu modeller, Text-to-SQL için önerilen modeller ve uygulama
190
+ içinden indirme, hesaplama aygıtı (Otomatik / GPU / CPU).
191
+ - **OpenAI ve Claude (bulut):** anahtarı yapıştırıp *Kaydet ve senkronize et*; model listesi API'den çekilir. Anahtar
192
+ yalnızca maskeli gösterilir (`sk-…F1cA`). OpenAI için isteğe bağlı sunucu adresi (OpenAI uyumlu sunucular).
193
+ - Model listeleri açılışta kendiliğinden yenilenir. Varsayılan model sağ üstteki model menüsünden, her sekmenin modeli o sekmenin
194
+ başından seçilir.
195
+ - Bütün ayarlar `ayarlar/tablo2sql-ayarlar.json` dosyasındadır (anahtarlar düz metin; paylaşmayın). Panelden indirilip
196
+ başka bilgisayarda yüklenebilir.
197
+
198
+ ## LLM'leri ölçmek: ağır test kümesi
199
+
200
+ `agir_kume/` klasöründe LLM'ler için hazırlanmış ağır bir küme var: 13 türde **52 kurgusal belge tek veritabanında**,
201
+ **767 soru**, beş seviye (L1 değer okuma · L2 toplama/filtre · L3 çok adımlı hesap · L4 belgeler arası · L5 tuzak ve
202
+ cevapsız) ve İngilizce, Türkçe karaktersiz ve yazım hatalı sorular. 200 soruluk tabakalı bir *hızlı alt küme* de vardır.
203
+ Kural tabanlı motor bu kümede %13'te kalır; küme modeller arasındaki farkı görünür kılmak için tasarlandı.
204
+ Ayrıntılar: `agir_kume/README.md`.
205
+
206
+ Arayüzde **⑤ Değerlendirme → Model karşılaştırma** bölümü, seçilen modelleri aynı kümede yan yana çalıştırır ve seviye
207
+ bazında doğruluk, cevapsızda red ve sessiz yanlış oranını gösterir. Komut satırından:
208
+
209
+ ```bash
210
+ python pilot/pilot_calistir.py --kume agir_hizli --claude # en yeni Claude modeli
211
+ python pilot/pilot_calistir.py --kume agir --openai gpt-4.1-mini --sinir 100
212
+ python pilot/pilot_calistir.py --kume agir --ollama qwen2.5-coder:7b --cihaz gpu
213
+ ```
214
+
215
+ ### Makale protokolü (altın SQL'li kıyaslama + cevap düzeyindeki kümeler)
216
+
217
+ Makaledeki sonuçlar kural tabanlı üreticiyle alınmıştır. LLM'lerin başarımı için tek komutluk protokol (sabit model
218
+ sürümü, sıcaklık 0, hibrit geri düşme kapalı):
219
+
220
+ ```bash
221
+ python scripts/llm_deneyi.py --saglayici claude --model <sabit-model-sürümü> --kuru # önce token tahmini
222
+ python scripts/llm_deneyi.py --saglayici claude --model <sabit-model-sürümü>
223
+ python scripts/llm_deneyi.py --saglayici ollama --model qwen2.5-coder:7b # yerel, ücretsiz
224
+ ```
225
+
226
+ Beş koşul çalışır: döngü açık (ana sonuç), döngü kapalı (K = 1), statik denetim kapalı, sayılar metin olarak saklanmış
227
+ veritabanı ve İngilizce yerel ayarlı veritabanı. Ardından pilot, stres kümesi ve ağır kümenin hızlı alt kümesi cevap
228
+ düzeyinde çalıştırılır. Sonuçlar, güven aralıkları ve McNemar karşılaştırmaları `outputs/llm/<sağlayıcı_model>/rapor.md`
229
+ dosyasına yazılır.
230
+
231
+ ## Stres testi (görülmemiş belge düzenleri)
232
+
233
+ `pilot/` klasöründe kurgusal üç belge ve 44 soruyla stres testi bulunur; gerçek belgeler aynı düzenekle değerlendirilebilir.
234
+ Ayrıntılar: `pilot/README.md` ve `pilot/PILOT_RAPORU.md`.
235
+
236
+ Daha geniş küme `stres_kumesi/` klasöründedir: 11 belge türünden 33 kurgusal belge (ızgara, yatay çizgili, çizgisiz PDF
237
+ ve HTML) ve 307 soru. `python stres_kumesi/uret.py --tekrar N` ile istenen büyüklükte yeniden üretilebilir.
238
+ Ayrıntılar: `stres_kumesi/README.md` ve `stres_kumesi/STRES_RAPORU.md`.
239
+
240
+ ## Dürüstlük notları
241
+
242
+ - Örnek belgeler **sentetiktir** (gerçek kurum verisi değildir); gerçek Türk raporlarının yapısal zorluklarını taşıyacak
243
+ şekilde tasarlandı. Gerçek belgeler için: PDF'leri `data/docs/`'a koyun veya arayüzden yükleyin.
244
+ - Kural tabanlı sistem geliştirme bölümündeki 64 soru üzerinde ayarlandı; bu nedenle **genelleme ölçüsü ayrılmış test
245
+ bölümüdür** (35 soru, geliştirmede hiç kullanılmadı).
246
+ - Kural tabanlı üretici neredeyse hiç çalışma zamanı hatası yapmadığı için kendini düzeltmenin katkısı orada görünmüyor;
247
+ döngü asıl olarak LLM arka uçları için tasarlandı. Bu ortamda API anahtarı olmadığından LLM yolu canlı modelle değil,
248
+ betikli test arka ucuyla (`tests/test_sistem.py`: şema hatası, İ/I değer eşleme, toplam satırı) doğrulandı.
249
+ Gerçek LLM sayıları için `--claude/--openai/--ollama` ile çalıştırın; rapor otomatik olarak karşılaştırmaya ekler.
250
+ - Taranmış (görüntü) PDF'ler için OCR adımı yoktur (ör. `ocrmypdf` ile önce metin katmanı eklenebilir).
251
+
252
+ ## Test kümesini genişletme
253
+
254
+ 1. Belgeyi `data/docs/`'a koyun, `data/ground_truth/<id>.json` dosyasına doğru başlık ve gövdeyi yazın
255
+ (biçim için mevcut dosyalara bakın; referans veritabanı buradan kurulur).
256
+ 2. `benchmark/build_benchmark.py` içindeki `Q` (geliştirme) veya `QT` (test) listesine
257
+ `(soru, altın_sql | None, zorluk, kategoriler, kanıt, uyarlama)` ekleyin. Betik her altın SQL'i çalıştırıp doğrular.
LICENSE ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Tablo2SQL-TR yazarları
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
23
+ ---
24
+ Veri kümeleri (data/, benchmark/, pilot/, stres_kumesi/, agir_kume/, gercek_pilot/sorular*,
25
+ veri/, sonuclar_llm/) Creative Commons Attribution 4.0 (CC BY 4.0) lisansıyla paylaşılır.
26
+ Gerçek belge pilotundaki 18 PDF bu pakette yoktur; haklar ilgili kurumlara aittir.
README.md CHANGED
@@ -1,3 +1,200 @@
1
  ---
2
  license: cc-by-4.0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
  license: cc-by-4.0
3
+ language:
4
+ - tr
5
+ - en
6
+ pretty_name: "TR-TabloSQL: Türkçe belge tablolarında Text-to-SQL"
7
+ task_categories:
8
+ - table-question-answering
9
+ - question-answering
10
+ tags:
11
+ - text-to-sql
12
+ - turkish
13
+ - table-extraction
14
+ - pdf
15
+ - benchmark
16
+ - llm-evaluation
17
+ size_categories:
18
+ - 1K<n<10K
19
+ configs:
20
+ - config_name: tr_tablosql
21
+ data_files: veri/tr_tablosql.jsonl
22
+ - config_name: pilot
23
+ data_files: veri/pilot.jsonl
24
+ - config_name: stres
25
+ data_files: veri/stres.jsonl
26
+ - config_name: agir
27
+ data_files: veri/agir.jsonl
28
+ - config_name: gercek
29
+ data_files: veri/gercek.jsonl
30
+ - config_name: sonuclar
31
+ data_files: veri/sonuclar.jsonl
32
  ---
33
+
34
+ # Tablo2SQL-TR ve TR-TabloSQL
35
+
36
+ **Türkçe belgelerdeki tabloları sorgulanabilir bir bilgi tabanına dönüştüren uçtan uca sistem, test kümeleri ve LLM deney sonuçları.**
37
+
38
+ Tablo2SQL-TR, PDF, HTML, CSV ve XLSX belgelerdeki tabloları çıkarır. Birleşik hücreleri ve çok satırlı başlıkları çözer. Türkçe sayı, tarih ve birim yazımlarını normalleştirir (`1.234,56` → 1234.56, `(1.200)` → −1200, `Ocak 2024` → `2024-01`). Tabloları meta veriyle birlikte SQLite'a aktarır. Türkçe soruları kendini düzelten bir ajanla SQL'e çevirir. Cevap tablolarda yoksa uydurmak yerine bunu açıkça söyler.
39
+
40
+ Bu depoda üç şey bir arada:
41
+
42
+ 1. **Uygulama:** kaynak kod, web arayüzü ve tek tıkla başlatıcılar.
43
+ 2. **Test kümeleri:** 5 küme, 1.406 soru.
44
+ 3. **Deney sonuçları:** kural tabanlı üretici ve 6 LLM için soru düzeyinde 5.012 kayıt.
45
+
46
+ *English summary at the end.*
47
+
48
+ ![Soru sor sekmesi](docs/ekran/03_soru_sor.png)
49
+
50
+ ## Öne çıkan sonuçlar
51
+
52
+ Doğruluk, cevap düzeyinde ölçüldü. Her sistem aynı sorulara, aynı veritabanlarında cevap verdi.
53
+
54
+ | Küme | Kural tabanlı | Claude Opus 5.5 | GPT-6.1-sol | Qwen2.5-Coder-32B (yerel) |
55
+ |---|---|---|---|---|
56
+ | Stres (33 belge, 307 soru) | %42,7 | **%89,9** | %76,9¹ | %62,5 |
57
+ | Ağır, hızlı alt küme (200 soru) | %14,5 | **%90,0** | %83,0 | %63,5 |
58
+ | Gerçek belge pilotu (18 belge, 189 soru) | %19,6 | %59,8 | **%62,4** | %28,6 |
59
+ | Sessiz yanlış, gerçek belgeler | %40,7 | **%2,6** | %5,3 | %9,5 |
60
+
61
+ ¹ Bu çalıştırmada 34 soruda API hata döndürdü. Bu sorular dışarıda tutulursa sonuç %85,0.
62
+
63
+ - **Yerel sayı biçimi bir ön koşul.** TR-TabloSQL'de Türkçe normalizasyonla kural tabanlı üretici %92,9'a ulaşıyor. İngilizce yerel ayar varsayıldığında, kusursuz altın SQL sorgularının bile yalnızca %28,4'ü doğru sonuç veriyor ve hiçbir hata mesajı çıkmıyor.
64
+ - **Güçlü LLM'lerle darboğaz tablo çıkarımına kayıyor.** Gerçek belgelerde değeri veritabanına doğru okunamamış 32 sorudan her model yalnızca ikisini çözebildi. Bu sorular dışarıda tutulunca bulut modelleri %70,7–73,9'a çıkıyor.
65
+ - **Denetim zinciri sessiz hataları yakalıyor.** 159 bozuk sorguyla yapılan hata enjeksiyonunda hataların %92,5'i yakalandı ve hiç yanlış alarm üretilmedi.
66
+
67
+ ## Ekran görüntüleri
68
+
69
+ | | |
70
+ |---|---|
71
+ | ![Belgeler](docs/ekran/01_belgeler.png) **Belgeler:** tablo çıkarma; birleşik hücreler mavi, Türkçe sayılar çözümlenmiş | ![Bilgi tabanı](docs/ekran/02_bilgi_tabani.png) **Bilgi tabanı:** aktarılan tablolar, meta veri, SQL konsolu ve dışa aktarma |
72
+ | ![Soru sor](docs/ekran/10_soru_red.png) **Soru sor:** cevap ve SQL; tablolarda olmayan bir varlık için gerekçeli red | ![Hata kataloğu](docs/ekran/04_hata_katalogu.png) **Hata kataloğu:** Türkçeye özgü hata tipleri, örnekler ve önlemler |
73
+ | ![Değerlendirme](docs/ekran/05_degerlendirme.png) **Değerlendirme:** modelleri test kümelerinde karşılaştırma, seviyelere göre doğruluk | ![Otomasyon](docs/ekran/06_otomasyon.png) **Otomasyon:** testleri ve modelleri seçip arka planda çalıştırma |
74
+ | ![Raporlar](docs/ekran/07_raporlar.png) **Raporlar:** geçmiş çalıştırmalar; raporları tek tek ya da ZIP olarak indirme | ![Genel rapor](docs/ekran/08_genel_rapor.png) **Genel rapor (HTML/PDF, TR/EN):** aydınlık/karanlık tema |
75
+ | ![Test raporu](docs/ekran/09_test_raporu.png) **Test raporu:** soru tipi, zorluk ve soru ailesine göre kırılım | |
76
+
77
+ ## Hızlı başlangıç
78
+
79
+ ```bash
80
+ # Windows: baslat.bat (çift tık) · macOS: baslat.command · Linux:
81
+ bash baslat.sh
82
+ ```
83
+
84
+ Başlatıcı şunları kendisi yapar:
85
+
86
+ - Gerekirse Python'u kurar.
87
+ - Bir sanal ortam oluşturur ve paketleri yükler.
88
+ - Tarayıcıda `http://localhost:8501` adresini açar.
89
+
90
+ Uygulama LLM olmadan, kural tabanlı üreticiyle çalışır. Claude, OpenAI ya da yerel Ollama modelleri **Bağlantılar** düğmesinden eklenir.
91
+
92
+ Docker ile çalıştırmak için:
93
+
94
+ ```bash
95
+ docker compose up -d # durdurmak için: docker compose stop
96
+ ```
97
+
98
+ Elle kurulum, tüm seçenekler ve deneyleri yeniden üretme adımları için [KURULUM.md](KURULUM.md) dosyasına bakın. Ekran görüntülü kullanım kılavuzları için: [Türkçe](docs/KULLANIM_KILAVUZU.md) · [English](docs/USER_GUIDE.md).
99
+
100
+ > **Güvenlik:** API anahtarları `ayarlar/tablo2sql-ayarlar.json` dosyasına düz metin olarak yazılır. Bu dosya pakette yoktur. Kendi kopyanızı paylaşmayın ve depoya yüklemeyin.
101
+
102
+ ## Test kümeleri
103
+
104
+ | Küme | Belge | Soru | İçerik | Konum |
105
+ |---|---|---|---|---|
106
+ | **TR-TabloSQL** | 6 sentetik (4 PDF, 2 HTML), 7 tablo | 99 (64 geliştirme / 35 test) | Altın SQL; Spider/BIRD tiplerinden uyarlama; 11 cevapsız soru | `benchmark/`, `data/` |
107
+ | **Pilot** | 3 | 44 | Ana kümeden bilerek farklı düzenler | `pilot/` |
108
+ | **Stres** | 33 (11 tür × 3) | 307 (39 cevapsız) | Izgara, yalnız yatay çizgi, çizgisiz PDF ve HTML | `stres_kumesi/` |
109
+ | **Ağır** | 52, tek veritabanında | 767 (200'lük hızlı alt küme) | L1–L5 seviyeleri; %20'si İngilizce, Türkçe karaktersiz ya da yazım hatalı | `agir_kume/` |
110
+ | **Gerçek belge pilotu** | 7 kurumdan 18 gerçek PDF | 189 (19 cevapsız) | Bağımsız yazılmış ve denetlenmiş sorular | `gercek_pilot/` |
111
+
112
+ Sentetik belgeler tohumlanmış rastgele sayılarla üretilir. Gerçek kurum verisi içermezler, ama Türk kamu belgelerinin düzenini ve yazım kurallarını taklit ederler. Belgeleri yeniden üreten betikler her klasördedir.
113
+
114
+ **Gerçek belgeler bu pakette yoktur,** çünkü belgelerin hakları ilgili kurumlara aittir. Belgeler kurumların internet sitelerinden indirilmeli:
115
+
116
+ - Kaynakların listesi [`gercek_pilot/README.md`](gercek_pilot/README.md) dosyasında.
117
+ - İndirilen dosyaların doğru sürüm olduğu SHA-256 özetleriyle denetlenebilir. Komut `gercek_pilot` klasöründen çalıştırılır: `sha256sum -c belgeler.sha256`.
118
+
119
+ Kod deneylerden önce donduruldu. Dosyaların SHA-256 özetleri `kod_parmak_izi.txt` dosyalarında; çalıştırma betikleri bu özetleri kontrol eder.
120
+
121
+ ### Hugging Face veri görüntüleyicisi (`veri/`)
122
+
123
+ Soru kümeleri ve sonuçlar, veri görüntüleyicide açılabilsin diye düz JSONL olarak da verildi:
124
+
125
+ ```python
126
+ from datasets import load_dataset
127
+ gercek = load_dataset("<kullanıcı>/tr-tablosql", "gercek", split="train")
128
+ sonuc = load_dataset("<kullanıcı>/tr-tablosql", "sonuclar", split="train")
129
+ ```
130
+
131
+ | Yapılandırma | Satır | Alanlar |
132
+ |---|---|---|
133
+ | `tr_tablosql` | 99 | `id, bolum, soru, altin_sql, cevaplanabilir, zorluk, kategoriler, kanit, tablolar` |
134
+ | `pilot`, `stres`, `agir`, `gercek` | 44 / 307 / 767 / 189 | `id, belge, soru, tip, cevap_json, aile, zorluk` ve kümeye özgü alanlar (`seviye`, `dil`, `cizim`, `sayfa`, `tablo` …) |
135
+ | `sonuclar` | 5.012 | `kume, model, calistirma, id, dogru, durum, bulunan, beklenen_json, sql` |
136
+
137
+ Cevaplar farklı tiplerde olabilir (sayı, metin ya da liste). Bu yüzden JSON metni olarak saklandılar: `json.loads(r["cevap_json"])`.
138
+
139
+ ## Deney sonuçları (`sonuclar_llm/`)
140
+
141
+ | Klasör | İçerik |
142
+ |---|---|
143
+ | `20261026-021813/` | 26.10.2026 çalıştırması: her test için rastgele seçilen üst kademe model. TR-TabloSQL'de GPT-5.2, pilotta Claude Opus 5.5, stresde GPT-6.1-sol, ağır hızlı alt kümede Claude Opus 4.5, ağır tam kümede GPT-5. |
144
+ | `20261027-043315/` | 27.10.2026 çalıştırması: stres, ağır hızlı alt küme ve gerçek belge kümelerinin her biri üç modelle. 4 sa 51 dk sürdü. |
145
+ | `kural_tabanli/` | Kural tabanlı üreticinin aynı kümelerdeki sonuçları. |
146
+ | `analiz.py`, `llm_analiz.json`, `gercek_kirilim.json` | Güven aralıkları, McNemar testleri ve gerçek belgelerde belge türüne göre kırılım. |
147
+
148
+ Her test klasöründe soru başına SQL, cevap ve hakem kararı (`sonuclar.json`, `ozet_normal.json`) ile Türkçe ve İngilizce HTML/PDF raporlar bulunur.
149
+
150
+ Bulut modelleri sağlayıcı API'leriyle çalıştırıldı. API'ler sıcaklık parametresini kabul etmediği için sağlayıcının varsayılan ayarı kullanıldı; bu nedenle sonuçlar soru düzeyinde küçük farklarla değişebilir. Yerel model Ollama ile, sıcaklık 0'da çalıştırıldı.
151
+
152
+ ## Klasör yapısı
153
+
154
+ ```
155
+ app.py, arayuz_tema.py web arayüzü (Streamlit)
156
+ t2s/ çıkarma, normalizasyon, ajan, denetim zinciri, LLM istemcileri
157
+ otomasyon/ arka planda çoklu test/model çalıştırma ve rapor üretimi
158
+ benchmark/, data/ TR-TabloSQL soruları, sentetik belgeler, doğru içerik dosyaları
159
+ pilot/, stres_kumesi/, agir_kume/, gercek_pilot/ diğer test kümeleri ve raporları
160
+ veri/ Hugging Face görüntüleyicisi için JSONL dosyaları
161
+ sonuclar_llm/ LLM ve kural tabanlı deneylerin ham sonuçları
162
+ outputs/ TR-TabloSQL, ablasyon ve hata enjeksiyonu çıktıları
163
+ scripts/, tests/ yardımcı betikler ve testler (pytest)
164
+ docs/ kullanım kılavuzları ve ekran görüntüleri
165
+ ```
166
+
167
+ ## Lisans
168
+
169
+ - **Kod:** MIT.
170
+ - **Test kümeleri ve sonuçlar:** CC BY 4.0.
171
+
172
+ Ayrıntılar [LICENSE](LICENSE) dosyasında. Gerçek belgelerin hakları ilgili kurumlara aittir.
173
+
174
+ ## Atıf
175
+
176
+ Makale değerlendirme sürecindedir. Atıf bilgisi yayımlandıktan sonra eklenecektir.
177
+
178
+ ---
179
+
180
+ ## English summary
181
+
182
+ **Tablo2SQL-TR** is an end-to-end system for question answering over tables in Turkish documents. It:
183
+
184
+ - extracts tables from PDF, HTML, CSV and XLSX files and resolves merged cells and multi-row headers;
185
+ - normalises Turkish number, date and unit notations;
186
+ - loads the tables with metadata into SQLite;
187
+ - answers Turkish or English questions with a self-correcting Text-to-SQL agent that abstains when the answer is not in the tables.
188
+
189
+ This repository contains:
190
+
191
+ - the code and web app;
192
+ - five benchmarks with 1,406 questions in total: TR-TabloSQL, pilot, stress, heavy, and an 18-document real-world pilot. Real PDFs are not redistributed; sources and SHA-256 hashes are given.
193
+ - question-level results of a rule-based generator and six LLMs (5,012 records).
194
+
195
+ The main findings:
196
+
197
+ - Locale-aware normalisation is a prerequisite. Under an English-locale assumption, even gold SQL returns correct results for only 28.4% of questions, with no error raised.
198
+ - With strong LLMs (Claude Opus 5.5 reaches 89.9–90.0% on synthetic sets and 59.8% on real documents; GPT-6.1-sol 62.4% on real documents), the bottleneck shifts from SQL generation to table extraction.
199
+
200
+ Quick start: `bash baslat.sh` (or `baslat.bat` / `baslat.command`), or `docker compose up -d`. The interface is available in English via the TR/EN switch. See [docs/USER_GUIDE.md](docs/USER_GUIDE.md).
Tablo2SQL-TR_Deney_Kilavuzu.docx ADDED
Binary file (20.4 kB). View file
 
agir_kume/README.md ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Ağır LLM test kümesi
2
+
3
+ Bu küme, büyük dil modellerini Türkçe belge tabloları üzerinde zorlamak için hazırlandı. Bütün belgeler kurgusaldır
4
+ ve her sayfada "KURGUSAL ÖRNEK BELGE" uyarısı vardır.
5
+
6
+ | | |
7
+ |---|---|
8
+ | Belge | 52 (13 tür × 4 kurum), 13 ızgara + 13 yatay çizgili + 13 çizgisiz PDF, 13 HTML |
9
+ | Veritabanı | **Tek veritabanı**, 57 tablo. Aynı türden dört kurumun neredeyse aynı başlıklı tabloları vardır |
10
+ | Soru | 767 (hızlı alt küme: 200, seviye × dil tabakalı) |
11
+ | Seviye | L1 118 · L2 193 · L3 264 · L4 92 · L5 100 |
12
+ | Dil | Türkçe 619 · İngilizce 61 · Türkçe karaktersiz 46 · yazım hatalı 41 |
13
+ | Cevap tipi | sayı 442 · metin 181 · liste 44 · cevapsız 100 |
14
+
15
+ ## Belge türleri
16
+
17
+ Belediye bütçesi (gider + gelir), mahalle nüfusu (60 satıra kadar, sayfaya bölünen), personel sayısı, su tarifesi,
18
+ KAP tarzı finansal tablolar (bölüm başlıkları, dipnot sütunu, parantezli negatifler), il turizm bülteni (yıl × çeyrek),
19
+ aylık konut satışı, TÜFE, üniversite öğrenci sayıları, yatırım programı, elektrik tüketimi, **havalimanı yolcu
20
+ trafiği** (yıl × hat iki seviyeli başlık) ve **trafik kazaları** (ilçe × yıl uzun biçim).
21
+
22
+ ## Seviyeler
23
+
24
+ | Seviye | Aileler |
25
+ |---|---|
26
+ | L1 değer okuma | kurum adıyla nitelenmiş tek hücre |
27
+ | L2 tek tablo işlemleri | toplam (toplam satırı tuzağı), ortalama, eşik sayımı, en yüksek/en düşük, uzun biçimde yıla göre toplam, bin/milyon TL → TL |
28
+ | L3 çok adımlı hesap | iki sütunun oranı, yüzde değişim, en çok artan, pay, sıra, ikinci en yüksek, ortalamanın üstü, ilk üç |
29
+ | L4 belgeler arası | iki kurumu karşılaştırma, farklı birimlerde tutulan tutarların TL farkı, dört kurumun toplamı, aynı abone grubunun iki belediyedeki fiyat farkı |
30
+ | L5 tuzak ve cevapsız | başka kurumun tablosunda olan varlık, belgede olmayan yıl, o türde belgesi olmayan kurum, tabloda olmayan gösterge |
31
+
32
+ ## Altın cevaplar
33
+
34
+ Cevaplar üreticide belgede görünen (yuvarlanmış) değerlerden hesaplanır. Üreticiye erişimi olmayan ayrı bir denetçi,
35
+ seviye tabakalı 80 soruyu belgelerden kendisi hesapladı: **80/80 doğru** (`altin_denetimi.json`). Denetçinin bulduğu 3
36
+ belirsiz soru kalıbı (yılı belirtilmemiş çok yıllı toplam, endeks değerlerinin toplamı, yılı belirsiz "önceki yıl"
37
+ sütunu) ve dilbilgisi sorunları üreticide düzeltildi; küme yeniden üretildi.
38
+
39
+ ## Taban çizgisi
40
+
41
+ | Arka uç | Genel | L1 | L2 | L3 | L4 | L5 | Sessiz yanlış |
42
+ |---|---|---|---|---|---|---|---|
43
+ | Kural tabanlı (tam küme) | %13,0 | %16,1 | %16,6 | %5,3 | %0 | %35,0 | %78,9 |
44
+
45
+ Kural tabanlı motor kurum adını tablo kaynağına bağlayamadığı ve çok adımlı hesap şablonu olmadığı için düşük kalır.
46
+ Bu bilinçli bir tasarımdır: küme LLM'ler arasındaki farkı görünür kılmak için hazırlandı.
47
+
48
+ ## Çalıştırma
49
+
50
+ ```bash
51
+ python agir_kume/uret.py # yeniden üret (--tekrar 6 ile 78 belge)
52
+ python pilot/pilot_calistir.py --kume agir_hizli --claude
53
+ python pilot/pilot_calistir.py --kume agir --ollama qwen2.5-coder:7b --cihaz gpu --sinir 100
54
+ ```
55
+
56
+ Arayüzde: **⑤ Değerlendirme → Model karşılaştırma**. Veritabanı ilk çalıştırmada kurulur (yaklaşık bir dakika) ve
57
+ çıkarım kodu değişmedikçe yeniden kullanılır.
58
+
59
+ ## Değerlendirme kuralları
60
+
61
+ Cevap düzeyindedir, altın SQL kullanılmaz (`t2s/qa_eval.py`): sayılar |a − b| ≤ 0,01 + 10⁻³·|b| toleransıyla, metinler
62
+ Türkçe katlama ve tarih/dönem normalleştirmesiyle, listeler küme olarak karşılaştırılır; kurum adı cevaplarında kısa
63
+ adın geçmesi yeterlidir. Cevapsız sorularda sistemin cevap vermemesi doğrudur. **Sessiz yanlış**, sistemin cevap
64
+ üretip yanlış çıktığı soruların oranıdır.
agir_kume/altin_denetimi.json ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "orneklem": 80,
3
+ "dogru": 80,
4
+ "hatali": [],
5
+ "belirsiz": [
6
+ {
7
+ "id": "A0596",
8
+ "soru": "Akköprü Belediyesi, Çınarlı Belediyesi, Bademli Belediyesi ve Gökdere Belediyesi için toplam memur sayısı değerlerinin toplamı kaç?",
9
+ "neden": "Yıl belirtilmemiş: altın (5317) 4 belediyenin 2021-2025 beş yılının memur sayılarını topluyor; personel sayısı stok değişken olduğundan okuyucu tek bir yıl (ör. 2025: 181+342+245+296=1064) bekleyebilir."
10
+ },
11
+ {
12
+ "id": "A0617",
13
+ "soru": "Deniztepe Bölgesi, Aksungur Bölgesi ve Ardıçlı Bölgesi için 2025 yılı toplam tüketici fiyat endeksi değerlerinin toplamı kaç?",
14
+ "neden": "'Toplam tüketici fiyat endeksi' 12 aylık endeks değerlerinin toplamı (99009.68) olarak alınmış; endeks toplamı anlamsız bir büyüklük, ortalama veya Aralık değeri olarak da okunabilir."
15
+ },
16
+ {
17
+ "id": "A0065",
18
+ "soru": "Ardıçlı İlinde önceki yılın aynı ayındaki satış ikinci en yüksek olan ay hangisidir?",
19
+ "neden": "'Önceki yılın aynı ayındaki satış' sütunu 2023 aylarını gösteriyor ama altın satır etiketi '2024/12' veriyor; doğru cevap '2023 Aralık' olarak da beklenebilir."
20
+ }
21
+ ],
22
+ "dil_sorunlari": [
23
+ {
24
+ "id": "A0025",
25
+ "soru": "Yeşilvadi Belediyesinde 2024 yılında gelir gelir türleri ortalamasının üzerinde olan kaç gelir türü vardır?",
26
+ "neden": "'gelir gelir türleri ortalamasının' — kelime tekrarı (dil='tr', kasıtlı yazım gürültüsü değil)."
27
+ },
28
+ {
29
+ "id": "A0705",
30
+ "soru": "Kartaltepe Belediyesinde 2021 yılında Personel Giderleri'nin gerçekleşme ne kadardır?",
31
+ "neden": "'Personel Giderleri'nin gerçekleşme ne kadardır' — iyelik eki eksik ('gerçekleşmesi'); aynı kalıp A0740'ta da var."
32
+ },
33
+ {
34
+ "id": "A0745",
35
+ "soru": "Akköprü Belediyesinde 2021 yılında Kazım Karabekir Mahallesinin nüfus ne kadardır?",
36
+ "neden": "'Kazım Karabekir Mahallesinin nüfus ne kadardır' — 'nüfusu' olmalı; aynı kalıp A0712, A0706'da da var."
37
+ },
38
+ {
39
+ "id": "A0703",
40
+ "soru": "Bademli Belediyesinde 2025 yılında Sosyal Güvenlik Kurumlarına Devlet Primi Giderleri'nin toplam ödenek ne kadardır?",
41
+ "neden": "'...Giderleri'nin toplam ödenek ne kadardır' — 'toplam ödeneği' olmalı; aynı kalıp A0685'te de var."
42
+ }
43
+ ]
44
+ }
agir_kume/belgeler/belediye_00_yesilvadi_2024_butce.pdf ADDED
Binary file (47.3 kB). View file
 
agir_kume/belgeler/belediye_01_akkopru_mahalle.pdf ADDED
Binary file (48.4 kB). View file
 
agir_kume/belgeler/belediye_07_akkopru_personel.html ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html><html lang='tr'><head><meta charset='utf-8'><title>AKKÖPRÜ BELEDİYESİ İNSAN KAYNAKLARI RAPORU</title><style>body{font-family:DejaVu Sans,Arial,sans-serif;max-width:960px;margin:24px auto}table{border-collapse:collapse;margin:8px 0}td,th{border:1px solid #888;padding:3px 8px;font-size:13px}td:not(:first-child){text-align:right}tfoot td{border:none;font-size:11px;text-align:left!important}.uyari{color:#9a3412;font-size:12px}</style></head><body>
2
+ <p class='uyari'>KURGUSAL ÖRNEK BELGE — Tablo2SQL-TR stres testi için üretilmiştir; gerçek kurum verisi değildir.</p><h1>AKKÖPRÜ BELEDİYESİ İNSAN KAYNAKLARI RAPORU</h1>
3
+ <p>Akköprü Belediyesinde son beş yılda istihdam edilen personel sayıları aşağıdadır.</p>
4
+ <table><caption>Tablo 7: Yıllara Göre Personel Sayısı (Kişi)</caption><thead>
5
+ <tr><th>Yıl</th><th>Memur</th><th>Kadrolu İşçi</th><th>Sözleşmeli Personel</th><th>Toplam</th></tr>
6
+ </thead><tbody>
7
+ <tr><td>2021</td><td>182</td><td>174</td><td>60</td><td>416</td></tr>
8
+ <tr><td>2022</td><td>306</td><td>58</td><td>41</td><td>405</td></tr>
9
+ <tr><td>2023</td><td>264</td><td>147</td><td>89</td><td>500</td></tr>
10
+ <tr><td>2024</td><td>183</td><td>244</td><td>38</td><td>465</td></tr>
11
+ <tr><td>2025</td><td>181</td><td>145</td><td>45</td><td>371</td></tr>
12
+ </tbody>
13
+ </table>
14
+ </body></html>
agir_kume/belgeler/belediye_10_yesilvadi_2025_tarife.pdf ADDED
Binary file (46.2 kB). View file
 
agir_kume/belgeler/belediye_13_serinsu_2025_butce.pdf ADDED
Binary file (47.1 kB). View file
 
agir_kume/belgeler/belediye_14_cinarli_mahalle.pdf ADDED
Binary file (47.8 kB). View file
 
agir_kume/belgeler/belediye_20_cinarli_personel.pdf ADDED
Binary file (45.6 kB). View file
 
agir_kume/belgeler/belediye_23_serinsu_2025_tarife.html ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html><html lang='tr'><head><meta charset='utf-8'><title>SERINSU BELEDİYESİ SU TARİFELERİ YÖNETMELİĞİ EKİ</title><style>body{font-family:DejaVu Sans,Arial,sans-serif;max-width:960px;margin:24px auto}table{border-collapse:collapse;margin:8px 0}td,th{border:1px solid #888;padding:3px 8px;font-size:13px}td:not(:first-child){text-align:right}tfoot td{border:none;font-size:11px;text-align:left!important}.uyari{color:#9a3412;font-size:12px}</style></head><body>
2
+ <p class='uyari'>KURGUSAL ÖRNEK BELGE — Tablo2SQL-TR stres testi için üretilmiştir; gerçek kurum verisi değildir.</p><h1>SERINSU BELEDİYESİ SU TARİFELERİ YÖNETMELİĞİ EKİ</h1>
3
+ <p>Serinsu Belediyesi Meclisinin kararı ile 2025 yılı su ve atıksu tarifeleri belirlenmiştir.</p>
4
+ <table><caption>Tablo 1: Abone Gruplarına Göre Su ve Atıksu Tarifeleri (01.03.2025 tarihinden itibaren)</caption><thead>
5
+ <tr><th>Abone Grubu</th><th>Su Bedeli (TL/m³)</th><th>Atıksu Bedeli (TL/m³)</th><th>Toplam (TL/m³)</th></tr>
6
+ </thead><tbody>
7
+ <tr><td>Konut (0-10 m³)</td><td>21,39</td><td>7,73</td><td>29,12</td></tr>
8
+ <tr><td>Konut (11-20 m³)</td><td>29,24</td><td>9,08</td><td>38,32</td></tr>
9
+ <tr><td>Konut (20 m³ üzeri)</td><td>30,48</td><td>14,00</td><td>44,48</td></tr>
10
+ <tr><td>İşyeri</td><td>78,05</td><td>38,55</td><td>116,60</td></tr>
11
+ <tr><td>Resmi Daire</td><td>55,85</td><td>29,76</td><td>85,61</td></tr>
12
+ <tr><td>İnşaat</td><td>91,33</td><td>37,98</td><td>129,31</td></tr>
13
+ <tr><td>Organize Sanayi</td><td>21,00</td><td>12,11</td><td>33,11</td></tr>
14
+ </tbody>
15
+ <tfoot><tr><td colspan='4'>Fiyatlara KDV dahil değildir.</td></tr></tfoot>
16
+ </table>
17
+ </body></html>
agir_kume/belgeler/belediye_26_kartaltepe_2025_butce.pdf ADDED
Binary file (46.9 kB). View file
 
agir_kume/belgeler/belediye_27_bademli_mahalle.html ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html><html lang='tr'><head><meta charset='utf-8'><title>BADEMLI BELEDİYESİ MAHALLE NÜFUS BİLGİLERİ</title><style>body{font-family:DejaVu Sans,Arial,sans-serif;max-width:960px;margin:24px auto}table{border-collapse:collapse;margin:8px 0}td,th{border:1px solid #888;padding:3px 8px;font-size:13px}td:not(:first-child){text-align:right}tfoot td{border:none;font-size:11px;text-align:left!important}.uyari{color:#9a3412;font-size:12px}</style></head><body>
2
+ <p class='uyari'>KURGUSAL ÖRNEK BELGE — Tablo2SQL-TR stres testi için üretilmiştir; gerçek kurum verisi değildir.</p><h1>BADEMLI BELEDİYESİ MAHALLE NÜFUS BİLGİLERİ</h1>
3
+ <p>Bademli Belediyesi sınırları içindeki mahallelerin 2025 yılı nüfus ve hane bilgileri aşağıda sunulmuştur.</p>
4
+ <table><caption>Tablo 8: Mahallelere Göre Nüfus ve Hane Sayısı</caption><thead>
5
+ <tr><th>Mahalle</th><th>Nüfus (2024)</th><th>Nüfus (2025)</th><th>Hane Sayısı (2025)</th><th>Değişim (%)</th></tr>
6
+ </thead><tbody>
7
+ <tr><td>Çınarlı</td><td>20.172</td><td>20.248</td><td>6.257</td><td>0,38</td></tr>
8
+ <tr><td>Şirinevler</td><td>12.337</td><td>11.815</td><td>3.627</td><td>-4,23</td></tr>
9
+ <tr><td>Dumlupınar</td><td>20.494</td><td>21.221</td><td>8.389</td><td>3,55</td></tr>
10
+ <tr><td>Esentepe</td><td>5.730</td><td>6.117</td><td>2.181</td><td>6,75</td></tr>
11
+ <tr><td>Ziya Gökalp</td><td>24.882</td><td>25.989</td><td>7.066</td><td>4,45</td></tr>
12
+ <tr><td>Güzeltepe</td><td>18.650</td><td>19.482</td><td>5.810</td><td>4,46</td></tr>
13
+ <tr><td>Mevlana</td><td>6.751</td><td>7.216</td><td>2.133</td><td>6,89</td></tr>
14
+ <tr><td>İstiklal</td><td>22.724</td><td>22.408</td><td>6.895</td><td>-1,39</td></tr>
15
+ <tr><td>Emek</td><td>8.584</td><td>8.607</td><td>2.729</td><td>0,27</td></tr>
16
+ <tr><td>İnönü</td><td>5.442</td><td>5.672</td><td>2.085</td><td>4,23</td></tr>
17
+ <tr><td>Kocatepe</td><td>7.014</td><td>7.317</td><td>2.107</td><td>4,32</td></tr>
18
+ <tr><td>Orhangazi</td><td>13.204</td><td>13.490</td><td>4.396</td><td>2,17</td></tr>
19
+ <tr><td>Sümbül</td><td>21.031</td><td>20.899</td><td>7.089</td><td>-0,63</td></tr>
20
+ <tr><td>Yeşilyurt</td><td>10.739</td><td>11.477</td><td>4.350</td><td>6,87</td></tr>
21
+ <tr><td>Kayabaşı</td><td>24.137</td><td>24.245</td><td>9.169</td><td>0,45</td></tr>
22
+ <tr><td>Mimar Sinan</td><td>11.376</td><td>11.651</td><td>3.835</td><td>2,42</td></tr>
23
+ <tr><td>Fatih</td><td>17.299</td><td>17.902</td><td>4.988</td><td>3,49</td></tr>
24
+ <tr><td>Söğütlü</td><td>19.564</td><td>19.541</td><td>6.071</td><td>-0,12</td></tr>
25
+ <tr><td>Ufuktepe</td><td>13.775</td><td>13.510</td><td>4.191</td><td>-1,92</td></tr>
26
+ <tr><td>Gülbahçe</td><td>19.864</td><td>19.152</td><td>6.915</td><td>-3,58</td></tr>
27
+ <tr><td>Gençlik</td><td>3.912</td><td>4.065</td><td>1.288</td><td>3,91</td></tr>
28
+ <tr><td>Ihlamur</td><td>1.033</td><td>1.019</td><td>333</td><td>-1,36</td></tr>
29
+ <tr><td>Çamlıbel</td><td>20.755</td><td>20.636</td><td>6.828</td><td>-0,57</td></tr>
30
+ <tr><td>Kazım Karabekir</td><td>7.791</td><td>8.234</td><td>2.851</td><td>5,69</td></tr>
31
+ <tr><td>Mehmet Akif</td><td>7.674</td><td>7.728</td><td>2.528</td><td>0,70</td></tr>
32
+ <tr><td>Alparslan</td><td>6.885</td><td>7.241</td><td>2.584</td><td>5,17</td></tr>
33
+ <tr><td>Turgut Özal</td><td>14.452</td><td>14.557</td><td>3.944</td><td>0,73</td></tr>
34
+ <tr><td>Ilıca</td><td>10.453</td><td>10.255</td><td>2.998</td><td>-1,89</td></tr>
35
+ <tr><td>Örnekköy</td><td>24.404</td><td>24.811</td><td>7.696</td><td>1,67</td></tr>
36
+ <tr><td>Malazgirt</td><td>2.690</td><td>2.803</td><td>1.004</td><td>4,20</td></tr>
37
+ <tr><td>Ulubatlı</td><td>5.869</td><td>5.969</td><td>1.667</td><td>1,70</td></tr>
38
+ <tr><td>Fevzi Çakmak</td><td>2.328</td><td>2.364</td><td>719</td><td>1,55</td></tr>
39
+ <tr><td>Çağlayan</td><td>10.082</td><td>10.708</td><td>3.514</td><td>6,21</td></tr>
40
+ <tr><td>Pınarönü</td><td>1.135</td><td>1.160</td><td>360</td><td>2,20</td></tr>
41
+ <tr><td>Atatürk</td><td>25.309</td><td>25.953</td><td>7.513</td><td>2,54</td></tr>
42
+ <tr><td>Hürriyet</td><td>14.053</td><td>14.981</td><td>4.113</td><td>6,60</td></tr>
43
+ <tr><td>Değirmenönü</td><td>24.108</td><td>23.227</td><td>7.730</td><td>-3,65</td></tr>
44
+ <tr><td>Zafer</td><td>6.763</td><td>7.103</td><td>2.606</td><td>5,03</td></tr>
45
+ <tr><td>Akşemsettin</td><td>9.639</td><td>9.197</td><td>3.109</td><td>-4,59</td></tr>
46
+ <tr><td>Kurtuluş</td><td>16.447</td><td>17.381</td><td>5.566</td><td>5,68</td></tr>
47
+ <tr><td>Hacı Bayram</td><td>5.923</td><td>5.920</td><td>2.015</td><td>-0,05</td></tr>
48
+ <tr><td>Karşıyaka</td><td>16.890</td><td>17.567</td><td>5.092</td><td>4,01</td></tr>
49
+ <tr><td>Papatya</td><td>23.156</td><td>23.943</td><td>6.849</td><td>3,40</td></tr>
50
+ <tr><td>Osmangazi</td><td>11.373</td><td>11.382</td><td>4.187</td><td>0,08</td></tr>
51
+ <tr><td>Yavuz Selim</td><td>4.194</td><td>4.147</td><td>1.123</td><td>-1,12</td></tr>
52
+ <tr><td>Lale</td><td>12.487</td><td>11.886</td><td>3.729</td><td>-4,81</td></tr>
53
+ <tr><td>Sakarya</td><td>10.950</td><td>11.549</td><td>4.081</td><td>5,47</td></tr>
54
+ <tr><td>Yıldıztepe</td><td>12.198</td><td>12.505</td><td>3.389</td><td>2,52</td></tr>
55
+ <tr><td>Namık Kemal</td><td>7.082</td><td>7.240</td><td>2.293</td><td>2,23</td></tr>
56
+ <tr><td>Gazi Osman Paşa</td><td>12.064</td><td>12.733</td><td>3.645</td><td>5,55</td></tr>
57
+ <tr><td>Bağlarbaşı</td><td>962</td><td>946</td><td>364</td><td>-1,66</td></tr>
58
+ <tr><td>Işıklar</td><td>21.069</td><td>22.243</td><td>7.575</td><td>5,57</td></tr>
59
+ <tr><td>Sütçü İmam</td><td>19.850</td><td>20.855</td><td>6.377</td><td>5,06</td></tr>
60
+ <tr><td>Yunus Emre</td><td>24.429</td><td>25.318</td><td>7.807</td><td>3,64</td></tr>
61
+ <tr><td>Akarca</td><td>12.288</td><td>12.009</td><td>3.447</td><td>-2,27</td></tr>
62
+ <tr><td>Bereket</td><td>17.370</td><td>17.724</td><td>4.860</td><td>2,04</td></tr>
63
+ <tr><td>Kemalpaşa</td><td>5.623</td><td>6.010</td><td>2.382</td><td>6,88</td></tr>
64
+ <tr><td>Barbaros</td><td>13.346</td><td>14.131</td><td>3.988</td><td>5,88</td></tr>
65
+ <tr style='font-weight:bold'><td>Toplam</td><td>750.805</td><td>765.459</td><td>242.437</td><td></td></tr>
66
+ </tbody>
67
+ <tfoot><tr><td colspan='5'>Kaynak: Adrese Dayalı Nüfus Kayıt Sistemi sonuçları (kurgusal).</td></tr></tfoot>
68
+ </table>
69
+ </body></html>
agir_kume/belgeler/belediye_33_bademli_personel.pdf ADDED
Binary file (45.4 kB). View file
 
agir_kume/belgeler/belediye_36_kartaltepe_2026_tarife.pdf ADDED
Binary file (46.3 kB). View file
 
agir_kume/belgeler/belediye_39_kumluca_ova_2024_butce.html ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html><html lang='tr'><head><meta charset='utf-8'><title>T.C. KUMLUCA OVA BELEDİYESİ 2024 YILI FAALİYET RAPORU</title><style>body{font-family:DejaVu Sans,Arial,sans-serif;max-width:960px;margin:24px auto}table{border-collapse:collapse;margin:8px 0}td,th{border:1px solid #888;padding:3px 8px;font-size:13px}td:not(:first-child){text-align:right}tfoot td{border:none;font-size:11px;text-align:left!important}.uyari{color:#9a3412;font-size:12px}</style></head><body>
2
+ <p class='uyari'>KURGUSAL ÖRNEK BELGE — Tablo2SQL-TR stres testi için üretilmiştir; gerçek kurum verisi değildir.</p><h1>T.C. KUMLUCA OVA BELEDİYESİ 2024 YILI FAALİYET RAPORU</h1>
3
+ <p>Bu rapor, 5018 sayılı Kamu Mali Yönetimi ve Kontrol Kanunu uyarınca Kumluca Ova Belediyesinin 2024 mali yılı faaliyetlerini ve bütçe uygulama sonuçlarını içermektedir.</p>
4
+ <table><caption>Tablo 4: 2024 Yılı Bütçe Giderlerinin Ekonomik Sınıflandırmaya Göre Dağılımı (bin TL)</caption><thead>
5
+ <tr><th rowspan='2'>Gider Türü</th><th rowspan='2'>Ekonomik Kod</th><th colspan='2'>Ödenek</th><th rowspan='2'>Gerçekleşme</th><th rowspan='2'>Gerçekleşme Oranı (%)</th></tr><tr><th>Bütçe Ödeneği</th><th>Toplam Ödenek</th></tr>
6
+ </thead><tbody>
7
+ <tr><td>Personel Giderleri</td><td>01</td><td>155.481,0</td><td>156.543,3</td><td>111.163,4</td><td>71,0</td></tr>
8
+ <tr><td>Sosyal Güvenlik Kurumlarına Devlet Primi Giderleri</td><td>02</td><td>80.760,0</td><td>81.625,9</td><td>44.828,1</td><td>54,9</td></tr>
9
+ <tr><td>Mal ve Hizmet Alım Giderleri</td><td>03</td><td>177.127,0</td><td>176.328,7</td><td>142.985,2</td><td>81,1</td></tr>
10
+ <tr><td>Faiz Giderleri</td><td>04</td><td>67.762,0</td><td>71.520,4</td><td>61.655,3</td><td>86,2</td></tr>
11
+ <tr><td>Cari Transferler</td><td>05</td><td>21.604,0</td><td>22.575,9</td><td>17.001,4</td><td>75,3</td></tr>
12
+ <tr><td>Sermaye Giderleri</td><td>06</td><td>118.371,0</td><td>124.027,3</td><td>83.738,0</td><td>67,5</td></tr>
13
+ <tr><td>Sermaye Transferleri</td><td>07</td><td>9.960,0</td><td>9.806,5</td><td>6.743,4</td><td>68,8</td></tr>
14
+ <tr><td>Borç Verme</td><td>08</td><td>172.663,0</td><td>185.860,2</td><td>161.627,3</td><td>87,0</td></tr>
15
+ <tr style='font-weight:bold'><td>TOPLAM</td><td></td><td>803.728,0</td><td>828.288,2</td><td>629.742,1</td><td></td></tr>
16
+ </tbody>
17
+ <tfoot><tr><td colspan='6'>Kaynak: Mali Hizmetler Müdürlüğü kesin hesap verileri.</td></tr></tfoot>
18
+ </table>
19
+ <table><caption>Tablo 11: Gelirlerin Yıllara Göre Karşılaştırılması (bin TL)</caption><thead>
20
+ <tr><th>Gelir Türü</th><th>2023</th><th>2024</th><th>Değişim 2023-2024 (%)</th></tr>
21
+ </thead><tbody>
22
+ <tr><td>Vergi Gelirleri</td><td>81.246,0</td><td>69.529,2</td><td>-14,42</td></tr>
23
+ <tr><td>Teşebbüs ve Mülkiyet Gelirleri</td><td>15.604,0</td><td>20.856,4</td><td>33,66</td></tr>
24
+ <tr><td>Alınan Bağış ve Yardımlar</td><td>88.316,0</td><td>116.128,6</td><td>31,49</td></tr>
25
+ <tr><td>Diğer Gelirler</td><td>43.991,0</td><td>43.453,0</td><td>-1,22</td></tr>
26
+ <tr><td>Sermaye Gelirleri</td><td>9.364,0</td><td>10.426,0</td><td>11,34</td></tr>
27
+ <tr style='font-weight:bold'><td>Toplam</td><td>238.521,0</td><td>260.393,2</td><td></td></tr>
28
+ </tbody>
29
+ </table>
30
+ </body></html>
agir_kume/belgeler/belediye_40_gokdere_mahalle.pdf ADDED
Binary file (47.8 kB). View file
 
agir_kume/belgeler/belediye_46_gokdere_personel.pdf ADDED
Binary file (45.5 kB). View file
 
agir_kume/belgeler/belediye_49_kumluca_ova_2025_tarife.pdf ADDED
Binary file (46.2 kB). View file
 
agir_kume/belgeler/il_03_deniztepe_2025_turizm.html ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html><html lang='tr'><head><meta charset='utf-8'><title>DENIZTEPE İLİ 2025 YILI TURİZM BÜLTENİ</title><style>body{font-family:DejaVu Sans,Arial,sans-serif;max-width:960px;margin:24px auto}table{border-collapse:collapse;margin:8px 0}td,th{border:1px solid #888;padding:3px 8px;font-size:13px}td:not(:first-child){text-align:right}tfoot td{border:none;font-size:11px;text-align:left!important}.uyari{color:#9a3412;font-size:12px}</style></head><body>
2
+ <p class='uyari'>KURGUSAL ÖRNEK BELGE — Tablo2SQL-TR stres testi için üretilmiştir; gerçek kurum verisi değildir.</p><h1>DENIZTEPE İLİ 2025 YILI TURİZM BÜLTENİ</h1>
3
+ <p>Deniztepe İli 2025 yılı turizm istatistikleri aşağıda sunulmuştur. Veriler geçicidir.</p>
4
+ <table><caption>Tablo 1: İlçelere Göre Konaklama Tesislerine Geliş Sayısı (Kişi)</caption><thead>
5
+ <tr><th rowspan='2'>İlçe</th><th colspan='4'>2025</th><th rowspan='2'>2025 Toplam</th><th rowspan='2'>2024 Toplam</th><th rowspan='2'>Değişim (%)</th></tr><tr><th>Ç1</th><th>Ç2</th><th>Ç3</th><th>Ç4</th></tr>
6
+ </thead><tbody>
7
+ <tr><td>Ilıcaköy</td><td>34.394</td><td>68.160</td><td>92.675</td><td>41.329</td><td>236.558</td><td>267.893</td><td>-11,7</td></tr>
8
+ <tr><td>Sarıyurt</td><td>25.995</td><td>45.274</td><td>60.376</td><td>28.551</td><td>160.196</td><td>136.613</td><td>17,3</td></tr>
9
+ <tr><td>Yeşilköprü</td><td>3.546</td><td>7.468</td><td>9.472</td><td>4.031</td><td>24.517</td><td>26.389</td><td>-7,1</td></tr>
10
+ <tr><td>Kuşkaya</td><td>4.173</td><td>6.686</td><td>11.293</td><td>4.998</td><td>27.150</td><td>25.805</td><td>5,2</td></tr>
11
+ <tr><td>Kayalı</td><td>6.266</td><td>12.151</td><td>16.990</td><td>6.718</td><td>42.125</td><td>36.932</td><td>14,1</td></tr>
12
+ <tr><td>Ortaköy</td><td>4.199</td><td>7.464</td><td>11.316</td><td>5.133</td><td>28.112</td><td>25.732</td><td>9,2</td></tr>
13
+ <tr><td>Taşlıdere</td><td>9.474</td><td>19.880</td><td>30.031</td><td>11.522</td><td>70.907</td><td>63.088</td><td>12,4</td></tr>
14
+ <tr><td>Bozkurtlu</td><td>19.106</td><td>35.617</td><td>50.378</td><td>22.562</td><td>127.663</td><td>114.267</td><td>11,7</td></tr>
15
+ <tr><td>Esenyurt</td><td>4.426</td><td>7.374</td><td>11.723</td><td>4.440</td><td>27.963</td><td>25.734</td><td>8,7</td></tr>
16
+ <tr><td>Çamlıyayla</td><td>25.687</td><td>46.352</td><td>72.186</td><td>28.617</td><td>172.842</td><td>187.610</td><td>-7,9</td></tr>
17
+ <tr><td>Akpınar</td><td>22.731</td><td>39.002</td><td>56.551</td><td>24.966</td><td>143.250</td><td>129.344</td><td>10,8</td></tr>
18
+ <tr><td>Yukarıova</td><td>29.865</td><td>53.777</td><td>81.128</td><td>34.729</td><td>199.499</td><td>228.617</td><td>-12,7</td></tr>
19
+ <tr style='font-weight:bold'><td>İl Toplamı</td><td>189.862</td><td>349.205</td><td>504.119</td><td>217.596</td><td>1.260.782</td><td>1.268.024</td><td></td></tr>
20
+ </tbody>
21
+ <tfoot><tr><td colspan='8'>Kaynak: İl Kültür ve Turizm Müdürlüğü. Ç: çeyrek.</td></tr></tfoot>
22
+ </table>
23
+ </body></html>
agir_kume/belgeler/il_04_ardicli_2024_konut.pdf ADDED
Binary file (46.6 kB). View file
 
agir_kume/belgeler/il_05_deniztepe_2025_tufe.pdf ADDED
Binary file (46.1 kB). View file
 
agir_kume/belgeler/il_08_deniztepe_2025_yatirim.pdf ADDED
Binary file (46.6 kB). View file
 
agir_kume/belgeler/il_09_ardicli_enerji.pdf ADDED
Binary file (46.3 kB). View file
 
agir_kume/belgeler/il_11_aksungur_2025_havalimani.html ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html><html lang='tr'><head><meta charset='utf-8'><title>AKSUNGUR HAVALİMANI 2025 YILI İSTATİSTİKLERİ</title><style>body{font-family:DejaVu Sans,Arial,sans-serif;max-width:960px;margin:24px auto}table{border-collapse:collapse;margin:8px 0}td,th{border:1px solid #888;padding:3px 8px;font-size:13px}td:not(:first-child){text-align:right}tfoot td{border:none;font-size:11px;text-align:left!important}.uyari{color:#9a3412;font-size:12px}</style></head><body>
2
+ <p class='uyari'>KURGUSAL ÖRNEK BELGE — Tablo2SQL-TR stres testi için üretilmiştir; gerçek kurum verisi değildir.</p><h1>AKSUNGUR HAVALİMANI 2025 YILI İSTATİSTİKLERİ</h1>
3
+ <p>Aksungur Havalimanında 2024 ve 2025 yıllarında taşınan yolcu sayıları aylara göre verilmiştir.</p>
4
+ <table><caption>Tablo 5: Aylara Göre Havalimanı Yolcu Trafiği (Yolcu)</caption><thead>
5
+ <tr><th rowspan='2'>Ay</th><th colspan='2'>2024</th><th colspan='2'>2025</th></tr><tr><th>İç Hat</th><th>Dış Hat</th><th>İç Hat</th><th>Dış Hat</th></tr>
6
+ </thead><tbody>
7
+ <tr><td>Ocak</td><td>142.376</td><td>18.949</td><td>105.940</td><td>57.957</td></tr>
8
+ <tr><td>Şubat</td><td>79.253</td><td>25.854</td><td>77.704</td><td>17.666</td></tr>
9
+ <tr><td>Mart</td><td>84.874</td><td>40.685</td><td>45.325</td><td>10.208</td></tr>
10
+ <tr><td>Nisan</td><td>134.983</td><td>25.114</td><td>152.141</td><td>30.995</td></tr>
11
+ <tr><td>Mayıs</td><td>75.043</td><td>34.471</td><td>128.075</td><td>46.534</td></tr>
12
+ <tr><td>Haziran</td><td>210.630</td><td>90.699</td><td>284.448</td><td>153.530</td></tr>
13
+ <tr><td>Temmuz</td><td>151.003</td><td>114.471</td><td>101.658</td><td>15.441</td></tr>
14
+ <tr><td>Ağustos</td><td>248.120</td><td>139.666</td><td>101.692</td><td>120.780</td></tr>
15
+ <tr><td>Eylül</td><td>105.887</td><td>62.547</td><td>138.452</td><td>106.331</td></tr>
16
+ <tr><td>Ekim</td><td>91.494</td><td>50.352</td><td>136.680</td><td>35.566</td></tr>
17
+ <tr><td>Kasım</td><td>139.811</td><td>30.926</td><td>100.822</td><td>50.427</td></tr>
18
+ <tr><td>Aralık</td><td>87.206</td><td>12.310</td><td>66.396</td><td>35.269</td></tr>
19
+ <tr style='font-weight:bold'><td>Toplam</td><td>1.550.680</td><td>646.044</td><td>1.439.333</td><td>680.704</td></tr>
20
+ </tbody>
21
+ <tfoot><tr><td colspan='5'>Kaynak: Havalimanı Mülki İdare Amirliği (kurgusal). Transit yolcular hariçtir.</td></tr></tfoot>
22
+ </table>
23
+ </body></html>
agir_kume/belgeler/il_12_gokceova_kaza.pdf ADDED
Binary file (46.9 kB). View file
 
agir_kume/belgeler/il_16_aksungur_2025_turizm.pdf ADDED
Binary file (47.3 kB). View file
 
agir_kume/belgeler/il_17_kizilyar_2025_konut.pdf ADDED
Binary file (46.5 kB). View file
 
agir_kume/belgeler/il_18_aksungur_2025_tufe.pdf ADDED
Binary file (46.1 kB). View file
 
agir_kume/belgeler/il_21_aksungur_2024_yatirim.pdf ADDED
Binary file (46.4 kB). View file
 
agir_kume/belgeler/il_22_kizilyar_enerji.pdf ADDED
Binary file (46 kB). View file
 
agir_kume/belgeler/il_24_yaylacik_2025_havalimani.pdf ADDED
Binary file (46.6 kB). View file
 
agir_kume/belgeler/il_25_deniztepe_kaza.pdf ADDED
Binary file (46.5 kB). View file
 
agir_kume/belgeler/il_29_yaylacik_2025_turizm.pdf ADDED
Binary file (46.5 kB). View file
 
agir_kume/belgeler/il_30_gokceova_2024_konut.pdf ADDED
Binary file (46.3 kB). View file
 
agir_kume/belgeler/il_31_yaylacik_2024_tufe.html ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html><html lang='tr'><head><meta charset='utf-8'><title>YAYLACIK BÖLGESİ 2024 YILI FİYAT İSTATİSTİKLERİ</title><style>body{font-family:DejaVu Sans,Arial,sans-serif;max-width:960px;margin:24px auto}table{border-collapse:collapse;margin:8px 0}td,th{border:1px solid #888;padding:3px 8px;font-size:13px}td:not(:first-child){text-align:right}tfoot td{border:none;font-size:11px;text-align:left!important}.uyari{color:#9a3412;font-size:12px}</style></head><body>
2
+ <p class='uyari'>KURGUSAL ÖRNEK BELGE — Tablo2SQL-TR stres testi için üretilmiştir; gerçek kurum verisi değildir.</p><h1>YAYLACIK BÖLGESİ 2024 YILI FİYAT İSTATİSTİKLERİ</h1>
3
+ <p>Yaylacık bölgesinde 2024 yılı aylık tüketici fiyatları değişimleri sunulmuştur.</p>
4
+ <table><caption>Tablo 1: Tüketici Fiyat Endeksi ve Değişim Oranları</caption><thead>
5
+ <tr><th>Dönem</th><th>Endeks (2003=100)</th><th>Aylık Değişim (%)</th><th>Yıllık Değişim (%)</th></tr>
6
+ </thead><tbody>
7
+ <tr><td>Ocak 2024</td><td>2.108,96</td><td>%4,14</td><td>%45,56</td></tr>
8
+ <tr><td>Şubat 2024</td><td>2.123,09</td><td>%0,67</td><td>%50,22</td></tr>
9
+ <tr><td>Mart 2024</td><td>2.120,76</td><td>-%0,11</td><td>%57,95</td></tr>
10
+ <tr><td>Nisan 2024</td><td>2.160,20</td><td>%1,86</td><td>%74,83</td></tr>
11
+ <tr><td>Mayıs 2024</td><td>2.170,14</td><td>%0,46</td><td>%28,66</td></tr>
12
+ <tr><td>Haziran 2024</td><td>2.177,30</td><td>%0,33</td><td>%38,11</td></tr>
13
+ <tr><td>Temmuz 2024</td><td>2.256,56</td><td>%3,64</td><td>%71,65</td></tr>
14
+ <tr><td>Ağustos 2024</td><td>2.310,04</td><td>%2,37</td><td>%70,05</td></tr>
15
+ <tr><td>Eylül 2024</td><td>2.387,65</td><td>%3,36</td><td>%28,30</td></tr>
16
+ <tr><td>Ekim 2024</td><td>2.443,53</td><td>%2,34</td><td>%41,67</td></tr>
17
+ <tr><td>Kasım 2024</td><td>2.521,96</td><td>%3,21</td><td>%29,00</td></tr>
18
+ <tr><td>Aralık 2024</td><td>2.504,31</td><td>-%0,70</td><td>%70,06</td></tr>
19
+ </tbody>
20
+ <tfoot><tr><td colspan='4'>Kaynak: Bölge istatistik ofisi (kurgusal).</td></tr></tfoot>
21
+ </table>
22
+ </body></html>
agir_kume/belgeler/il_34_yaylacik_2025_yatirim.pdf ADDED
Binary file (46.2 kB). View file
 
agir_kume/belgeler/il_35_gokceova_enerji.html ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html><html lang='tr'><head><meta charset='utf-8'><title>GÖKÇEOVA İLİ ENERJİ GÖSTERGELERİ</title><style>body{font-family:DejaVu Sans,Arial,sans-serif;max-width:960px;margin:24px auto}table{border-collapse:collapse;margin:8px 0}td,th{border:1px solid #888;padding:3px 8px;font-size:13px}td:not(:first-child){text-align:right}tfoot td{border:none;font-size:11px;text-align:left!important}.uyari{color:#9a3412;font-size:12px}</style></head><body>
2
+ <p class='uyari'>KURGUSAL ÖRNEK BELGE — Tablo2SQL-TR stres testi için üretilmiştir; gerçek kurum verisi değildir.</p><h1>GÖKÇEOVA İLİ ENERJİ GÖSTERGELERİ</h1>
3
+ <p>Gökçeova ilinde ilçelere göre elektrik tüketimi 2023-2025 döneminde aşağıdaki gibidir.</p>
4
+ <table><caption>Tablo 2: İlçelere Göre Elektrik Tüketimi (bin MWh)</caption><thead>
5
+ <tr><th>İlçe</th><th>2023</th><th>2024</th><th>2025</th><th>Değişim 2024-2025 (%)</th></tr>
6
+ </thead><tbody>
7
+ <tr><td>Çamlıyayla</td><td>634,5</td><td>677,6</td><td>573,5</td><td>-15,4</td></tr>
8
+ <tr><td>Yukarıova</td><td>762,4</td><td>756,4</td><td>801,2</td><td>5,9</td></tr>
9
+ <tr><td>Gölyaka</td><td>507,2</td><td>551,1</td><td>516,6</td><td>-6,3</td></tr>
10
+ <tr><td>Ortaköy</td><td>523,9</td><td>608,8</td><td>546,4</td><td>-10,2</td></tr>
11
+ <tr><td>Esenyurt</td><td>141,0</td><td>155,7</td><td>164,8</td><td>5,8</td></tr>
12
+ <tr><td>Taşlıdere</td><td>217,6</td><td>230,3</td><td>205,5</td><td>-10,8</td></tr>
13
+ <tr><td>Karaağıl</td><td>19,1</td><td>21,9</td><td>19,6</td><td>-10,5</td></tr>
14
+ <tr><td>Bozkurtlu</td><td>678,4</td><td>694,6</td><td>629,6</td><td>-9,4</td></tr>
15
+ <tr><td>Ilıcaköy</td><td>880,0</td><td>832,7</td><td>753,4</td><td>-9,5</td></tr>
16
+ <tr><td>Akpınar</td><td>285,1</td><td>294,4</td><td>275,6</td><td>-6,4</td></tr>
17
+ </tbody>
18
+ <tfoot><tr><td colspan='5'>Kaynak: Dağıtım şirketi verileri (kurgusal).</td></tr></tfoot>
19
+ </table>
20
+ </body></html>
agir_kume/belgeler/il_37_ardicli_2024_havalimani.pdf ADDED
Binary file (46.5 kB). View file
 
agir_kume/belgeler/il_38_aksungur_kaza.pdf ADDED
Binary file (46.4 kB). View file
 
agir_kume/belgeler/il_42_ardicli_2025_turizm.pdf ADDED
Binary file (46.7 kB). View file