https://github.com/nafisarkar/iot_omr_scanner
The IOT_OMR_SCANNER is an IoT-based project designed to automate the evaluation of OMR (Optical Mark Recognition) sheets
https://github.com/nafisarkar/iot_omr_scanner
esp32-cam image image-processing iot ocr-recognition omr-sheet
Last synced: 4 months ago
JSON representation
The IOT_OMR_SCANNER is an IoT-based project designed to automate the evaluation of OMR (Optical Mark Recognition) sheets
- Host: GitHub
- URL: https://github.com/nafisarkar/iot_omr_scanner
- Owner: Nafisarkar
- Created: 2024-04-17T14:58:56.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-01-19T07:19:26.000Z (over 1 year ago)
- Last Synced: 2025-03-10T06:00:10.449Z (over 1 year ago)
- Topics: esp32-cam, image, image-processing, iot, ocr-recognition, omr-sheet
- Language: HTML
- Homepage:
- Size: 1.11 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ๐ IoT OMR Scanner
**Automated Optical Mark Recognition System with ESP32-CAM**
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
[](https://opencv.org/)
[](https://www.espressif.com/)
[Features](#-features) โข [Installation](#-installation) โข [Usage](#-usage) โข [Hardware](#-hardware-requirements) โข [Contributing](#-contributing)
---
## ๐ About
The **IoT OMR Scanner** is an innovative IoT-based solution that automates the evaluation of OMR (Optical Mark Recognition) sheets. Combining the power of ESP32-CAM for image capture with advanced OpenCV algorithms, this system provides accurate, real-time processing for educational institutions and examination centers.
## โจ Features
### ๐ท Smart Image Capture
- **High-resolution imaging** with ESP32-CAM module
- **Cost-effective** and compact hardware solution
- **Wireless connectivity** for remote operation
### ๐ง Advanced Computer Vision
- **Intelligent preprocessing** with grayscale conversion and Gaussian blur
- **Precise edge detection** using Canny Edge Detector
- **Accurate circle detection** via Hough Circle Transform
### โ
Automated Answer Validation
- **Smart positioning** algorithm (top-to-bottom, left-to-right sorting)
- **Real-time comparison** with predefined answer keys
- **Visual feedback** with color-coded results:
- ๐ด **Red circles**: Correct answers
- ๐ข **Green circles**: Incorrect answers
### โก Real-Time Processing
- **Fast evaluation** suitable for high-volume environments
- **Instant results** with detailed analytics
- **Educational-grade accuracy** for reliable assessments
## ๐ Installation
### Prerequisites
- Python 3.7 or higher
- ESP32-CAM module with firmware
### Quick Start
1. **Clone the repository**
```bash
git clone https://github.com/Nafisarkar/IOT_OMR_SCANNER.git
cd IOT_OMR_SCANNER
```
2. **Install dependencies**
```bash
pip install -r requirements.txt
```
Or install manually:
```bash
pip install opencv-python numpy imutils
```
3. **Configure ESP32-CAM**
- Flash the ESP32-CAM with the provided firmware
- Set up wireless connection parameters
4. **Setup paths**
- Update image paths in the configuration file
- Ensure proper directory structure
## ๐ฑ Usage
### Step-by-Step Process
1. **๐ธ Capture Image**
```
Use ESP32-CAM to capture OMR sheet โ Save to img/ folder
```
2. **๐ง Run Scanner**
```bash
python main.py
```
3. **๐ View Results**
- Processed image with highlighted answers
- Console output with detection statistics
- Accuracy metrics and analysis
### Expected Output
```
Total circles detected: 40
Correct answers: 35
Accuracy: 87.5%
```
### Core Components
| Component | Technology | Purpose |
| ----------------------- | ---------------- | ------------------------------------- |
| **Image Preprocessing** | OpenCV | Noise reduction, grayscale conversion |
| **Edge Detection** | Canny Algorithm | Boundary identification |
| **Circle Detection** | Hough Transform | Mark recognition |
| **Validation Engine** | Custom Algorithm | Answer comparison |
## ๐ Hardware Requirements
### Essential Components
- ๐ง **ESP32-CAM Module**
- ๐ง **ESP32 Development Board**
- ๐ **Power Supply** (USB Cable or external)
- ๐ **OMR Sheets** (standard format)
### Optional Enhancements
- ๐ก **LED Lighting** for better image quality
- ๐ฆ **Enclosure** for portable operation
- ๐ **Battery Pack** for mobile use
## ๐ป Software Stack
| Technology | Version | Purpose |
| ----------- | ------- | -------------------- |
| **Python** | 3.7+ | Core processing |
| **OpenCV** | 4.x | Computer vision |
| **NumPy** | Latest | Numerical operations |
| **Imutils** | Latest | Image utilities |
## ๐ฏ Example Results
### Before Processing

### After Processing
- โ
**Correct answers**: Highlighted in red
- โ **Incorrect answers**: Highlighted in green
- ๐ **Statistics**: Displayed in terminal
## ๐ค Contributing
We welcome contributions! Here's how you can help:
1. **๐ด Fork** the repository
2. **๐ Create** a feature branch (`git checkout -b feature/AmazingFeature`)
3. **๐พ Commit** your changes (`git commit -m 'Add some AmazingFeature'`)
4. **๐ค Push** to the branch (`git push origin feature/AmazingFeature`)
5. **๐ Open** a Pull Request
### Areas for Contribution
- ๐ Bug fixes and improvements
- ๐ Documentation enhancements
- โจ New features and algorithms
- ๐งช Test coverage expansion
## ๐ License
This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.
## ๐ Acknowledgments
- **OpenCV Community** - For providing powerful computer vision tools
- **ESP32 Community** - For comprehensive documentation and support
- **Contributors** - For making this project better
## ๐ฌ Contact & Support
- **Author**: Shaon An Nafi
- **Issues**: [GitHub Issues](https://github.com/Nafisarkar/IOT_OMR_SCANNER/issues)
- **Discussions**: [GitHub Discussions](https://github.com/Nafisarkar/IOT_OMR_SCANNER/discussions)
---
**โญ Star this repository if you found it helpful!**
[๐ Back to top](#-iot-omr-scanner)