A Python-based Optical Mark Recognition (OMR) system designed to generate, scan, and grade custom OMR sheets. This project uses reportlab to generate print-ready OMR PDFs and OpenCV to process scanned images.
- Custom OMR Sheet Generation: Create PDF OMR sheets with customizable layouts (Roll No, 5 Subjects, 20 Questions each).
- Synthetic Data Generation: Generate dummy filled OMR images for testing and validation without a physical scanner.
- OMR Scanning (In Progress): Scan and extract data from OMR sheets using Computer Vision.
- Data Export (In Progress): Export results to CSV for analysis.
Digital_OMR_Reader/
├── data/
│ └── sheets/ # Output directory for generated PDFs and images
├── src/
│ ├── demo_omr.py # Generates the blank OMR PDF
│ ├── generate_test_image.py # Generates synthetic filled OMR images
│ └── omr_scanner.py # (Planned) Core scanning logic
├── requirements.txt # Python dependencies
└── README.md
-
Clone the repository:
git clone https://github.com/yourusername/Digital_OMR_Reader.git cd Digital_OMR_Reader -
Install dependencies:
pip install reportlab opencv-python numpy
To create the printable PDF of the OMR sheet:
python src/demo_omr.pyOutput: data/sheets/omr.pdf
To create a "fake" scanned image with random filled bubbles (useful for testing):
python src/generate_test_image.pyOutput: data/sheets/test_filled_omr.jpg
The scanner implementation is currently in development.
- Python 3.x
- ReportLab: For PDF generation.
- OpenCV: For image processing and computer vision.
- NumPy: For array manipulations.