Wiki › Project
OMR exam system
Article
ReadAll pages
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:
- It converts each scan to black and white with adaptive thresholding.
- It finds the sheet's outline and straightens it.
- It reads the QR code printed on the sheet to identify it.
- 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.