Optical Mark Recognition (OMR) isn't new—we've all filled out those bubble sheets for tests. But traditional OMR systems are slow, require massive hardware scanners, and cost a fortune.

I wanted to see if I could build a Real-Time OMR Scanner using just a standard webcam, Python, and OpenCV. Here's how I did it.

Python (The backbone)

OpenCV (For image processing and contour detection)

Flask (To serve the live camera feed and UI)