T.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.
- Çoklu Format Desteği: JPG, PNG, BMP, TIFF formatlarında belge işleme
- Gelişmiş OCR Motoru: EasyOCR tabanlı Türkçe ve İngilizce metin tanıma
- Akıllı Görüntü Ön İşleme: Adaptif eşikleme, gürültü azaltma, kontrast iyileştirme
- Bulanık String Eşleştirme: RapidFuzz ile Türkçe karakter desteği
- TCKN Algoritma Doğrulaması: Matematiksel algoritma ile TC Kimlik Numarası kontrolü
- Detaylı Raporlama: Güven skorları ve eşleşme detayları ile şeffaf sonuçlar
- Örnek Başvuru Form Oluşturma: ReportLab ile dinamik başvuru formu (PDF) üretimi. (Bu adım, geliştirmeden bağımsız ek özelliktir)
graph TB
A[Belge Yükleme] --> B[Görüntü Ön İşleme]
B --> C[OCR İşlemi]
C --> D[Metin Çıkarma]
D --> E[TCKN Doğrulama]
D --> F[İsim Normalizasyonu]
E --> G[Karşılaştırma Motoru]
F --> G
G --> H[Sonuç Raporu]
I[Form Oluşturucu] --> J[PDF/JPG Üretimi]
J --> K[Örnek Belgeler]
subgraph "Görüntü İşleme"
B1[Boyut Normalizasyonu]
B2[Gürültü Azaltma]
B3[Kontrast İyileştirme]
B4[Eşikleme]
end
subgraph "OCR Motoru"
C1[EasyOCR Reader]
C2[Çoklu Dil Desteği]
C3[Güven Skoru Hesaplama]
end
subgraph "Doğrulama Algoritmaları"
E1[TCKN Algoritma Kontrolü]
F1[Türkçe Karakter Normalizasyonu]
G1[Fuzzy String Matching]
end
- Python 3.8+
- OpenCV 4.8+
- EasyOCR 1.7+
- CUDA desteği (opsiyonel, GPU hızlandırma için)
-
Repository Klonlama
git clone https://github.com/mustafakbaser/Validator-App.git cd validator-app
-
Bağımlılıkları Yükleme
pip install -r requirements.txt
Ek olarak:
-
Sanal Ortam Oluşturma (İsteğe Bağlı)
python -m venv venv source venv/bin/activate # Linux/Mac # veya venv\Scripts\activate # Windows
-
OCR Modellerini İndirme (Eğer gerekirse)
python -c "import easyocr; easyocr.Reader(['tr', 'en'])"
# Docker image build
docker build -t validator-app:latest .
# Container çalıştırma
docker run -v $(pwd)/input:/app/input -v $(pwd)/output:/app/output validator-app:latest
# Docker Compose ile
docker-compose up -d
Kimlik kartı ve başvuru formu arasında bilgi tutarlılığını kontrol etmek için:
python verify_documents.py application_forms/kimlik_kart.png application_forms/basvuru_formu.jpg
Detaylı Doğrulama (--verbose kullanarak):
python verify_documents.py application_forms/kimlik_kart.png application_forms/basvuru_formu.jpg --verbose
Çıktı Örnekleri:
Olumlu - Tüm bilgiler eşleşiyor
Belgedeki TC Kimlik Numarası Hatalı
Belgedeki Ad Soyad Hatalı
Bu proje özelinde, test amaçlı başvuru formları oluşturmak için bir script oluşturdum, şu şekilde kullanılabilir:
# Tek form oluşturma
python generate_application_form.py --format both --count 1
# Çoklu form oluşturma
python generate_application_form.py --format pdf --count 5 --output test_form
# Belirli TCKN ile form oluşturma
python generate_application_form.py --tckn 12345678901 --format jpg
Parametre | Açıklama | Varsayılan |
---|---|---|
--format |
Çıktı formatı (pdf/jpg/both) | both |
--count |
Oluşturulacak form sayısı | 1 |
--output |
Çıktı dosya adı | basvuru_formu |
--tckn |
Belirli TCKN kullanımı | Rastgele |
--verbose |
Detaylı çıktı | False |
Sistem, 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:
- Boyut Normalizasyonu: Maksimum 4000px boyut sınırı
- Gürültü Azaltma: Bilateral filter ile kenar koruyucu filtreleme
- Kontrast İyileştirme: CLAHE (Contrast Limited Adaptive Histogram Equalization)
- Adaptif Eşikleme: Gaussian adaptif eşikleme algoritması
- Morfolojik İşlemler: Açma ve kapatma operasyonları
Bulanı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ı:
- Jaro-Winkler Mesafesi: Kısa isimler için optimize edilmiş
- Levenshtein Mesafesi: Genel amaçlı string benzerliği
- Token Sort Ratio: Kelime sırasından bağımsız eşleştirme
- Partial Ratio: Alt string eşleştirme
T.C. Kimlik Numarası için matematiksel algoritma kontrolü:
- Format Kontrolü: 11 haneli sayısal değer
- İlk Hane Kontrolü: 0 ile başlayamaz
- 10. Hane Kontrolü: (1+3+5+7+9)*7 + (2+4+6+8)*9 mod 10
- 11. Hane Kontrolü: İlk 10 hanenin toplamı mod 10
Metrik | Değer | Açıklama |
---|---|---|
OCR Doğruluk Oranı | %94+ | Türkçe metin tanıma |
İşlem Süresi | <3 saniye | Standart belge boyutu |
Bellek Kullanımı | <512MB | Tek belge işleme |
Desteklenen Format | 6 format | JPG, PNG, BMP, TIFF, PDF |
- Veri İşleme: Yerel işleme, bulut aktarımı yok
- Geçici Depolama: İşlem sonrası otomatik temizlik
- PII Maskeleme: Log dosyalarında hassas veri gizleme
- Dosya Doğrulama: MIME type ve boyut kontrolü
Bu 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.
Bu bölüm, teknik tasarım ve mimari dokümanın özeti niteliğindedir.
En 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:
- Alan-bazlı işleme ile gürültüyü azaltır
- ROI (Region of Interest) tespiti ile doğruluğu artırır
- Çoklu OCR çalıştırma ile ensemble yöntemi uygular
- Confidence tabanlı karar mekanizması kullanır
- Ön işleme: Gri ton, Otsu threshold, morfolojik işlemler
- Öznitelik çıkarımı: Kontur uzunluğu, alan doluluk oranı, HOG
- Lokal öznitelikler: ORB/SIFT keypoint eşleme
- Skorlama: SSIM + global metriklerin ağırlıklı ortalaması
- Siamese Network: Embedding tabanlı benzerlik ölçümü
- Eşik kalibrasyonu: ROC/DET eğrisi ile EER minimizasyonu
- Transfer learning: Kamu veri setleri ile model eğitimi
FastAPI framework'ü tercih edilmiştir:
- Yüksek performans: ASGI tabanlı async I/O
- Otomatik dokümantasyon: OpenAPI/Swagger entegrasyonu
- Tip güvenliği: Pydantic ile veri doğrulama
- Asenkron iş modeli: Job-based processing
- Güvenlik: OAuth2/OIDC, rate limiting, WAF
- OCR Doğruluk Sorunları: Düşük çözünürlüklü belgelerde hata oranı artabilir
- İmza Karşılaştırma: Doğal imza varyasyonları yanlış sonuçlara yol açabilir
- Performans: Yüksek trafik altında darboğaz oluşabilir
- Veri Güvenliği: KVKK/GDPR uyumluluğu sürekli izleme gerektirir
- Çoklu OCR Motoru: Ensemble yöntemleri ile doğruluk artırımı
- Hibrit İmza Karşılaştırma: Klasik + derin öğrenme yaklaşımı
- Performans Optimizasyonu: GPU hızlandırma, mikroservis mimarisi
- Güvenlik Katmanları: AES-256 şifreleme, TLS, RBAC
- LLM Destekli Doğrulama: Semantik tutarlılık kontrolü
- Anomali Tespiti: Makine öğrenmesi tabanlı şüpheli aktivite tespiti
- Self-Learning: Sürekli model iyileştirme
- Explainable AI: Şeffaf karar açıklama mekanizmaları