Bu proje, Python ve OpenCV kullanarak optik formları (test/sınav kâğıtları) okuyan, cevapları algılayan, otomatik puanlayan ve sonuçları Excel (.xlsx) dosyasına kaydeden bir görüntü işleme uygulamasıdır.
Önemli Not: Sistem, ışık değişimleri ve gölgelerden etkilenmemek için Bağıl Koyuluk Algoritması (Relative Darkness Intensity) kullanır. Sabit eşik yerine satır içi karşılaştırma yapar.
-
📷 Otomatik Algılama: Kâğıdın köşe noktalarını bulur ve perspektif düzeltmesi (Bird’s Eye View) uygular.
-
🧠 Akıllı Cevap Okuma: Her soruda en koyu şıkkı tespit eder; gölgeli/heterojen ışıkta dahi yüksek doğruluk sağlar.
-
✍️ Görsel İşaretleme:
- ✅ Doğru cevaplar Yeşil
- ❌ Yanlış cevaplar Kırmızı
- 🔵 Yanlış yapılan sorunun doğru şıkkı Mavi
-
📊 Raporlama: Öğrenci numarası, doğru/yanlış sayıları ve puan; hem görüntü üzerine yazılır hem de Excel dosyasına eklenir.
-
🛡️ Hata Kontrolü: Boş bırakılan ve çoklu işaretlenen sorular tespit edilir.
git clone https://github.com/halilbsp/optik-form-okuyucu.git
cd optik-form-okuyucupip install -r requirements.txtAlternatif manuel kurulum:
pip install opencv-python numpy matplotlib pandas openpyxl- Okunacak optik form görselini proje klasörüne ekleyin (örn.
cevap.jpeg). optik_form_excel.ipynbdosyasını çalıştırın:
optik_form_excel.ipynb- İşlenmiş ve puanlanmış görsel:
Sonuc_<ogrenci_no>.jpg - Excel raporu:
Sinav_Sonuclari.xlsx
├── optik_form_excel.ipynb # Ana kaynak kod
├── cevap.jpeg # Okunacak örnek optik form
├── Sinav_Sonuclari.xlsx # Otomatik oluşturulan Excel raporu
├── Sonuc_2212506062.jpg # Örnek işlenmiş çıktı
├── requirements.txt # Bağımlılıklar
└── README.md # Proje dokümantasyonu
- Ön İşleme: Görüntü gri tonlamaya çevrilir ve Gaussian Blur uygulanır.
- Kenar Tespiti: Canny algoritması ile kâğıdın dış hatları bulunur.
- Perspektif Düzeltme: Dört köşe tespit edilerek kuş bakışı görünüme dönüştürülür.
- Daire Tespiti: Hough Circle Transform ile şık daireleri algılanır.
- Sıralama & Gruplama: Daireler satır (soru) ve sütun (şık) bazında sıralanır.
- Cevap Analizi: Her şıkkın piksel yoğunluğu ölçülür; satırdaki en koyu alan işaretli kabul edilir.
- Puanlama: Sonuçlar cevap anahtarıyla karşılaştırılır ve Excel’e yazılır.
-
Bu projeyi Fork’layın.
-
Yeni bir dal oluşturun:
git checkout -b feature/YeniOzellik
-
Değişikliklerinizi commit edin:
git commit -m "Yeni özellik eklendi" -
Dalınızı push edin:
git push origin feature/YeniOzellik
-
Pull Request oluşturun.
Bu proje, Dijital Görüntü Çözümleme dersi kapsamında geliştirilmiştir. Değerli katkıları ve rehberliği için Furkan Atlan hocama teşekkür ederim.
Halil BAŞPINAR
