Optik formdan karneye: deneme sınavı değerlendirme sistemi nasıl kurulur?

Deneme sınavı değerlendirmede optik dosyadan öğrenci eşleştirmeye, net ve sıralama hesabına, PDF karneye ve rehber öğretmen paneline uzanan akış; hatalı optik satırlar nasıl ele alınır.
Konu
Mimari
Yazar
SayLabs Ekibi
Tarih
Okuma süresi
5 dk

Deneme sınavı uygulayan bir dershanede sınavın kendisi birkaç saat sürer; sonrasındaki iş günlerce. Cevap anahtarı bir yerden, optik okuyucunun çıktısı başka bir yerden, öğrenci listesi üçüncü bir yerden gelir ve bunları birleştirmek çoğu kurumda hâlâ elle yapılır. Bu yazı, PentaAI deneme değerlendirme platformunu geliştirirken bu akışı nasıl ele aldığımızı ve benzer bir sistem kuracaklar için dikkat edilmesi gereken noktaları anlatıyor.

Asıl iş: üç ayrı kaynağı birbirine bağlamak

LGS, TYT veya AYT denemesi uygulayan bir kurumun elinde sınav sonrası üç veri vardır: yayınevinin cevap anahtarı, optik okuyucunun ürettiği dosya ve kurumun öğrenci listesi. Hiçbiri diğerini tanımaz. Optik dosyası öğrenci numarasını bilir ama sınıfı bilmez; cevap anahtarı doğru şıkkı bilir ama sorunun hangi konuya ait olduğunu bilmez.

PentaAI'da çözmek istediğimiz problem tam olarak buydu. Hesaplama kısmı aslında kolaydır; zaman kaybettiren, verinin hazırlanması ve eşleştirilmesidir. Bu yüzden akışı tek bir hat olarak tasarladık: deneme tanımı, optik yükleme, eşleştirme, hesap, karne ve paneller. Her adımın çıktısı bir sonrakinin girdisi.

Deneme tanımı: cevap anahtarı tek başına yetmez

Sadece doğru şıkları tutan bir sistem net hesaplayabilir ama "öğrenci hangi konuda eksik" sorusuna cevap veremez. O soruya cevap verebilmek için her sorunun dersine, konusuna ve kazanımına bağlı olması gerekir.

PentaAI'da kurum, yayınevinin kazanım Excel'ini yükler ve sistem her soruyu ders, konu ve kazanımla ilişkilendirir. Bu adımı en başa koymamızın sebebi, sonraki her raporun buna dayanması: soru bazlı analiz, eksik konu listesi ve rehber öğretmenin gördüğü eğilimler bu bağlantı olmadan üretilemez.

Yayınevi dosyaları standart değildir; kolon adları, sıralama ve kazanım kodlama biçimi yayınevine göre değişebilir. Bu dosyaları içe aktaran her sistemin, yüklemeden önce kullanıcıya neyin nereye eşlendiğini göstermesi ve eksik satırları açıkça bildirmesi gerekir.

Optik dosyası ve öğrenci eşleştirme

Optik okuyucular genellikle her öğrenci için bir satırdan oluşan metin dosyaları üretir; alanların konumu kullanılan form şablonuna göre değişir. PentaAI'da optik dosyası yüklendiğinde öğrenciler numara ve adla eşleştirilir. İki alanı birlikte kullanmak, tek başına numaraya güvenmekten daha sağlamdır, çünkü öğrencinin numarayı yanlış kodlaması bu işin en sık hatasıdır.

Eşleştirme sırasında karşılaşılan sorunlu satırlar genelde birkaç tipe ayrılır:

  • Numara alanı boş veya okunamamış satırlar.
  • Numarası kurum listesinde bulunmayan satırlar; çoğu zaman tek hanesi yanlış kodlanmış bir numara.
  • Aynı numaranın iki farklı satırda görünmesi; iki öğrenciden biri arkadaşının numarasını kodlamış olabilir.
  • Numara ile adın birbirini tutmadığı satırlar.
  • Kitapçık türü işaretlenmemiş satırlar; yanlış cevap anahtarıyla değerlendirilirse sonuç tamamen anlamsız olur.

Bu satırlar için genel kuralımız şu: sistem tahminde bulunabilir ama sessizce karar vermemelidir. Eşleşmeyen satırı atlamak, o öğrencinin sonuçsuz kalması demektir; yanlış öğrenciye bağlamak ise daha kötüsüdür. Doğru davranış, sorunlu satırları ayrı bir listede göstermek ve son kararı kurumdaki kişiye bırakmaktır.

Net, puan ve sıralama hesabını tek yerde tutmak

Eşleştirme bittiğinde netler, puanlar ve sıralamalar hesaplanır. Net hesabının mantığı basittir ama sınav türüne göre değişir: genel olarak LGS'de üç yanlış bir doğruyu, TYT ve AYT'de dört yanlış bir doğruyu götürür. Bu oranı koda gömmek yerine sınav türünün tanımına koymak, kural değiştiğinde tek bir yeri güncellemek anlamına gelir.

// Örnek: yanlış/doğru oranı sınav türü tanımından gelir, koda gömülmez
const SINAV_TURLERI = {
  LGS: { yanlisGoturur: 3 },
  TYT: { yanlisGoturur: 4 },
  AYT: { yanlisGoturur: 4 }
}

function netHesapla({ dogru, yanlis }, tur) {
  const { yanlisGoturur } = SINAV_TURLERI[tur]
  return dogru - yanlis / yanlisGoturur
}

// Boş bırakılan soru nete etki etmez
netHesapla({ dogru: 30, yanlis: 8 }, 'TYT') // 28

Sıralama tarafında dikkat edilmesi gereken nokta, sıralamanın hangi küme içinde yapıldığıdır: sınıf içi, şube içi ve kurum geneli farklı sonuçlar verir. Hangisinin gösterildiği karnede açıkça yazmalıdır; aksi halde veli iki farklı belgede iki farklı sıra görüp haklı olarak sorar.

Bir diğer kural: sonuçlar hesaplandıktan sonra bir satır düzeltilirse, o denemenin sıralaması yeniden hesaplanmalıdır. Tek bir öğrencinin neti değiştiğinde diğer öğrencilerin sırası da değişebilir.

Karne: arka planda üretilen PDF

PentaAI her öğrenci için kurumun logosunu taşıyan, soru bazlı analiz ve eksik konu listesi içeren bir PDF karne üretir. Yüzlerce öğrencinin karnesini istek sırasında üretmeye çalışmak, kullanıcıyı uzun süre bekletir ve zaman aşımına açık bir yapı kurar.

Bu yüzden karneler ve diğer toplu işlemler, Redis üzerinde çalışan bir iş kuyruğunda arka planda üretiliyor; dosyalar S3 uyumlu depolamada tutuluyor. Kullanıcı işlemi başlatır, sistem işi kuyruğa alır ve hazır olduğunda karneler erişilebilir olur. Bu yapının yan faydası, tek bir karnenin üretiminde çıkan hatanın diğerlerini durdurmamasıdır.

Rehber öğretmen ve veli: tek deneme değil, eğilim

Tek bir denemenin sonucu gürültülüdür. Öğrenci o gün yorgun olabilir, bir konu o denemede hiç sorulmamış olabilir. Rehber öğretmen için anlamlı olan, birden fazla denemede tekrar eden örüntüdür.

PentaAI'da birden fazla denemede tekrar eden eksikler, Kazanım Takip Merkezi'ne kart olarak düşüyor. Öğretmenin her denemenin tablosunu tek tek taraması yerine, dikkat gerektiren durumlar önüne geliyor. Bu, yalnızca sorulara kazanım bağlantısı en başta kurulduğu için mümkün.

PentaRank ise öğrencinin deneme başarısını ve çalışma istikrarını tek bir puanda topluyor ve bunu bir kademe sistemine dönüştürüyor. Panel, hangi öğrencinin yükseldiğini ve hangisinin gerileme eğiliminde olduğunu ilk ekranda gösteriyor. Tasarım tercihi açık: yalnızca tek denemedeki başarıya bakan bir sıralama, düzenli çalışan ama bir denemede düşen öğrenciyi haksız yere aşağı çeker.

Kurum, rehber öğretmen, öğrenci ve veli için ayrı paneller ve rol bazlı yetkiler var; rehber öğretmenin hangi modülleri göreceğine kurum karar veriyor. Veli aynı veriye bakar ama farklı bir özetle. Kurumlar arası veri izolasyonunun nasıl kurulduğunu çok kiracılı mimari yazımızda ayrıca ele aldık.

Benzer bir sistem kurarken kontrol listesi

  1. Sorular ders, konu ve kazanıma deneme tanımı aşamasında bağlanıyor mu? Sonradan eklemek, geçmiş denemelerin analizini imkânsız kılar.
  2. Öğrenci eşleştirmesi tek alana mı dayanıyor? Numara ve adı birlikte kullanın.
  3. Eşleşmeyen, çift kayıtlı veya kitapçık türü eksik satırlar ayrı bir listede gösteriliyor mu, yoksa sessizce atlanıyor mu?
  4. Yanlış/doğru oranı sınav türü tanımında mı duruyor, kodun içinde mi?
  5. Sıralamanın kapsamı (sınıf, şube, kurum) karnede açıkça yazıyor mu?
  6. Bir satır düzeltildiğinde sıralama yeniden hesaplanıyor mu?
  7. Toplu karne üretimi istek sırasında mı yapılıyor, arka plan kuyruğunda mı?
  8. Rehber öğretmen tek tek denemelere mi bakıyor, yoksa tekrar eden eksikler ona otomatik olarak mı geliyor?

Bu maddelerin çoğu teknik değil, akış kararıdır. Doğru kurulduğunda hesaplama kısmı sistemin en sıradan parçası haline gelir; kurumun zamanı da veri birleştirmek yerine öğrenciyle ilgilenmeye kalır.

  • #deneme sınavı
  • #optik okuma
  • #eğitim yazılımı
  • #mimari

Bu konuda yardıma mı ihtiyacınız var?

Yazıda anlattığımız işleri müşterilerimiz için yapıyoruz. 45 dakikalık ücretsiz görüşmede sizin durumunuza bakalım.

Ücretsiz görüşme planla
Süre
45 dakika
Ücret
Yok
Taahhüt
Yok