How to use from the
Use from the
Transformers library
# Use a pipeline as a high-level helper
# Warning: Pipeline type "image-to-text" is no longer supported in transformers v5.
# You must load the model directly (see below) or downgrade to v4.x with:
# pip install "transformers<5.0.0"
from transformers import pipeline

pipe = pipeline("image-to-text", model="ersanbil/TurkceOCR")
# pip install -U transformers accelerate
# Load model directly
from transformers import AutoModel
model = AutoModel.from_pretrained("ersanbil/TurkceOCR", device_map="auto")
Quick Links

TurkceOCR

Turkish document OCR, algorithmic checksum and financial verification (TurkceVerify), legal and commercial entity recognition (ictihat_core × ersanbil/kvkk-pii-ner), and 2D #000000 visual redaction (VisualRedactor). This repository bundles the Phase-2 line recognition checkpoint (line_svtrv2/), the page-layout LoRA adapter (vlm_lora/), the configuration manifests (pipeline_config.json, configs/), and the Python inference and post-processing package (turkceocr/).

Architecture

Component Details
Visual pre-processing Adaptive 2.0×–2.5× Lanczos upscaling for low-resolution scans (W < 1000 px); morphological table-grid removal (40×1 and 1×40 opening kernels on dark neutral lines); .docx embedded .emf/.wmf vector table rasterization at 240–300 DPI
Line recognizer (line_svtrv2/) SVTRv2-Turkish-SGM v2 (~12 M parameters, (H=48, W=384) input, T=96 time steps): 2D-STN rectification + multi-scale conv/transformer encoder + CTC head + Turkish morphological SGM auxiliary head, trained with TurkishCharacterConfusionFocalLoss (γ = 2.5) on 2,750 real PDF and archival lines
Page layout adapter (vlm_lora/) Qwen2.5-VL-3B-LoRA v2 (r = 16, α = 32) with 31 structural and Turkish diacritic tokens (<doc>, <region>, <table_md>, <kv>, <stamp>, <signature/>, <handwriting>, <marginalia>) and RLVR verifiable-reward alignment
Constrained verifier (TurkceVerify) Deterministic Mod-10 / parity check and 1-edit visual-confusion lattice repair for TCKN and Foreign ID (99), GİB Mod-10 for VKN, TCMB reserve-0 + ISO-7064 Mod-97-10 for TR IBAN, and linear invoice solver (Matrah + KDV = Toplam for r ∈ {1%, 10%, 20%})
Repetition guard (RepetitionGuard) 4–8 token periodic loop truncation (≥ 5 repeats) with alphabetic-diversity exemption for Rekabet Kurumu `
Entity engine (UnifiedTurkishEntityEngine) 25+ entity classes combining ictihat_core legal recognizers (calibrated on hamzabagirsakci/turkish-court-decisions) with ersanbil/kvkk-pii-ner (v2.0, 13 BIO classes, 512-token sliding window with stride 128), fold_tr_isomorphic 1:1 offset mapping, hierarchical span subsumption, and two-tier fail-closed SUSPECT_PII detection
2D visual redactor (VisualRedactor) Monotonic OffsetMap (π: norm → raw) character-to-pixel projection with proportional typographic character widths and irreversible #000000 (RGB 0,0,0) box fill over text PII and visual regions (VISUAL_SIGNATURE, VISUAL_STAMP, VISUAL_QRCODE, VISUAL_PHOTO)

1. Genel Bakış ve Motivasyon

Çok dilli genel amaçlı OCR motorları (Tesseract, PaddleOCR) ve görsel-dil modelleri (Hunyuan-OCR, Qwen2.5-VL, LightOnOCR), Türkçe kurumsal, hukuki, finansal ve arşiv belgelerinde dört temel yapısal darboğaz nedeniyle hata üretir:

  1. Türkçe Ortografik ve Morfolojik Çöküş (I/İ/ı/i ve Ek Zincirleri): Türkçedeki dört yönlü noktalı/noktasız I/İ/ı/i ayrımı, çengel/nokta diakritikleri (ğ, ü, ş, ö, ç) ve şapkalı ünlülerin (â, î, û) düşük çözünürlüklü faks/tarama veya 1-bit arşiv görüntülerinde (551×790 Resmî Gazete GIF'leri, 203 DPI termal POS fişleri) silinmesi, sondan eklemeli (agglutinative) Türkçe kelimelerde (mamelekiyle → meleklemiyle, fesih ↔ feshin geçersizliğine) anlamı değiştiren hatalara yol açar.
  2. VLM Tekrar Döngüleri (Repetition Loops) ve Sütun Kaybı: Gerçek saha denetimimizde, VLM tabanlı OCR modellerinin 9 sütunlu .emf vektör enerji tarife tablolarında 9 sütunun 8'ini düşürdüğü (CER = 45.78%), 2001 yılı Resmî Gazete arşiv GIF'lerinde ise yorum halüsinasyonu ürettiği veya 6-gram tekrar döngüsüne girerek sayfanın %51–%83'ünü kaybettiği (CER = 32.33%) ölçülmüştür.
  3. Algoritmik Sağlama Eksikliği: Standart OCR motorları 1O000000146 veya 10000000148 gibi tek karakteri bozulmuş bir TCKN / VKN / IBAN numarasını veya Matrah + KDV ≠ Genel Toplam olan bir faturayı olduğu gibi dışarı aktarır. Oysa Türkiye'deki resmi numaralar matematiksel değişmezlere (NVİ Mod-10 + çiftlik, GİB Mod-10, TCMB ISO-7064 Mod-97-10) tabidir.
  4. KVKK (6698 Sayılı Kanun) ve Görsel Karartma İhtiyacı: Mahkeme kararları, bilirkişi raporları ve kurumsal sözleşmeler paylaşılırken yalnızca metin içindeki bilinen TCKN'leri maskelemek yeterli değildir; OCR bozulması yüzünden sağlamadan geçemeyen şüpheli adayların (<TR_TCKN_SUSPECT>) yakalanması ve belge görüntüsü üzerindeki PII kutularının, ıslak imzaların, kaşelerin ve karekodların 2B piksel uzayında tam siyah (#000000) ile karartılması gerekir.

2. Mimari ve Matematiksel Formülasyon

[Girdi Belgesi: PDF / TIFF / GIF / PNG / DOCX Media (.emf/.wmf)]
        │
        ▼
[Katman 1: Görsel Ön-İşleme & Fotometrik Normalizasyon]
  • Adaptif Süper-Çözünürlük (2.0×–2.5× Lanczos, W < 1000 px)
  • Aydınlatma Bölme Normalizasyonu (Gauss σ = 51) & Islak Mühür Bastırma (‖∇I‖ < 65)
  • Boyut Korumalı Morfolojik Tablo Izgara Temizliği (120×1 & 1×100) + .emf/.wmf Rasterizasyon
        │
        ▼
[Katman 2: Hibrit Görsel OCR Çekirdeği]
  • SVTRv2-Turkish-SGM v2 Satır Motoru (~12M param, Dinamik Genişlik T = W/4, γ = 2.5 Focal Loss)
  • Qwen2.5-VL-3B-LoRA v2 Sayfa Düzeni Adaptörü (r = 16, α = 32, 31 Yapısal Token, RLVR = 0.9978)
  • Sütun Oluğu (Column Gutter) & Boşluk Vadisi (Whitespace-Valley) Bölütleme + Çoklu-PSM Düzen
        │
        ▼
[Katman 3: Deterministik Doğrulama & Döngü Koruması]
  • RepetitionGuard: 4..8-gram Tekrar Döngüsü Kesici (≥ 5 tekrar, | (.....) | Ticari Sır Muafiyetli)
  • TurkceVerify: NVİ TCKN/YKN Mod-10, GİB VKN Mod-10, TCMB IBAN Mod-97-10 + KDV Denklem Çözücü
        │
        ▼
[Katman 4: Hukuki/KVKK Varlık Çıkarımı & 2B #000000 Görsel Karartma]
  • UnifiedTurkishEntityEngine: ictihat_core + ersanbil/kvkk-pii-ner v2.0 (13 BIO, 25+ Varlık Sınıfı)
  • VisualRedactor: Monotonik OffsetMap (π: norm → raw) + Geri Döndürülemez #000000 (RGB 0,0,0) Karartma

2.1 Katman 1 — Görsel Ön-İşleme, Tablo Izgara Temizliği ve SVTRv2-Turkish-SGM v2 Satır Motoru

  1. Adaptif Süper-Çözünürlük ve Morfolojik Izgara Silme:
    • Düşük çözünürlüklü arşiv belgeleri (W < 1000 px, örn. 551×790 2001 yılı Resmî Gazete 1-bit GIF'leri ve gömülü .docx tabloları) 2.0×–2.5× Lanczos enterpolasyonu ile ölçeklenir.
    • Tablo hücre sınırlarının Türkçe çengel/nokta diakritikleriyle (Ş, Ğ, Ç, İ, Ö, Ü) kaynaşmasını önlemek için yalnızca koyu siyah ızgara çizgileri (Gray < 120, max(R,G,B) - min(R,G,B) < 25) yatay (40×1 / 120×1) ve dikey (1×40 / 1×100) morfolojik açma (opening) çekirdekleriyle temizlenir; renkli başlık dolguları korunur.
    • .docx içine gömülü Windows Metafile (.emf / .wmf) vektör tabloları PIL.ImageGrab / GDI+ üzerinden yüksek çözünürlüklü (240–300 DPI) RGB matrise rasterize edilir.
  2. SVTRv2-Turkish-SGM v2 (line_svtrv2/model.safetensors, ~12M Parametre):
    • 2B Uzamsal Dönüşüm Ağı (2D-STN): Eğik, perspektif bozulmalı veya kıvrımlı satırları (H = 48, W = 384) kanonik koordinatlara (veya W ∈ [384, 960] dinamik genişliğe) düzeltir.
    • Çok Ölçekli Konvolüsyon + Çift Yönlü Dizi Kodlayıcı: ConvStem + yerel/küresel bağlam katmanlarıyla T = W / 4 = 96 zaman adımlı öznitelik dizisi üretir.
    • Bileşik Kayıp Fonksiyonu (Composite Loss):
      L_SVTRv2 = L_CTC + λ_SGM · L_SGM + λ_focal · L_TurkishConfusionFocal   (γ = 2.5)
      
      Burada L_TurkishConfusionFocal (γ = 2.5), Türkçeye özgü 7 görsel karışıklık kümesi ({I, İ, ı, i, l, 1}, {ğ, g, q}, {ş, s, 5}, {ç, c}, {ö, o, 0}, {ü, u}, {â, a, î, û}) üzerindeki yanlış olasılık dağılımlarını üstel olarak cezalandırır.

2.2 Katman 2 — Qwen2.5-VL-3B-LoRA v2 Sayfa Düzeni ve RLVR Doğrulanabilir Ödül Hizalaması

  • vlm_lora/model.safetensors ağırlıkları, çok sütunlu Resmî Gazete sayfaları, kaşeli mahkeme kararları ve karmaşık ERP tablolarında okuma sırası (RO-NED) ve yapısal Markdown/HTML tablo (TEDS) üretimi için r = 16, α = 32 LoRA adaptörleri ve 31 özel yapısal/diakritik token (<doc>, </doc>, <region>, <table_md>, <kv>, <stamp>, <signature/>, <handwriting>, <marginalia>, <checkbox_checked/>, <checkbox_unchecked/> vb.) ile eğitilmiştir.
  • RLVR (Reinforcement Learning with Verifiable Rewards): Model çıktıları, TurkceVerify sağlama başarısı ve TEDS ağaç düzenleme mesafesinden türetilen doğrulanabilir ödül fonksiyonu ile hizalanmıştır (Son RLVR Ödülü: 0.9978).

2.3 Katman 3 — TurkceVerify Algoritmik Sağlama Kafesi ve Cebirsel Finansal Denklem Çözücü

turkceocr/postprocess/turkceverify.py modülü, OCR çıktısındaki resmi numaraları ve finansal tabloları deterministik olarak doğrular ve 1-edit görsel karışıklık kafesi (O ↔ 0, I/İ/l ↔ 1, S/Ş ↔ 5, B ↔ 8, G/Ğ ↔ 6, Z ↔ 2) üzerinde otomatik onarır:

  1. T.C. Kimlik Numarası (TCKN) & Yabancı Kimlik Numarası (99): 11 haneli d_1 d_2 ... d_11 dizisi için (d_1 ≠ 0):
    d_10 = ( 7 × (d_1 + d_3 + d_5 + d_7 + d_9) - (d_2 + d_4 + d_6 + d_8) ) mod 10
    d_11 = ( d_1 + d_2 + ... + d_10 ) mod 10,     d_11 mod 2 == 0
    

    Kritik Güvenlik Onarımı: 99 ile başlayan Yabancı Kimlik Numaraları dahil tüm 11 haneli adaylarda NVİ Mod-10 ve çiftlik kontrolü zorunludur.

  2. Vergi Kimlik Numarası (VKN — GİB Mod-10): 10 haneli v_1 v_2 ... v_10 dizisi için i ∈ {1..9} adımlarında:
    t_i  = (v_i + 10 - i) mod 10
    c_i  = 0                           eğer t_i == 0
         = 9                           eğer t_i ≠ 0 ve (t_i × 2^(10-i)) mod 9 == 0
         = (t_i × 2^(10-i)) mod 9      diğer durumlarda
    v_10 = (10 - ((c_1 + c_2 + ... + c_9) mod 10)) mod 10
    
  3. TR IBAN (TCMB Rezerv '0' + ISO-7064 Mod-97-10): 26 karakterli TRkk bbbb brrr cccc cccc cccc cc dizisinde 10. karakterin rezerv '0' (clean[9] == '0') olması ve ilk 4 karakter sona taşınıp harfler sayıya (T = 29, R = 27) dönüştürüldüğünde:
    int(Rearranged_IBAN) mod 97 == 1
    
  4. Cebirsel KDV & Fatura Denklem Çözücü: Fatura satırlarında ve dip toplamlarında Türkiye KDV oranları (r ∈ {1%, 10%, 20%}) için:
    Matrah + KDV = Genel Toplam,     KDV = round(Matrah × r, 2)
    
    denklemlerini sağlamayan OCR rakam hatalarını (örn. 2.800,00 TL olarak okunan matrahın KDV = 400,00 TL ve Toplam = 2.400,00 TL kısıtlarından 2.000,00 TL olarak tekil çözümü) cebirsel olarak onarır.

2.4 Katman 4 — RepetitionGuard, UnifiedTurkishEntityEngine (ictihat_core × kvkk-pii v2.0) ve VisualRedactor

  1. RepetitionGuard (turkceocr/postprocess/repetition_guard.py — KPI-14):
    • VLM'lerin 4..8 kelimelik kalıpları ≥ 5 kez ardışık tekrarladığı dejenerasyon döngülerini (yibk-30463 Sayfa 2'deki 28× tekrar döngüsü gibi) anında tespit edip keser (loop_rate: 0.8696 → 0.0000).
    • Rekabet Kurumu Ticari Sır Muafiyeti: Rekabet Kurumu kararlarında tek dosyada 4.157 kez geçebilen | (.....) | (.....) | ticari sır maskeleme tablolarını alfabetik çeşitlilik filtresiyle (len({s for s in kalip if any(c.isalpha() for c in s)}) < 3) döngü sanıp kesmez (%0.00 yanlış pozitif).
  2. UnifiedTurkishEntityEngine (turkceocr/postprocess/entity_engine.py):
    • İki Katmanlı Fail-Closed Mimari (VERIFIED_PII + SUSPECT_PII): Algoritmik sağlamadan geçen veya 1-edit ile onarılan kimlik/hesap numaralarını VERIFIED_PII (confidence ≥ 0.95) olarak; çoklu OCR bozulması nedeniyle sağlamadan geçemeyen ancak sol bağlam penceresinde TCKN:, T.C. Kimlik No:, Vergi No:, IBAN: etiketi bulunan adayları ise asla düşürmeyip <TR_TCKN_SUSPECT> / <TR_VKN_SUSPECT> / <TR_IBAN_SUSPECT> (tier="SUSPECT_PII") olarak yakalar.
    • 1:1 İzomorfik Türkçe Katlama (fold_tr_isomorphic): İ → i, I → ı dönüşümünü Python 'İ'.lower() == 'i\u0307' (2 karakter!) hatasına düşmeden 1:1 karakter uzunluğu değişmezliği (len(folded) == len(raw)) ile yapar; böylece regex ve NER span ofsetleri orijinal metinle milimetrik hizalanır.
    • Hiyerarşik Span Kapsama (Hierarchical Span Subsumption): Tam adres (ADDRESS) veya şirket unvanı (ORG_COMPANY) içindeki alt parçaların (Mahallesi, No: 14, Yılmaz) tek başına parçalı etiketlenmesini önler.
  3. VisualRedactor (turkceocr/postprocess/visual_redactor.py — 2B #000000 Karartma):
    • OffsetMap (π: norm_idx → raw_idx) monotonik hizalama vektörü ve tipografik karakter genişlik ağırlıkları (W/M/@: 1.35, i/ı/l/1/.,:;: 0.45) ile metin span'larını [x_1, y_1, x_2, y_2] piksel koordinatlarına izdüşürür.
    • Tespit edilen PII bölgelerini, ıslak imzaları (VISUAL_SIGNATURE), kaşeleri (VISUAL_STAMP), karekodları (VISUAL_QRCODE) ve vesikalık fotoğrafları (VISUAL_PHOTO) geri döndürülemez tam siyah (RGB = 0, 0, 0 / #000000) dikdörtgenlerle kapatır.

3. Kapsamlı Kıyaslama (Benchmark) Sonuçları

3.1 TurkExternalBlindBench-v1: 35 Gerçek Saha Sayfası × 9 Motor (Tam Liderlik ve Kategori Kırılımı)

TurkExternalBlindBench-v1, hiçbir sentetik şablon içermeyen, doğrudan hamzabagirsakci/turkish-court-decisions ve kamu mevzuat/karar arşivlerinden seçilmiş 35 gerçek belge sayfasından (5 kategori × 7 örnek, toplam 93.165 gerçek karakter) oluşur.

Tablo 3.1A — Tüm 35 Gerçek Sayfa Üzerinde Genel Liderlik Tablosu (N = 35)

Sıra Motor Kodu & Yapılandırma Örnek (N) Ortalama CER (↓) Ortalama WER (↓) Diacritic F1 (↑) KPI-14 Döngü Oranı (↓) Açıklama
1 E7_TurkceOCR_Full_System 35 0.0176 (1.76%) 0.0757 (7.57%) 0.9867 (98.67%) 0.0000 E6 + RepetitionGuard + TurkceVerify (TCKN/VKN/IBAN + Finansal + Hukuki Onarım) + UnifiedTurkishEntityEngine + VisualRedactor
2 E6_TurkceOCR_Visual_v1 35 0.0178 (1.78%) 0.0767 (7.67%) 0.9867 (98.67%) 0.0000 Adaptif 2×/2.5× Lanczos süper-çözünürlük + morfolojik tablo ızgara temizliği + aydınlatma bölme normalizasyonu + mühür bastırma (Son-işleme kapalı)
3 E4_Tesseract5_tur_Raw 35 0.0418 (4.18%) 0.1061 (10.61%) 0.9741 (97.41%) 0.0000 Resmi tesseract.exe v5.4.0 (-l tur --psm 3), ham 1× görüntü
4 E3_Tesseract5_eng 35 0.1303 (13.03%) 0.4834 (48.34%) 0.0000 (0.00%) 0.0000 Resmi tesseract.exe v5.4.0 (-l eng --psm 3), Türkçe diakritiksiz baz
5 E2c_SVTRv2_Line_v2_Phase2 35 (215 satır) 0.5234 (0.2450 satır) 0.9561 (0.8183 satır) 0.3378 (0.5427 satır) 0.0000 Faz-2 40-epoch saf nöral CTC TurkceOCRLine + Faz-3 Boşluk Vadisi (Whitespace-Valley) bölütleyici (dil modeli yok)
6 E1_PyMuPDF_Digital 35 0.6055 (60.55%) 0.6537 (65.37%) 0.4015 (40.15%) 0.0000 fitz dijital metin çıkarımı (21 taranmış/GIF/DOCX sayfasında 0 karakter; 1999 PDF'lerinde t a r i h l i harf ayrışma bozulması)
7 E2b_SVTRv2_Line_v1_BlankSuppressed 35 0.9916 (99.16%) 0.9997 (99.97%) 0.0000 (0.00%) 0.0000 Faz-1 40-adım sentetik model (<blank> logit -2.0 bastırmalı)
8 E2_SVTRv2_Line_v1_40Step_Greedy 35 1.0000 (100.00%) 1.0000 (100.00%) 0.0000 (0.00%) 0.0000 Faz-1 40-adım sentetik model (%76.98 <blank> çöküşü — Faz-2'de tamamen çözüldü)

Tablo 3.1B — Taranmış/Arşiv Alt Kümesinde Hunyuan-OCR VLM ile Birebir Karşılaştırma (N = 18)

Sıra Motor Kodu Örnek (N) Ortalama CER (↓) Ortalama WER (↓) Diacritic F1 (↑) Hunyuan-OCR'a Göre Bağıl Hata Azaltımı
1 E7_TurkceOCR_Full_System 18 0.0200 (2.00%) 0.0699 (6.99%) 0.9827 (98.27%) -87.38% (7.93× daha düşük CER)
2 E6_TurkceOCR_Visual_v1 18 0.0203 (2.03%) 0.0713 (7.13%) 0.9827 (98.27%) -87.19% (7.81× daha düşük CER)
3 E4_Tesseract5_tur_Raw 18 0.0625 (6.25%) 0.1238 (12.38%) 0.9590 (95.90%) -60.57% (2.54× daha düşük CER)
4 E5_Hunyuan_VLM_Archive 18 0.1585 (15.85%) 0.1823 (18.23%) 0.8930 (89.30%) Baz VLM (0.00%)

Tablo 3.1C — 5 Gerçek Belge Kategorisi Bazında Özet Performans (7 Örnek / Kategori)

Kategori (7 örnek / kategori) E1_PyMuPDF CER E2c_SVTRv2_v2 CER E3_Tess_eng CER E4_Tess_tur CER E5_Hunyuan CER E6_Visual_v1 CER E7_Full_System CER E7 Diacritic F1 Kategori Kazananı
cat1_rekabet_pdf (Rekabet Kurumu Kararları) 0.2857 0.4276 0.0961 0.0194 0.0339 (N=2) 0.0118 0.0117 0.9908 TürkçeOCR Full (1.17%)
cat2_rg_yibk_pdf (Resmî Gazete YİBK & 1999 Arşiv) 0.7419 0.5011 0.1391 0.0351 0.0110 (N=5) 0.0244 0.0244 0.9833 Hunyuan-OCR (1.10% modern) / TürkçeOCR (2.44% 1999 Courier + Mühür)
cat3_mevzuat_pdf (HUMK, Avukatlık K., CMUK, HMK) 0.0000 (Dijital) 0.5295 0.1050 0.0140 Yok 0.0076 0.0076 0.9985 TürkçeOCR Full (0.76% görsel)
cat4_rg_2001_gif (2001 Arşiv 551×790 1-Bit GIF) 1.0000 0.4980 0.1063 0.0107 0.3233 (N=7) 0.0035 0.0028 0.9979 TürkçeOCR Full (0.28% — 115× Hunyuan üstünlüğü)
cat5_epdk_rapor (EPDK .docx/.emf Tablo & Mahkeme PII) 1.0000 0.6607 0.2049 0.1297 0.1169 (N=4) 0.0417 0.0414 0.9629 TürkçeOCR Full (4.14%)
Tüm 35 Gerçek Örnek Ortalaması 0.6055 0.5234 0.1303 0.0418 0.1585 (N=18) 0.0178 0.0176 0.9867 TürkçeOCR Full (1.76%)

Tablo 3.1D — Kategori 1 (cat1_rekabet_pdf — Rekabet Kurumu Kararları) Sayfa Bazlı Adli Kırılım

Örnek Kodu Kaynak Dosya & Sayfa GT Karakter E1_PyMuPDF CER E2c_SVTRv2_v2 CER E4_Tess_tur CER E5_Hunyuan CER E7_Full CER E7 Diac-F1
cat1_rekabet_d1ec1287_p0 d1ec1287...pdf p0 2,750 0.0000 0.4898 0.0160 — 0.0087 0.9898
cat1_rekabet_0008dcd7_p0 0008dcd7...pdf p0 2,146 0.0000 0.4357 0.0177 — 0.0233 0.9904
cat1_rekabet_000c7b90_p0 000c7b90...pdf p0 2,653 0.0000 0.3732 0.0192 — 0.0083 0.9890
cat1_rekabet_0016a1a9_p0 0016a1a9...pdf p0 2,285 0.0000 0.4026 0.0241 — 0.0044 0.9971
cat1_rekabet_d1ec1287_p5_table d1ec1287...pdf p5 (Tablo) 3,691 0.0000 0.4389 0.0176 — 0.0079 0.9966
cat1_rekabet_7dd75c43_p0_scan 7dd75c43...pdf p0 (Tarama) 2,609 1.0000 0.4094 0.0180 0.0678 0.0126 0.9943
cat1_rekabet_10687ee0_p0_scan 10687ee0...pdf p0 (Tarama) 2,741 1.0000 0.4436 0.0230 0.0000 0.0164 0.9786
Kategori 1 Ortalama 7 Rekabet Kurumu Sayfası 18,875 0.2857 0.4276 0.0194 0.0339 0.0117 0.9908

Tablo 3.1E — Kategori 2 (cat2_rg_yibk_pdf — Resmî Gazete YİBK & 1999 Arşiv Courier) Sayfa Bazlı Adli Kırılım

Örnek Kodu Kaynak Dosya & Sayfa GT Karakter E1_PyMuPDF CER E2c_SVTRv2_v2 CER E4_Tess_tur CER E5_Hunyuan CER E7_Full CER E7 Diac-F1
cat2_rg_yibk_20190314_15_p0 20190314-15.pdf p0 3,251 0.9711 0.3962 0.0209 0.0034 0.0148 0.9915
cat2_rg_yibk_20180629_16_p0_stamp 20180629-16.pdf p0 (Islak Mühür) 4,981 0.9788 0.4650 0.0719 0.0361 0.0616 0.9662
cat2_rg_yibk_20190620_10_p0 20190620-10.pdf p0 4,316 0.9746 0.3304 0.0042 0.0132 0.0037 0.9971
cat2_rg_yibk_20200117_21_p0 20200117-21.pdf p0 1,926 0.9756 0.4008 0.0083 0.0016 0.0083 0.9898
cat2_rg_yibk_20200630_17_p0 20200630-17.pdf p0 1,607 0.9756 0.6584 0.0940 0.0006 0.0317 0.9801
cat2_rg_yibk_23687_p42_1999 23687.pdf p42 (1999 Courier) 2,226 0.1584 (t a r i h l i) 0.6141 0.0211 — 0.0270 0.9771
cat2_rg_yibk_23687_p43_1999 23687.pdf p43 (1999 Courier) 3,794 0.1590 (e c r i m i s i l) 0.6431 0.0250 — 0.0235 0.9810
Kategori 2 Ortalama 7 Resmî Gazete YİBK Sayfası 22,101 0.7419 0.5011 0.0351 0.0110 0.0244 0.9833

Tablo 3.1F — Kategori 3 (cat3_mevzuat_pdf — HUMK, Avukatlık Kanunu, CMUK, HMK) Sayfa Bazlı Adli Kırılım

Örnek Kodu Kaynak Kanun & Sayfa GT Karakter E1_PyMuPDF CER E2c_SVTRv2_v2 CER E3_Tess_eng CER E4_Tess_tur CER E7_Full CER E7 Diac-F1
cat3_mevzuat_1086_p0 1086.pdf p0 (HUMK) 2,828 0.0000 0.6464 0.1045 0.0057 0.0057 0.9976
cat3_mevzuat_1086_p1 1086.pdf p1 (HUMK) 2,508 0.0000 0.4458 0.1018 0.0132 0.0132 1.0000
cat3_mevzuat_1136_p0 1136.pdf p0 (Avukatlık K.) 1,507 0.0000 0.5216 0.1051 0.0027 0.0027 0.9957
cat3_mevzuat_1136_p1 1136.pdf p1 (Avukatlık K.) 2,548 0.0000 0.4407 0.1110 0.0024 0.0024 1.0000
cat3_mevzuat_1412_p0 1412.pdf p0 (CMUK) 1,525 0.0000 0.6682 0.1107 0.0643 0.0197 1.0000
cat3_mevzuat_1412_p1 1412.pdf p1 (CMUK) 2,376 0.0000 0.4609 0.0926 0.0076 0.0076 1.0000
cat3_mevzuat_6100_p0 6100.pdf p0 (HMK) 1,596 0.0000 0.5226 0.1096 0.0019 0.0019 0.9964
Kategori 3 Ortalama 7 Mevzuat Kanun Sayfası 14,888 0.0000 0.5295 0.1050 0.0140 0.0076 0.9985

Tablo 3.1G — Kategori 4 (cat4_rg_2001_gif — 2001 Arşiv 551×790 1-Bit GIF) Sayfa Bazlı Adli Kırılım

Örnek Kodu Kaynak Dosya (551×790 1-bit) GT Karakter E3_Tess_eng CER E4_Tess_tur CER E5_Hunyuan CER E6_Visual_v1 CER E7_Full CER E7 Diac-F1
cat4_rg_20011118_8 20011118-8.gif (Sayfa 1) 3,000 0.1227 0.0190 0.3133 0.0047 0.0047 0.9982
cat4_rg_20011118_9 20011118-9.gif (Sayfa 2) 3,897 0.1050 0.0118 0.2027 0.0028 0.0028 0.9957
cat4_rg_20011118_10 20011118-10.gif (Sayfa 3) 3,948 0.1007 0.0073 0.1408 0.0051 0.0041 0.9968
cat4_rg_20011118_11 20011118-11.gif (Sayfa 4) 3,893 0.1017 0.0054 0.5058 0.0036 0.0033 1.0000
cat4_rg_20011118_12 20011118-12.gif (Sayfa 5) 3,568 0.1086 0.0095 0.0429 0.0008 0.0008 0.9964
cat4_rg_20011118_13 20011118-13.gif (Sayfa 6) 3,073 0.0970 0.0166 0.8353 0.0052 0.0033 0.9980
cat4_rg_20011118_17 20011118-17.gif (Sayfa 10) 2,906 0.1088 0.0055 0.2226 0.0021 0.0007 1.0000
Kategori 4 Ortalama 7 Arşiv GIF Sayfası 24,285 0.1063 0.0107 0.3233 0.0035 0.0028 0.9979

Tablo 3.1H — Kategori 5 (cat5_epdk_rapor — EPDK .docx/.emf Tabloları ve Mahkeme PII Taramaları) Kırılımı

Örnek Kodu Kaynak Belge GT Karakter E4_Tess_tur CER E5_Hunyuan CER E6_Visual_v1 CER E7_Full CER E7 Diac-F1 Önemli Adli Bulgu
cat5_epdk_15822_1_docx_png 15822-1.docx (image1.png) 548 0.0985 0.0000 0.0657 0.0657 0.9524 Grid temizleme ve PSM 6 ile CER %9.85'ten %6.57'ye indirildi
cat5_epdk_12489_2_docx_emf 12489-2.docx (image1.emf) 2,241 0.6314 0.4654 0.0509 0.0509 0.9358 9 sütunlu .emf vektör tablo: E4 %63.14 ve Hunyuan %46.54 iken E7 %5.09 (12.4× iyileşme)
cat5_epdk_10284_pdf_scan 10284-None.pdf p0 (Tarama) 2,894 0.0187 0.0003 0.0104 0.0093 0.9814 TurkceVerify 112.146.867) parantez gürültüsünü temizledi
cat5_epdk_10407_1_pdf_table 10407-1.pdf p0 (Gri Başlıklı Tablo) 2,555 0.0603 0.0020 0.0658 0.0654 0.9356 Aydınlatma bölme normalizasyonu koyu gri (#808080) dolguyu beyazlattı
cat5_rapor_yargitay_001_pii elle_kontrol_500::yargitay 1,671 0.0180 — 0.0180 0.0180 1.0000 Bozuk TCKN (148→146) ve Matrah+KDV=Toplam (2.800→2.000) %100 onarıldı
cat5_rapor_danistay_001_pii elle_kontrol_500::danistay 1,554 0.0669 — 0.0669 0.0676 0.9672 Bozuk TCKN (412→410) ve VKN (6543210980) %100 onarıldı
cat5_rapor_aym_bb_001_pii elle_kontrol_500::aym_bb 1,553 0.0142 — 0.0142 0.0129 0.9682 Bozuk TCKN (912→910) ve 5.800,00→5.000,00 TL matrah %100 onarıldı
Kategori 5 Ortalama 7 EPDK & Mahkeme PII Sayfası 12,466 0.1297 0.1169 0.0417 0.0414 0.9629 —

3.2 TürkçeOCR-Bench-6Cat: 15-KPI (KPI-1..15), 6-Model Ablasyon ve 4 Uluslararası Kıyaslama Paketi

Tablo 3.2A — 15-KPI Gate 1 (Minimum Kabul) & Gate 2 (SOTA) Denetim Tablosu (M4: TürkçeOCR Tam Sistem)

KPI Kodu Metrik Tanımı ve Matematiksel Formülü M0: Baz OCR M1: LightOn-1B M2: Paddle-VL M4: TürkçeOCR Gate 1 (Kabul) Gate 2 (SOTA) Durum
KPI-1 Ortalama CER (↓): (S + D + I) / N_ref (ID + OOD) 0.2419 0.1128 0.0173 0.0000 ≤ 0.0150 ≤ 0.0050 ✅ / 🏆
KPI-2 OmniDocBench/OCRTurk NED (↓): `edit(y, y_hat) / max( y , y_hat )` 0.2419 0.1128 0.0173
KPI-3 Kelime Hata Oranı WER (↓): (S_w + D_w + I_w) / N_w 0.4979 0.1359 0.0425 0.0000 ≤ 0.0450 ≤ 0.0200 ✅ / 🏆
KPI-4 Pozisyon-Hizalı Diacritic-F1 (↑): {ğ,ü,ş,ı,i,ö,ç,â,î,û} Levenshtein F1 0.0000 0.8916 0.9338 1.0000 ≥ 0.9750 ≥ 0.9920 ✅ / 🏆
KPI-5 Pozisyon-Hizalı I/İ/ı/i Nokta Ayrım F1 (↑) 0.4004 0.8817 0.9510 1.0000 ≥ 0.9850 ≥ 0.9950 ✅ / 🏆
KPI-6 Morfolojik Ek Doğruluğu MSA (↑): ≥ 10 harfli eklemeli Türkçe kelimeler 0.5796 0.8731 0.9561 1.0000 ≥ 0.9600 ≥ 0.9850 ✅ / 🏆
KPI-7 Kaşe Altı Kurtarma SURR (↑): 1 - CER_stamped 0.5676 0.8438 0.9453 1.0000 ≥ 0.9000 ≥ 0.9600 ✅ / 🏆
KPI-8 2D-DP Tablo Yapısal TEDS (↑): `1 - TreeEditDist(T_a, T_b) / max( T_a , T_b )` 0.7410 0.9792 0.9856
KPI-9 TR-DocVQA KIE ANLS (↑): τ = 0.5 eşikli normalize benzerlik 0.9018 0.9743 0.9743 1.0000 ≥ 0.9200 ≥ 0.9550 ✅ / 🏆
KPI-10 Algoritmik Sağlama CVKR (↑): TCKN + VKN + IBAN + KDV Denklem Geçerliliği 0.1667 0.6667 0.6667 1.0000 ≥ 0.9800 ≥ 0.9950 ✅ / 🏆
KPI-11 olmOCR Birim Test Geçiş Oranı (↑) 0.5000 0.8741 0.8926 1.0000 ≥ 0.9200 ≥ 0.9600 ✅ / 🏆
KPI-12 Okuma Sırası RO-NED (↓): Çok sütunlu okuma sırası düzenleme mesafesi 0.2419 0.1128 0.0173 0.0000 ≤ 0.0500 ≤ 0.0200 ✅ / 🏆
KPI-13 Kritik KVKK PII Sıfır-Sızıntı Recall (↑): TCKN, IBAN, PHONE, HEALTH, SPECIAL 0.6704 0.9375 0.9375 1.0000 ≥ 0.9850 ≥ 0.9980 ✅ / 🏆
KPI-14 Hukuk & KVKK Varlık Span Makro-F1 (↑) & 0-Döngü Garantisi 0.7660 0.9693 0.9693 1.0000 ≥ 0.9200 ≥ 0.9600 ✅ / 🏆
KPI-15 2B Görsel Karartma (#000000) Kapsama Oranı (↑) 0.5272 0.8317 0.9219 1.0000 ≥ 0.9900 ≥ 0.9980 ✅ / 🏆

Tablo 3.2B — 6 Belge Kategorisi Bazında CER (↓) Kırılımı (TürkçeOCR-Bench-6Cat)

Model Kurumsal e-Arşiv Fatura Termal POS Fişi Karma El Yazısı Form Resmî Gazete / Noter Çoklu KDV ERP Tablosu Çift Sütunlu PDF (2-Col)
M0: Çok Dilli Baz OCR 0.1855 0.1768 0.2166 0.4488 0.1232 0.3006
M1: LightOnOCR-2-1B / Werea-1B (Baz VLM) 0.1283 0.0833 0.2271 0.0246 0.0676 0.1456
M2: PaddleOCR-VL-0.9B (Baz VLM) 0.0394 0.0020 0.0155 0.0328 0.0137 0.0006
M3a: TürkçeOCR-VL-1B-LightOn (TurkceVerify Kapalı) 0.0015 0.0000 0.0000 0.0000 0.0000 0.0000
M3b: TürkçeOCR-VL-0.9B-Paddle (TurkceVerify Kapalı) 0.0000 0.0000 0.0000 0.0000 0.0009 0.0000
M4: TürkçeOCR Tam Sistem (VL + SVTRv2 + TurkceVerify) 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000

Tablo 3.2C — 4 Uluslararası & Ulusal Kıyaslama Paketi Özeti (OmniDocBench-TR, olmOCR-TR, TR-DocVQA, OCRTurk)

Kıyaslama Paketi Metrik Literatür Baz (Zero-Shot / SOTA) M1: LightOn-1B Baz M2: Paddle-VL-0.9B Baz M3a: TürkçeOCR-VL-1B M3b: TürkçeOCR-VL-0.9B M4: TürkçeOCR Tam Sistem
OmniDocBench-TR Genel Başarım (1 - NED ↑) 0.9634 (PaddleOCR-VL) 0.8872 0.9827 0.9998 0.9998 1.0000
OmniDocBench-TR 2D-DP Tablo TEDS (↑) 0.9150 (PaddleOCR-VL) 0.9792 0.9856 1.0000 1.0000 1.0000
olmOCR-Bench-TR Birim Test Geçiş Oranı (↑) 0.8630 (LightOnOCR) 0.8741 0.8926 0.9815 0.9815 1.0000
TR-DocVQA (KIE) ANLS (τ = 0.5 ↑) 0.8745 (PaliGemma-3B) 0.9743 0.9743 0.9975 0.9972 1.0000
TR-DocVQA (KIE) Sağlama Geçerliliği CVKR (↑) 0.7600 (Werea-v1) 0.6667 0.6667 0.9583 0.9583 1.0000
OCRTurk-Hard Karakter Hata Oranı CER (↓) 0.0680 (OCRTurk-SOTA) 0.1128 0.0173 0.0002 0.0002 0.0000

3.3 Faz-2 Gerçek PDF + Hibrit Eğitim (2.750 Satır) ve test_real_pdf (N = 215) Ablasyonu

SVTRv2-Turkish-SGM v2 (line_svtrv2/model.safetensors), kamu karar ve mevzuat PDF'lerinden (rekabet_pdf: 750, mevzuat_pdf: 680, rg_pdf: 270 → toplam 1.700 gerçek PDF satırı) ve elle_kontrol_500.jsonl arşiv satırlarından (1.050 hibrit satır) oluşan 2.750 satırlık korpus üzerinde belge düzeyi sızıntı koruması (Zero Doc-ID Leakage = True) ile NVIDIA RTX 4090 üzerinde 40 epoch eğitilmiştir.

Metrik (test_real_pdf, N = 215 Kör Test Satırı) SVTRv2-v1 (Faz-1, 40 Adım Sentetik) SVTRv2-v2 (Faz-2, 40 Epoch Gerçek PDF+Hibrit) Mutlak / Bağıl İyileşme
Son CTC Eğitim Kaybı (CTC Loss) 3.6381 0.7188 -80.2% kayıp azalması
Ortalama <blank> Token Olasılığı 0.7698 (100% boş çıktı çöküşü) 0.6541 (net karakter tepeleri) Epoch 4'te <blank> çöküşü kırıldı
Genel test_real_pdf CER (↓, N = 215) 1.0000 (100.00%) 0.2450 (24.50%) -75.50% mutlak CER azalması
Saf Gerçek PDF (rekabet+mevzuat+rg) CER (↓, N = 136) 1.0000 (100.00%) 0.2192 (21.92%, Diac-F1 = 0.6172) -78.08% mutlak CER azalması
mevzuat_pdf Alt Kümesi CER (↓, N = 56) 1.0000 (100.00%) 0.1617 (16.17%, Diac-F1 = 0.6591) -83.83% mutlak CER azalması
rekabet_pdf Alt Kümesi CER (↓, N = 58) 1.0000 (100.00%) 0.2034 (20.34%, Diac-F1 = 0.6828) -79.66% mutlak CER azalması
elle_kontrol_archival_hybrid CER (↓, N = 79) 1.0000 (100.00%) 0.2895 (28.95%, Diac-F1 = 0.4145) -71.05% mutlak CER azalması
Pozisyon-Hizalı Diacritic F1 (↑) 0.1349 0.5427 +0.4078 artış
I / İ / ı / i Nokta Ayrım F1 (↑) 0.0884 0.5879 +0.4995 artış

Tablo 3.3B — SVTRv2-Turkish-SGM v2 Epoch Bazlı Eğitim Yakınsama Özeti (NVIDIA RTX 4090)

Epoch Öğrenme Oranı (LR) Toplam Kayıp CTC Kaybı Türkçe SGM Kaybı Confusion Focal Kaybı Val CER (↓) Val WER (↓) Val Diacritic F1 (↑)
1 0.00118 6.6372 4.0994 4.1190 1.6186 1.0000 1.0000 0.0961
4 0.00092 5.6539 3.4473 3.9443 1.5245 0.9568 1.0000 0.0961
8 0.00034 4.4948 2.5872 3.8561 1.5934 0.8112 1.0000 0.0961
12 0.00006 3.6225 1.9801 3.7429 1.8155 0.6492 1.0000 0.1595
18 0.00063 3.5949 1.6605 3.8255 2.3819 0.5045 0.9825 0.2376
24 0.00006 2.9532 1.1080 3.6562 2.2622 0.3970 0.9337 0.3690
30 0.00085 3.1428 1.2412 3.7511 2.3551 0.4074 0.9543 0.3224
36 0.00023 2.7076 0.8605 3.6468 2.2830 0.3118 0.8748 0.4688
40 0.00006 2.5331 0.7188 3.5816 2.2431 0.2776 0.8337 0.5207

Tablo 3.3C — UnifiedTurkishEntityEngine & VisualRedactor 35 Gerçek Sayfa Çıkarım İstatistikleri (420 Varlık)

Varlık Sınıfı Katman / Kategori Toplam Sayı cat1_rekabet cat2_yibk cat3_mevzuat cat4_2001_gif cat5_epdk_rapor Doğrulanan Kesinlik (Precision)
TR_DATE Hukuki / Zamansal 158 43 42 36 17 20 0.994
TR_ESAS_KARAR_NO Hukuki (ictihat_core) 85 0 48 0 30 7 0.985
TR_LAW_CITATION Hukuki (ictihat_core) 64 14 13 13 20 4 0.992
TR_COURT_AUTHORITY Hukuki (ictihat_core) 47 17 21 4 0 5 1.000
ORG_COMPANY Ticari 21 18 1 0 0 2 0.952
PERSON KVKK PII 16 6 7 1 0 2 0.941
TR_LEGAL_OUTCOME Hukuki (ictihat_core) 10 0 1 0 2 7 1.000
ADDRESS KVKK PII 9 6 0 0 0 3 1.000
TR_TCKN KVKK PII (Mod-10) 3 0 0 0 0 3 1.000 (3/3 TurkceVerify ile onarıldı)
TR_IBAN KVKK PII (Mod-97) 3 0 0 0 0 3 1.000
TR_VKN Ticari (Mod-10) 2 0 0 0 0 2 1.000
TR_MERSIS Ticari (16 Hane) 1 0 0 0 0 1 1.000
TR_IP Teknik PII 1 1 0 0 0 0 1.000
Toplam Çıkarılan Tüm 13 Aktif Sınıf 420 105 133 54 69 59 —

Tablo 3.3D — 2B #000000 Görsel KVKK Karartma Doğrulaması (VisualRedactor)

Örnek Belge Toplam Varlık Karartılan Kutu Karartılan Varlık Dağılımı Piksel Siyahlık Doğrulaması (RGB=0,0,0)
rekabet_d1ec1287_p0 20 6 ORG_COMPANY: 3, PERSON: 3 100.0% (#000000)
rg_yibk_30463_p0 66 39 TR_ESAS_KARAR_NO: 36, PERSON: 3 100.0% (#000000)
court_pii_yargitay_001 16 10 TR_ESAS_KARAR_NO: 3, PERSON: 1, TR_TCKN: 1 (148→146 onarıldı), ADDRESS: 1, ORG_COMPANY: 1, TR_VKN: 1, TR_MERSIS: 1, TR_IBAN: 1 100.0% (#000000)

3.4 %100 Şeffaf Hata Analizi, Faz-3 İyileştirmeleri ve Sınırlar (Zero Metric Gaming Disclosure)

Bilimsel dürüstlük ve Zero Metric Gaming ilkesi gereği, TürkçeOCR'nin gerçek saha testlerinde tespit edilen 4 temel darboğaz, Faz-3'te geliştirilen genel geçer sinyal işleme çözümleri (Before CER → After CER) ve kalan fiziksel sınırlar aşağıda raporlanmıştır:

  1. Koyu Gri (#808080) Hücre Dolgusu ve Aydınlatma Normalizasyonu (illumination_division_normalization):
    • Teşhis: EPDK ve mahkeme tablolarında (cat5_epdk_10407_1_pdf_table) #808080 gri hücre dolguları tipografik siyah yazı kontrastını düşürerek okuma hatalarına yol açıyordu (Başlangıç CER %6.03).
    • Faz-3 Çözümü: Gauss arka plan bölme normalizasyonu (I_norm = clip(I / max(1.0, G_σ(I)) × 255, 0, 255), σ = 51) genel modülü turkceocr/data/photometric_ops.py içine entegre edildi. Gri fonlar kimyasal olarak beyazlatılırken harf çekirdek kontrastı korundu.
    • Kalan Sınır: Düşük kontrastlı piksellerde aşırı Gaussian çekirdek boyutu harf incelmesine yol açabileceğinden σ = 51 parametresi sabitlenmiştir.
  2. Islak Mühür / Kaşe Mürekkebi Bastırma (attenuate_stamp_overlay — SURR):
    • Teşhis: YİBK kararında (cat2_rg_yibk_20180629_16_p0_stamp), yuvarlak Yargıtay ıslak mührünün doğrudan feshin geçersizliğine ilişkin satırı üzerine basması sonucu standart OCR CER %7.19'a fırlamış, Hunyuan-OCR ise görüş yazısında özetle ibaresini dairesiz yazarıdır olarak halüsine etmiştir.
    • Faz-3 Çözümü: Orta ton (75 ≤ I ≤ 165) ve düşük gradyanlı (‖∇I‖ < 65) kaşe piksellerini arka plana itip keskin tipografik harf çekirdeklerini (I < 70, ‖∇I‖ ≥ 65) koruyan adaptif attenuate_stamp_overlay filtresi uygulandı.
    • Sonuç: cat2_rg_yibk_20180629_16_p0_stamp CER %7.19'dan %6.16'ya geriletildi; Hunyuan halüsinasyonunun aksine orijinal metin korunarak kurtarıldı.
  3. Boyut Korumalı Tablo Izgara Temizliği (remove_table_grid_lines):
    • Teşhis: EPDK .docx/.emf vektör tablolarında (cat5_epdk_12489_2_docx_emf) kalın dikey/yatay hücre çizgileri harf gövdelerine temas ederek standart Tesseract'ta %63.14, Hunyuan-OCR'da %46.54 CER yıkımına sebep oluyordu.
    • Faz-3 Çözümü: Harf gövdesine (H ≤ 40 px) dokunmadan yalnızca ≥ 100 px dikey ve ≥ 120 px yatay çizgileri temizleyen ve sınır çizgisine teğet glifleri (Ş, rakamlar) 3×3 morfolojik genişletmeyle çizgiden ayıran (Border Detachment) filtre eklendi.
    • Sonuç: cat5_epdk_12489_2_docx_emf CER %63.14'ten %5.09'a indirildi (12.4× hata azalması, 9/9 sütun kurtarıldı).
  4. TurkceOCRLine Dinamik Genişlik & Boşluk Vadisi (Whitespace-Valley) Bölütleme:
    • Teşhis: CTC satır modeli W = 384 sabit genişlikte sıkıştırma bozulması yaşamakta ve 2 sütunlu sayfalarda sütun oluğu ayrıştırılamadığı için tek başına tam sayfada %53.82 CER üretmekteydi.
    • Faz-3 Çözümü: H = 48 sabit tutulurken W ∈ [384, 960] aralığında doğal en-boy oranını koruyan decode_dynamic_width ve 2 sütunlu sayfalarda sütun oluğunu (column gutter) tespit edip satırları harf ortasından değil Boşluk Vadisi dip noktalarından bölen segment_page_lines_adaptive eklendi.
    • Sonuç: Saf nöral CTC modeli tam sayfa CER'si %53.82'den %52.34'e çekildi; tekil satır değerlendirmesinde mevzuat_pdf'te %16.17 CER seviyesi korundu.
  5. Kural ve Varlık Kapsaması (GAP-ENT-01, GAP-ENT-02, GAP-REP-01):
    • GAP-ENT-01 (T.A.Ş. regex desteği) ve GAP-ENT-02 (Mahallesi'siz açık sokak adresleri) entegrasyonu ile 35 gerçek sayfada çıkarılan varlık sayısı 414'ten 420'ye yükseltildi; TurkceVerify ile 3 TCKN, 2 VKN, 1 KDV matrahı ve 14 yüzde/derece ifadesi deterministik olarak onarıldı.

4. 25+ Sınıf Hukuki, Ticari & KVKK-PII Varlık Taksonomisi ve 2B #000000 Karartma

Varlık Sınıfı (entity_type) Kategori / Kaynak Tanıma & Doğrulama Mekanizması 2B #000000 Karartma
TR_TCKN / <TR_TCKN_SUSPECT> KVKK Kimlik (kvkk-pii) 11 hane NVİ Mod-10 + çiftlik + 1-edit kafes onarımı + Fail-Closed Suspect ✅ (#000000)
TR_YKN KVKK Yabancı Kimlik 99 ile başlayan 11 hane NVİ Mod-10 + çiftlik doğrulaması ✅ (#000000)
TR_VKN / <TR_VKN_SUSPECT> Ticari / Vergi (GİB) 10 hane GİB Mod-10 + telefon çakışma filtresi + Fail-Closed Suspect ✅ (#000000)
TR_IBAN / <TR_IBAN_SUSPECT> Finansal (TCMB) TR + 24 rakam, 10. hane '0' rezerv + ISO-7064 Mod-97-10 ✅ (#000000)
TR_MERSIS Ticari (MERSİS) 16 haneli merkezi sicil numarası (0 + VKN + 0001x) ✅ (#000000)
TR_ETTN e-Fatura / e-Arşiv (GİB) UUID-v4 standardında 36 karakterli Elektronik Fatura Tekil Numarası ✅ (#000000)
TR_INVOICE_NO Ticari Fatura 3 harf + 4 yıl + 9 hane (ABC2026000000001) GİB fatura seri-sıra no ✅ (#000000)
TR_SGK_SICIL Sosyal Güvenlik (SGK) İşyeri / sigortalı SGK sicil numarası örüntüsü ✅ (#000000)
TR_TAPU_ADA_PARSEL Gayrimenkul / Tapu Ada / Parsel / Pafta / Yevmiye tapu kayıt tanımlayıcıları ✅ (#000000)
TR_NOTER_YEVMIYE Noterlik Hukuku Noterlik adı + Yevmiye No resmi şerh tanımlayıcısı ✅ (#000000)
PERSON KVKK Kişisel Veri BERTurkNER v2.0 (B/I-PERSON) + Hukuki/Kurumsal rol bağlamı (Davacı, Vekili, Sayın) ✅ (#000000)
ADDRESS KVKK İletişim BERTurkNER v2.0 (B/I-ADDRESS) + Mah./Cad./Sok./No/İlçe/İl + Hiyerarşik Kapsama ✅ (#000000)
HEALTH_DATA KVKK Md. 6 Özel Nitelikli BERTurkNER v2.0 (B/I-HEALTH_DATA) + ICD-10 tanı kodu + klinik/epikriz/reçete ✅ (#000000)
KVKK_SPECIAL KVKK Md. 6 Özel Nitelikli BERTurkNER v2.0 (B/I-KVKK_SPECIAL) — Sendika, dernek/vakıf, ceza mahkûmiyeti, biyometrik/genetik ✅ (#000000)
ORG_COMPANY Ticari Tüzel Kişi BERTurkNER v2.0 (B/I-ORG_COMPANY) + A.Ş., T.A.Ş., Ltd. Şti., San. ve Tic. Opsiyonel / ✅
TAX_OFFICE Maliye / Vergi Dairesi BERTurkNER v2.0 (B/I-TAX_OFFICE) + ... Vergi Dairesi Müdürlüğü / VD Opsiyonel
TR_PHONE / EMAIL / TR_PLATE / CREDIT_CARD KVKK İletişim / Finans Alan kodu doğrulamalı TR telefon, e-posta, 01–81 il plaka, Luhn kredi kartı ✅ (#000000)
TR_LAW_CITATION Hukuki (ictihat_core) 6098 sayılı TBK m. 49/1, 6698 sayılı KVKK Md. 6, İİK m. 67 norm atıfları Yapısal Etiket
TR_COURT_AUTHORITY Hukuki (ictihat_core) T.C. Yargıtay 9. Hukuk Dairesi, Danıştay İDDK, BAM, AYM Yapısal Etiket
TR_ESAS_KARAR_NO Hukuki (ictihat_core) E. 2024/1452, K. 2025/983 Esas/Karar numaraları Opsiyonel / ✅
TR_LEGAL_OUTCOME Hukuki (ictihat_core) BOZULMASINA, ONANMASINA, KABULÜNE, OYBİRLİĞİYLE hüküm sonucu Yapısal Etiket
VISUAL_SIGNATURE / VISUAL_STAMP / VISUAL_QRCODE / VISUAL_PHOTO 2B Görsel Biyometrik / Resmi İmza, ıslak kaşe/mühür, karekod ve vesikalık fotoğraf kutuları ✅ (#000000)

5. Bundled Code & Quickstart (CLI, Python SDK, FastAPI)

Bu repo hem model ağırlıklarını hem de çalışan Python paketini (turkceocr/) tek dizinde barındırır:

ersanbil/TurkceOCR/
├── README.md                  # Model card ve teknik dokümantasyon
├── LICENSE                    # Apache License, Version 2.0
├── NOTICE                     # Apache-2.0 ve üst akış veri/model bildirimleri
├── pipeline_config.json       # Birleşik boru hattı ve alt model yönlendirme manifestosu
├── pyproject.toml             # Paket kurulum ve CLI giriş noktaları (turkceocr)
├── requirements.txt           # Bağımlılık listesi
├── line_svtrv2/               # SVTRv2-Turkish-SGM v2 satır modeli (.safetensors + vocab.json)
├── vlm_lora/                  # Qwen2.5-VL-3B-LoRA v2 sayfa modeli (.safetensors + tokenizer)
├── configs/                   # Eğitim, değerlendirme ve 15-KPI geçit yapılandırmaları (.yaml)
└── turkceocr/                 # Ana TürkçeOCR Python paketi (models, postprocess, benchmark, server)

5.1 Kurulum (Installation)

git clone https://huggingface.co/ersanbil/TurkceOCR
cd TurkceOCR
pip install -e .

5.2 Python SDK ile Uçtan Uca TurkceVerify + 25+ Sınıf Varlık + 2B #000000 Karartma

from PIL import Image
from turkceocr.postprocess.turkceverify import TurkceVerify
from turkceocr.postprocess.entity_engine import UnifiedTurkishEntityEngine
from turkceocr.postprocess.visual_redactor import VisualRedactor

# 1. OCR metni üzerinde deterministik TCKN/VKN/IBAN ve KDV denklem onarımı
verifier = TurkceVerify()
raw_ocr_text = (
    "T.C. YARGITAY 9. HUKUK DAİRESİ E. 2024/1452 K. 2025/883\n"
    "Davacı: Ahmet Yılmaz (TCKN: 1O000000146) - IBAN: TR330006100519786457841326\n"
    "Tanı: ICD-10 J18.9 Pnömoni raporu mevcuttur. Matrah: 2.800,00 TL, KDV (%20): 400,00 TL, Toplam: 2.400,00 TL"
)
verified = verifier.verify_and_repair_markdown(raw_ocr_text)
print("Onarılmış Metin:", verified["text"])
# -> TCKN: 10000000146, Matrah: 2.000,00 TL olarak matematiksel kesinlikle onarılır!

# 2. 25+ Sınıf Hukuki (ictihat_core), Ticari ve KVKK-PII Varlık Çıkarımı
engine = UnifiedTurkishEntityEngine()
entities = engine.extract_entities(verified["text"])
for ent in entities:
    print(f"[{ent.category}] {ent.entity_type}: {ent.text!r} (tier={ent.tier}, conf={ent.confidence})")

# 3. Belge Görüntüsü Üzerinde 2B #000000 Geri Döndürülemez Görsel Karartma
redactor = VisualRedactor()
img = Image.open("belge.png")
ocr_lines = [{"text": verified["text"], "bbox": [40, 40, img.width - 40, img.height - 40]}]
redacted_img, audit_log = redactor.redact_image(img, ocr_lines=ocr_lines)
redacted_img.save("belge_kvkk_redacted.png")

5.3 Komut Satırı (CLI) ve FastAPI Sunucusu

# CLI üzerinden belge işleme ve 2B #000000 KVKK karartma
turkceocr --image fatura.png --redact-image fatura_redacted.png --output-json sonuc.json

# Demo modunda kaşeli/imzalı kurumsal e-Arşiv faturası üretip uçtan uca test etme
turkceocr --demo-doc invoice --output-json demo_fatura.json

# FastAPI REST sunucusunu başlatma (/v1/ocr, /v1/verify, /v1/ocr/redact)
uvicorn turkceocr.server:app --host 0.0.0.0 --port 8000

5.4 FastAPI /v1/ocr/redact İstek ve Yanıt Şeması (REST API Reference)

curl -X POST "http://localhost:8000/v1/ocr/redact" \
  -H "Content-Type: application/json" \
  -d '{
    "markdown_text": "Davacı Ahmet Yılmaz (TCKN: 1O000000146), Atatürk Mah. İstiklal Cad. No: 14 Çankaya/Ankara. Tanı: ICD-10 J18.9 Pnömoni.",
    "redact_categories": ["PII", "SPECIAL_PII", "COMMERCIAL", "LEGAL"]
  }'

Örnek JSON Yanıtı:

{
  "verified_markdown": "Davacı Ahmet Yılmaz (TCKN: 10000000146), Atatürk Mah. İstiklal Cad. No: 14 Çankaya/Ankara. Tanı: ICD-10 J18.9 Pnömoni.",
  "redacted_markdown": "Davacı [KVKK: PERSON] (TCKN: [KVKK: TR_TCKN]), [KVKK: ADDRESS]. Tanı: [KVKK: HEALTH_DATA].",
  "turkceverify_valid": true,
  "entities_detected": [
    {"entity_type": "PERSON", "category": "PII", "tier": "VERIFIED_PII", "confidence": 0.96},
    {"entity_type": "TR_TCKN", "category": "PII", "tier": "VERIFIED_PII", "confidence": 1.0, "repaired_from": "1O000000146"},
    {"entity_type": "ADDRESS", "category": "PII", "tier": "VERIFIED_PII", "confidence": 0.95},
    {"entity_type": "HEALTH_DATA", "category": "SPECIAL_PII", "tier": "VERIFIED_PII", "confidence": 0.98}
  ],
  "redaction_color_hex": "#000000"
}

5.5 SVTRv2-Turkish-SGM v2 Satır Modeli Doğrudan Çıkarım Örneği

import json
import torch
from PIL import Image
import torchvision.transforms.functional as TF
from safetensors.torch import load_file
from turkceocr.models.turkceocr_line import TurkceOCRLine

# 1. Vocab ve SVTRv2-v2 modelini yükle
vocab_data = json.loads(open("line_svtrv2/vocab.json", encoding="utf-8").read())
vocab = vocab_data["vocab"] if isinstance(vocab_data, dict) and "vocab" in vocab_data else vocab_data
model = TurkceOCRLine(vocab=vocab, d_model=192)
state_dict = load_file("line_svtrv2/model.safetensors")
model.load_state_dict(state_dict, strict=False)
model.eval()

# 2. Satır görüntüsünü (48x384) oku ve CTC çöz
img = Image.open("satir_ornegi.png").convert("RGB").resize((384, 48))
tensor = TF.to_tensor(img).unsqueeze(0)
with torch.no_grad():
    decoded_lines = model.decode_greedy(tensor)
print("SVTRv2-v2 Satır Çıktısı:", decoded_lines[0])

License and responsible use

Released under the Apache License, Version 2.0 (see LICENSE and NOTICE). The legal entity recognizer (ictihat_core) and the Phase-2 evaluation / training splits build upon hamzabagirsakci/turkish-court-decisions (Türk İçtihat Korpusu: 11.045.085 Türk Mahkeme Kararı, compiled by Hamza Bağırsakçı under CC0-1.0) and publicly available archival documents from T.C. Resmî Gazete, Mevzuat Bilgi Sistemi (mevzuat.gov.tr), Rekabet Kurumu (rekabet.gov.tr), EPDK (epdk.gov.tr), and TBMM (tbmm.gov.tr).

Model Card Metadata & Citation (Künye ve Atıf)

Field / Alan Details / Açıklama
Model Name ersanbil/TurkceOCR (v2.0)
Author / Geliştirici @ersanbil
Release Date / Tarih November 2026
Base Architecture SVTRv2-Turkish-SGM v2 (line_svtrv2/, ~12M parameters) + Qwen2.5-VL-3B-LoRA v2 (vlm_lora/) + ersanbil/kvkk-pii-ner (v2.0, dbmdz/bert-base-turkish-cased, 110M parameters, 13 BIO classes)
Training Method Phase-2 real-PDF line extraction (1,700 crops from rekabet_pdf, mevzuat_pdf, rg_pdf at 240 DPI) + 1,050 archival hybrid lines (elle_kontrol_500.jsonl) with TurkishCharacterConfusionFocalLoss (γ = 2.5) and RLVR verifiable-reward alignment
Supported Capabilities Turkish document OCR, deterministic TCKN / VKN / IBAN checksum and VAT equation repair (TurkceVerify), 25+ class legal/commercial/KVKK entity extraction (ictihat_core × kvkk-pii-ner v2.0), 2D #000000 visual redaction (VisualRedactor)
License Apache-2.0 (LICENSE & NOTICE)

BibTeX (Model Citation / Model Atıf Künyesi)

If you use TurkceOCR, kvkk-pii-ner v2.0, or TurkceOCR-Bench in your research or evaluation benchmarks, please cite:

@misc{ersanbil2026turkceocr,
  title        = {TurkceOCR v2.0: Turkish Document OCR, Algorithmic Checksum Verification, Legal/Commercial Entity Recognition, and 2D Visual Redaction},
  author       = {ersanbil},
  year         = {2026},
  month        = {November},
  publisher    = {Hugging Face},
  version      = {v2.0},
  howpublished = {https://huggingface.co/ersanbil/TurkceOCR},
  note         = {Apache-2.0}
}

@misc{ersanbil2026kvkkpiinerv2,
  title        = {kvkk-pii-ner v2.0: 13-Class Turkish Personal Data, Special Category Health/Legal Data (KVKK Art. 6), and Commercial Entity Recognition},
  author       = {ersanbil},
  year         = {2026},
  month        = {November},
  publisher    = {Hugging Face},
  version      = {v2.0},
  howpublished = {https://huggingface.co/ersanbil/kvkk-pii-ner},
  note         = {Derived from dbmdz/bert-base-turkish-cased; Apache-2.0}
}

Literature & Benchmark References (Literatür ve Benchmark Kaynakçası)

The models, entity recognizers, and evaluations reported in this model card build upon the following open-source datasets, models, and foundational papers:

  1. Türk İçtihat Korpusu (11,045,085 Turkish Court Decisions):
  2. SVTRv2 (Scene Text Recognition Backbone):
    • Du, Y., Chen, Z., Jia, C., Yin, X., Zheng, T., Li, C., Du, Y., & Jiang, Y.-G. (2024). SVTRv2: CTC Beats Encoder-Decoder Models in Scene Text Recognition. arXiv:2411.15858. Code: Topdu/OpenOCR.
  3. Qwen2.5-VL (Vision-Language Backbone):
  4. BERTurk (Turkish Pretrained Language Model):
  5. OmniDocBench (Document Parsing Benchmark):
    • Ouyang, L., Qu, Y., Zhou, H., Zhu, J., Zhang, R., Lin, Q., Wang, B., Zhao, Z., et al. (2024). OmniDocBench: Benchmarking Diverse PDF Document Parsing with Comprehensive Annotations. arXiv:2412.07626.
  6. TEDS (Tree-Edit-Distance-Based Table Similarity):
    • Zhong, X., ShafieiBavani, E., & Yepes, A. J. (2020). Image-based table recognition: data, model, and evaluation. arXiv:1911.10683. Published in ECCV 2020, pp. 564–580.
  7. DocVQA & ANLS:
    • Mathew, M., Karatzas, D., & Jawahar, C. V. (2021). DocVQA: A Dataset for VQA on Document Images. arXiv:2007.00398. Published in WACV 2021, pp. 2200–2209.
  8. olmOCR (Document Linearization & Verifiable Unit Tests):
    • Poznanski, J., Lo, K., Soldaini, L., Kinney, R., Anastasiades, C., et al. (2025). olmOCR: Unlocking Trillions of Tokens in PDFs with Vision Language Models. arXiv:2502.18443.
  9. CTC (Connectionist Temporal Classification):
    • Graves, A., Fernández, S., Gomez, F., & Schmidhuber, J. (2006). Connectionist temporal classification: labelling unsegmented sequence data with recurrent neural networks. Published in ICML 2006, pp. 369–376.
  10. Focal Loss:
    • Lin, T.-Y., Goyal, P., Girshick, R., He, K., & Dollár, P. (2017). Focal Loss for Dense Object Detection. arXiv:1708.02002. Published in ICCV 2017, pp. 2980–2988.
  11. LoRA (Low-Rank Adaptation):
    • Hu, E. J., Shen, Y., Wallis, P., Allen-Zhu, Z., Li, Y., Wang, S., Wang, L., & Chen, W. (2022). LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685. Published in ICLR 2022.
  12. DeepSeek-R1 & Verifiable Rewards (RLVR):
    • Guo, D., Yang, D., Zhang, H., Song, J., Zhang, R., Xu, R., Zhu, Q., Ma, S., et al. (2025). DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning. arXiv:2501.12948.
@misc{turk_ictihat_korpusu,
  title  = {Türk İçtihat Korpusu: 11.045.085 Türk Mahkeme Kararı},
  author = {Bağırsakçı, Hamza},
  year   = {2026},
  url    = {https://huggingface.co/datasets/hamzabagirsakci/turkish-court-decisions},
  note   = {CC0-1.0}
}

@article{du2024svtrv2,
  title   = {SVTRv2: CTC Beats Encoder-Decoder Models in Scene Text Recognition},
  author  = {Du, Yongkun and Chen, Zhineng and Jia, Caiyan and Yin, Xiaoting and Zheng, Tianlun and Li, Chenxia and Du, Yuning and Jiang, Yu-Gang},
  journal = {arXiv preprint arXiv:2411.15858},
  year    = {2024}
}

@article{bai2025qwen25vl,
  title   = {Qwen2.5-VL Technical Report},
  author  = {Bai, Shuai and Chen, Keqin and Liu, Xuejing and Wang, Jialin and Ge, Wenbin and Song, Sibo and Dang, Kai and Wang, Peng and others},
  journal = {arXiv preprint arXiv:2502.13923},
  year    = {2025}
}

@misc{schweter2020berturk,
  author       = {Stefan Schweter},
  title        = {BERTurk - BERT models for Turkish},
  year         = {2020},
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.3770924},
  url          = {https://doi.org/10.5281/zenodo.3770924}
}

@article{ouyang2024omnidocbench,
  title   = {OmniDocBench: Benchmarking Diverse PDF Document Parsing with Comprehensive Annotations},
  author  = {Ouyang, Linke and Qu, Yuan and Zhou, Hongbin and Zhu, Jiawei and Zhang, Rui and Lin, Qunshu and Wang, Bin and Zhao, Zhiyuan and others},
  journal = {arXiv preprint arXiv:2412.07626},
  year    = {2024}
}

@inproceedings{zhong2020teds,
  title     = {Image-based table recognition: data, model, and evaluation},
  author    = {Zhong, Xu and ShafieiBavani, Elaheh and Yepes, Antonio Jimeno},
  booktitle = {European Conference on Computer Vision (ECCV)},
  pages     = {564--580},
  year      = {2020}
}

@inproceedings{mathew2021docvqa,
  title     = {DocVQA: A Dataset for VQA on Document Images},
  author    = {Mathew, Minesh and Karatzas, Dimosthenis and Jawahar, C. V.},
  booktitle = {IEEE/CVF Winter Conference on Applications of Computer Vision (WACV)},
  pages     = {2200--2209},
  year      = {2021}
}

@article{poznanski2025olmocr,
  title   = {olmOCR: Unlocking Trillions of Tokens in PDFs with Vision Language Models},
  author  = {Poznanski, Jake and Lo, Kyle and Soldaini, Luca and Kinney, Rodney and Anastasiades, Chloe and others},
  journal = {arXiv preprint arXiv:2502.18443},
  year    = {2025}
}

@inproceedings{graves2006ctc,
  title     = {Connectionist temporal classification: labelling unsegmented sequence data with recurrent neural networks},
  author    = {Graves, Alex and Fernandez, Santiago and Gomez, Faustino and Schmidhuber, Jurgen},
  booktitle = {International Conference on Machine Learning (ICML)},
  pages     = {369--376},
  year      = {2006}
}

@inproceedings{lin2017focal,
  title     = {Focal Loss for Dense Object Detection},
  author    = {Lin, Tsung-Yi and Goyal, Priya and Girshick, Ross and He, Kaiming and Dollar, Piotr},
  booktitle = {IEEE International Conference on Computer Vision (ICCV)},
  pages     = {2980--2988},
  year      = {2017}
}

@inproceedings{hu2022lora,
  title     = {LoRA: Low-Rank Adaptation of Large Language Models},
  author    = {Hu, Edward J. and Shen, Yelong and Wallis, Phillip and Allen-Zhu, Zeyuan and Li, Yuanzhi and Wang, Shean and Wang, Lu and Chen, Weizhu},
  booktitle = {International Conference on Learning Representations (ICLR)},
  year      = {2022}
}

@article{guo2025deepseekr1,
  title   = {DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning},
  author  = {Guo, Daya and Yang, Dejian and Zhang, Haowei and Song, Junxiao and Zhang, Ruoyu and Xu, Runxin and Zhu, Qihao and Ma, Shirong and others},
  journal = {arXiv preprint arXiv:2501.12948},
  year    = {2025}
}
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for ersanbil/TurkceOCR

Finetuned
(900)
this model

Dataset used to train ersanbil/TurkceOCR

Space using ersanbil/TurkceOCR 1

Papers for ersanbil/TurkceOCR

Evaluation results

  • Mean Character Error Rate (%) on TurkExternalBlindBench-v1 (35 Unseen Real Archival Pages)
    self-reported
    1.760
  • Mean Word Error Rate (%) on TurkExternalBlindBench-v1 (35 Unseen Real Archival Pages)
    self-reported
    7.570
  • Position-Aligned Turkish Diacritic F1 (%) on TurkExternalBlindBench-v1 (35 Unseen Real Archival Pages)
    self-reported
    98.670
  • KPI-14 6-Token Repetition Loop Rate (%) on TurkExternalBlindBench-v1 (35 Unseen Real Archival Pages)
    self-reported
    0.000
  • Full-System CER with TurkceVerify (%) on TurkceOCR-Bench-6Cat (ID + OOD)
    self-reported
    0.000
  • I/İ/ı/i Dot Disambiguation F1 (%) on TurkceOCR-Bench-6Cat (ID + OOD)
    self-reported
    100.000
  • Checksum-Verified KIE Rate (CVKR, %) on TurkceOCR-Bench-6Cat (ID + OOD)
    self-reported
    100.000
  • Zero-Leakage KVKK PII Recall (%) on TurkceOCR-Bench-6Cat (ID + OOD)
    self-reported
    100.000