Wiki › Project

OMR exam system

Article
From Chaipat's knowledge graph

OMR exam system is a full exam-management platform built around optical mark recognition (OMR): reading filled-in bubbles on scanned answer sheets. It follows an exam from setup through printing, scanning and marking to the final reports.

What it covers

  • Classrooms and subjects, with their students.
  • Exams:
    • question papers and answer keys, both exportable as PDF;
    • seating plans, with seat assignments and a printable PDF.
  • Scanning: scanned sheets are uploaded in batches, and each sheet becomes a processing job.
  • Review: a reviewer checks the fields the reader wasn't sure about, side by side with the image of the sheet.
  • Analytics: results for each exam and each student, exported as CSV or as a report.

Reading the sheets

The recognition engine uses OpenCV:

  1. It converts each scan to black and white with adaptive thresholding.
  2. It finds the sheet's outline and straightens it.
  3. It reads the QR code printed on the sheet to identify it.
  4. It decides which bubbles are filled.

Uncertain fields go to the review queue instead of being guessed.

How it's built

  • Back end: a Flask API in Python, served by Gunicorn, with database migrations and a PDF generator.
  • Front end: React in TypeScript, with pages for each step and tests.
  • Running it: Docker Compose and a Makefile.

Its answer sheets come from the same idea as his Thai OMR answer sheet generator.

See also