Skip to content

halilbsp/Optik_Form_Okuyucu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 

Repository files navigation

📝 Optik Form Okuyucu ve Puanlama Sistemi

(Optical Mark Recognition – OMR)

Python NumPy Pandas OpenCV

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.


🚀 Özellikler

  • 📷 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.


🛠️ Kurulum

1️⃣ Projeyi Klonlayın

git clone https://github.com/halilbsp/optik-form-okuyucu.git
cd optik-form-okuyucu

2️⃣ Gerekli Kütüphaneleri Yükleyin

pip install -r requirements.txt

Alternatif manuel kurulum:

pip install opencv-python numpy matplotlib pandas openpyxl

💻 Kullanım

  1. Okunacak optik form görselini proje klasörüne ekleyin (örn. cevap.jpeg).
  2. optik_form_excel.ipynb dosyasını çalıştırın:
optik_form_excel.ipynb

📌 Çıktılar

  • İşlenmiş ve puanlanmış görsel: Sonuc_<ogrenci_no>.jpg
  • Excel raporu: Sinav_Sonuclari.xlsx

📂 Proje Yapısı

├── 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

⚙️ Algoritma Mantığı

  1. Ön İşleme: Görüntü gri tonlamaya çevrilir ve Gaussian Blur uygulanır.
  2. Kenar Tespiti: Canny algoritması ile kâğıdın dış hatları bulunur.
  3. Perspektif Düzeltme: Dört köşe tespit edilerek kuş bakışı görünüme dönüştürülür.
  4. Daire Tespiti: Hough Circle Transform ile şık daireleri algılanır.
  5. Sıralama & Gruplama: Daireler satır (soru) ve sütun (şık) bazında sıralanır.
  6. Cevap Analizi: Her şıkkın piksel yoğunluğu ölçülür; satırdaki en koyu alan işaretli kabul edilir.
  7. Puanlama: Sonuçlar cevap anahtarıyla karşılaştırılır ve Excel’e yazılır.

📸 Ekran Görüntüleri

Sonuc_2212506062


🤝 Katkıda Bulunma

  1. Bu projeyi Fork’layın.

  2. Yeni bir dal oluşturun:

    git checkout -b feature/YeniOzellik
  3. Değişikliklerinizi commit edin:

    git commit -m "Yeni özellik eklendi"
  4. Dalınızı push edin:

    git push origin feature/YeniOzellik
  5. Pull Request oluşturun.


🎓 Teşekkür

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.


👨‍💻 Geliştirici

Halil BAŞPINAR

LinkedIn
www.linkedin.com/in/halil-başpınar-0a7478384

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors