{"id":30898096,"url":"https://github.com/mustafakbaser/validator-app","last_synced_at":"2026-04-15T16:31:36.758Z","repository":{"id":310243060,"uuid":"1038563611","full_name":"mustafakbaser/Validator-App","owner":"mustafakbaser","description":"OCR - Kimlik kartı ve başvuru formları arasındaki bilgi tutarlılığını doğrulayan gelişmiş bir belge doğrulama sistemi.","archived":false,"fork":false,"pushed_at":"2025-08-16T18:33:23.000Z","size":4119,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-16T19:16:38.956Z","etag":null,"topics":["easyocr","ocr","opencv","python","rapidfuzz"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mustafakbaser.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-15T12:41:47.000Z","updated_at":"2025-08-16T18:33:26.000Z","dependencies_parsed_at":"2025-08-19T00:16:35.306Z","dependency_job_id":null,"html_url":"https://github.com/mustafakbaser/Validator-App","commit_stats":null,"previous_names":["mustafakbaser/validator-app"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/mustafakbaser/Validator-App","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustafakbaser%2FValidator-App","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustafakbaser%2FValidator-App/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustafakbaser%2FValidator-App/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustafakbaser%2FValidator-App/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mustafakbaser","download_url":"https://codeload.github.com/mustafakbaser/Validator-App/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustafakbaser%2FValidator-App/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274231769,"owners_count":25245855,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["easyocr","ocr","opencv","python","rapidfuzz"],"created_at":"2025-09-09T01:05:28.049Z","updated_at":"2025-10-06T09:56:15.001Z","avatar_url":"https://github.com/mustafakbaser.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Validator App - T.C. Kimlik Kartı ve Başvuru Formu Doğrulama Sistemi\n\nT.C. Kimlik Kartı ve başvuru formları arasındaki bilgi tutarlılığını otomatik olarak doğrulayan gelişmiş bir belge doğrulama sistemi. OCR teknolojisi, görüntü işleme algoritmaları ve akıllı string eşleştirme yöntemleri kullanarak yüksek doğruluk oranında belge karşılaştırması gerçekleştirir.\n\n## Detaylı Dokümantasyon\n- [Teknik Tasarım ve Mimari](https://github.com/mustafakbaser/Validator-App/blob/main/technical_design_and_architecture.md)\n- [Teknoloji ve Kütüphane Seçimi](https://github.com/mustafakbaser/Validator-App/blob/main/tech_stack_and_frameworks.md)\n- [Potansiyel İyileştirmeler ve Riskler](https://github.com/mustafakbaser/Validator-App/blob/main/potential_optimizations_and_risks.md)\n\n\n## Özellikler\n\n- **Çoklu Format Desteği**: JPG, PNG, BMP, TIFF formatlarında belge işleme\n- **Gelişmiş OCR Motoru**: EasyOCR tabanlı Türkçe ve İngilizce metin tanıma\n- **Akıllı Görüntü Ön İşleme**: Adaptif eşikleme, gürültü azaltma, kontrast iyileştirme\n- **Bulanık String Eşleştirme**: RapidFuzz ile Türkçe karakter desteği\n- **TCKN Algoritma Doğrulaması**: Matematiksel algoritma ile TC Kimlik Numarası kontrolü\n- **Detaylı Raporlama**: Güven skorları ve eşleşme detayları ile şeffaf sonuçlar\n- **Örnek Başvuru Form Oluşturma**: ReportLab ile dinamik başvuru formu (PDF) üretimi. (Bu adım, geliştirmeden bağımsız ek özelliktir)\n\n## Sistem Mimarisi\n\n```mermaid\ngraph TB\n    A[Belge Yükleme] --\u003e B[Görüntü Ön İşleme]\n    B --\u003e C[OCR İşlemi]\n    C --\u003e D[Metin Çıkarma]\n    D --\u003e E[TCKN Doğrulama]\n    D --\u003e F[İsim Normalizasyonu]\n    E --\u003e G[Karşılaştırma Motoru]\n    F --\u003e G\n    G --\u003e H[Sonuç Raporu]\n    \n    I[Form Oluşturucu] --\u003e J[PDF/JPG Üretimi]\n    J --\u003e K[Örnek Belgeler]\n    \n    subgraph \"Görüntü İşleme\"\n        B1[Boyut Normalizasyonu]\n        B2[Gürültü Azaltma]\n        B3[Kontrast İyileştirme]\n        B4[Eşikleme]\n    end\n    \n    subgraph \"OCR Motoru\"\n        C1[EasyOCR Reader]\n        C2[Çoklu Dil Desteği]\n        C3[Güven Skoru Hesaplama]\n    end\n    \n    subgraph \"Doğrulama Algoritmaları\"\n        E1[TCKN Algoritma Kontrolü]\n        F1[Türkçe Karakter Normalizasyonu]\n        G1[Fuzzy String Matching]\n    end\n```\n\n## Kurulum\n\n### Gereksinimler\n\n- Python 3.8+\n- OpenCV 4.8+\n- EasyOCR 1.7+\n- CUDA desteği (opsiyonel, GPU hızlandırma için)\n\n### Kurulum\n\n1. **Repository Klonlama**\n   ```bash\n   git clone https://github.com/mustafakbaser/Validator-App.git\n   cd validator-app\n   ```\n\n2. **Bağımlılıkları Yükleme**\n   ```bash\n   pip install -r requirements.txt\n   ```\n\nEk olarak:\n\n3. **Sanal Ortam Oluşturma** (İsteğe Bağlı)\n   ```bash\n   python -m venv venv\n   source venv/bin/activate  # Linux/Mac\n   # veya\n   venv\\Scripts\\activate     # Windows\n   ```\n\n4. **OCR Modellerini İndirme**  (Eğer gerekirse)\n   ```bash\n   python -c \"import easyocr; easyocr.Reader(['tr', 'en'])\"\n   ```\n\n### Docker ile Kurulum\n\n```bash\n# Docker image build\ndocker build -t validator-app:latest .\n\n# Container çalıştırma\ndocker run -v $(pwd)/input:/app/input -v $(pwd)/output:/app/output validator-app:latest\n\n# Docker Compose ile\ndocker-compose up -d\n```\n\n## Kullanım\n\n### Belge Doğrulama\n\nKimlik kartı ve başvuru formu arasında bilgi tutarlılığını kontrol etmek için:\n\n```bash\npython verify_documents.py application_forms/kimlik_kart.png application_forms/basvuru_formu.jpg\n```\n\nDetaylı Doğrulama (--verbose kullanarak):\n\n```bash\npython verify_documents.py application_forms/kimlik_kart.png application_forms/basvuru_formu.jpg --verbose\n```\n\n**Çıktı Örnekleri:**\n- `Olumlu - Tüm bilgiler eşleşiyor`\n- `Belgedeki TC Kimlik Numarası Hatalı`\n- `Belgedeki Ad Soyad Hatalı`\n\n### Örnek Form Oluşturma\n\nBu proje özelinde, test amaçlı başvuru formları oluşturmak için bir script oluşturdum, şu şekilde kullanılabilir:\n\n```bash\n# Tek form oluşturma\npython generate_application_form.py --format both --count 1\n\n# Çoklu form oluşturma\npython generate_application_form.py --format pdf --count 5 --output test_form\n\n# Belirli TCKN ile form oluşturma\npython generate_application_form.py --tckn 12345678901 --format jpg\n```\n\n### Parametreler\n\n| Parametre | Açıklama | Varsayılan |\n|-----------|----------|------------|\n| `--format` | Çıktı formatı (pdf/jpg/both) | both |\n| `--count` | Oluşturulacak form sayısı | 1 |\n| `--output` | Çıktı dosya adı | basvuru_formu |\n| `--tckn` | Belirli TCKN kullanımı | Rastgele |\n| `--verbose` | Detaylı çıktı | False |\n\n## Teknoloji Detayları\n\n### OCR ve Görüntü İşleme\n\nSistem, EasyOCR tabanlı gelişmiş OCR motoru kullanılarak sistem içindeki belgelerden metin çıkarımı yapılmaktadır. Resim ön işleme adımında:\n\n- **Boyut Normalizasyonu**: Maksimum 4000px boyut sınırı\n- **Gürültü Azaltma**: Bilateral filter ile kenar koruyucu filtreleme\n- **Kontrast İyileştirme**: CLAHE (Contrast Limited Adaptive Histogram Equalization)\n- **Adaptif Eşikleme**: Gaussian adaptif eşikleme algoritması\n- **Morfolojik İşlemler**: Açma ve kapatma operasyonları\n\n### String Eşleştirme Algoritması\n\nBulanık string eşleştirme ve değerlendirme aktivitelerini Türkçe karakter desteği ile birlikte gerçekleştirmek için kullanılan RapidFuzz kütüphanesi kullanıldı:\n\n- **Jaro-Winkler Mesafesi**: Kısa isimler için optimize edilmiş\n- **Levenshtein Mesafesi**: Genel amaçlı string benzerliği\n- **Token Sort Ratio**: Kelime sırasından bağımsız eşleştirme\n- **Partial Ratio**: Alt string eşleştirme\n\n### TCKN Doğrulama Algoritması\n\nT.C. Kimlik Numarası için matematiksel algoritma kontrolü:\n\n1. **Format Kontrolü**: 11 haneli sayısal değer\n2. **İlk Hane Kontrolü**: 0 ile başlayamaz\n3. **10. Hane Kontrolü**: (1+3+5+7+9)*7 + (2+4+6+8)*9 mod 10\n4. **11. Hane Kontrolü**: İlk 10 hanenin toplamı mod 10\n\n## Performans Metrikleri\n\n| Metrik | Değer | Açıklama |\n|--------|-------|----------|\n| OCR Doğruluk Oranı | %94+ | Türkçe metin tanıma |\n| İşlem Süresi | \u003c3 saniye | Standart belge boyutu |\n| Bellek Kullanımı | \u003c512MB | Tek belge işleme |\n| Desteklenen Format | 6 format | JPG, PNG, BMP, TIFF, PDF |\n\n## Güvenlik ve Gizlilik\n\n- **Veri İşleme**: Yerel işleme, bulut aktarımı yok\n- **Geçici Depolama**: İşlem sonrası otomatik temizlik\n- **PII Maskeleme**: Log dosyalarında hassas veri gizleme\n- **Dosya Doğrulama**: MIME type ve boyut kontrolü\n\n# Teorik Yaklaşımlar\n\nBu bölüm, teknik tasarım ve mimari dokümanın özeti niteliğindedir. İlgili teorik konulara ait yaklaşımlarıma technical_design_and_architecture.md, tech_stack_and_frameworks.md ve potential_optimizations_and_risks.md dosyalarını inceleyin.\n\n## Teknik Tasarım ve Mimari\n\nBu bölüm, teknik tasarım ve mimari dokümanın özeti niteliğindedir.\n\n### OCR Stratejisi: Hibrit Yaklaşım\n\nEn optimal mimari tasarımım: Sistem, varsayılan olarak Tesseract OCR + OpenCV ile alan-bazlı OCR kullanır. Düşük güven skorunda managed OCR (Google Vision / AWS Textract) fallback mekanizması devreye girer. Bu yaklaşım:\n\n- **Alan-bazlı işleme** ile gürültüyü azaltır\n- **ROI (Region of Interest)** tespiti ile doğruluğu artırır\n- **Çoklu OCR çalıştırma** ile ensemble yöntemi uygular\n- **Confidence tabanlı karar** mekanizması kullanır\n\n### İmza Karşılaştırma Yaklaşımı\n\n#### Faz 1: Bilgisayarlı Görüntü İşleme\n- **Ön işleme**: Gri ton, Otsu threshold, morfolojik işlemler\n- **Öznitelik çıkarımı**: Kontur uzunluğu, alan doluluk oranı, HOG\n- **Lokal öznitelikler**: ORB/SIFT keypoint eşleme\n- **Skorlama**: SSIM + global metriklerin ağırlıklı ortalaması\n\n#### Faz 2: Derin Öğrenme (Gelecek)\n- **Siamese Network**: Embedding tabanlı benzerlik ölçümü\n- **Eşik kalibrasyonu**: ROC/DET eğrisi ile EER minimizasyonu\n- **Transfer learning**: Kamu veri setleri ile model eğitimi\n\n### API Geliştirme Stratejisi\n\n**FastAPI** framework'ü tercih edilmiştir:\n\n- **Yüksek performans**: ASGI tabanlı async I/O\n- **Otomatik dokümantasyon**: OpenAPI/Swagger entegrasyonu\n- **Tip güvenliği**: Pydantic ile veri doğrulama\n- **Asenkron iş modeli**: Job-based processing\n- **Güvenlik**: OAuth2/OIDC, rate limiting, WAF\n\n## Potansiyel İyileştirmeler ve Riskler\n\n### Mevcut Zayıf Yönler\n\n1. **OCR Doğruluk Sorunları**: Düşük çözünürlüklü belgelerde hata oranı artabilir\n2. **İmza Karşılaştırma**: Doğal imza varyasyonları yanlış sonuçlara yol açabilir\n3. **Performans**: Yüksek trafik altında darboğaz oluşabilir\n4. **Veri Güvenliği**: KVKK/GDPR uyumluluğu sürekli izleme gerektirir\n\n### Risk Azaltma Stratejileri\n\n- **Çoklu OCR Motoru**: Ensemble yöntemleri ile doğruluk artırımı\n- **Hibrit İmza Karşılaştırma**: Klasik + derin öğrenme yaklaşımı\n- **Performans Optimizasyonu**: GPU hızlandırma, mikroservis mimarisi\n- **Güvenlik Katmanları**: AES-256 şifreleme, TLS, RBAC\n\n### Gelecek İyileştirmeler\n\n- **LLM Destekli Doğrulama**: Semantik tutarlılık kontrolü\n- **Anomali Tespiti**: Makine öğrenmesi tabanlı şüpheli aktivite tespiti\n- **Self-Learning**: Sürekli model iyileştirme\n- **Explainable AI**: Şeffaf karar açıklama mekanizmaları","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmustafakbaser%2Fvalidator-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmustafakbaser%2Fvalidator-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmustafakbaser%2Fvalidator-app/lists"}