Smart Answer Sheet Processor is an end-to-end automation system designed for educational institutions. It leverages machine learning and computer vision to extract student information from answer sheet PDFs and automatically uploads them to the Learning Management System (LMS).
┌─────────────┐ ┌──────────────┐ ┌─────────────┐ ┌─────────────┐
│ PDF Upload │ -> │ ML Extraction│ -> │ Validation │ -> │ LMS Upload │
└─────────────┘ └──────────────┘ └─────────────┘ └─────────────┘
Feature
Description
Batch Upload
Upload multiple PDFs simultaneously
ML Extraction
Auto-extract register numbers & subject codes
Validation
Real-time credential & URL verification
LMS Automation
Direct upload via Selenium
Feature
Description
Parallel Processing
3-5 concurrent uploads
Real-time Status
Live progress monitoring
Recheck Config
Verify setup without re-upload
Modern UI
Clean, responsive interface
Python 3.9+
Django 5.2
MongoDB
PyTorch
OpenCV
Selenium
Category
Technology
Version
Purpose
Backend
Django
5.2.7
Web framework & REST API
Database
MongoDB
4.0+
NoSQL document storage
ML/DL
PyTorch
2.1.1
Deep learning models
Vision
OpenCV
4.8.1
Image processing
OCR
Tesseract
5.0+
Text recognition
Automation
Selenium
4.15.2
Browser automation
Detection
Ultralytics
8.0+
YOLO object detection
Component
Minimum
Recommended
OS
Windows 10 / Ubuntu 20.04
Windows 11 / Ubuntu 22.04
Python
3.9
3.11+
RAM
4 GB
8 GB+
Storage
2 GB
5 GB+
GPU
-
CUDA compatible
Package
Version
django
Latest
torch
Latest
opencv-python
Latest
selenium
Latest
pymongo
Latest
ultralytics
Latest
# Clone repository
git clone https://github.com/d-kavinraja/Smart-answer-sheet-processor.git
cd Smart-answer-sheet-processor
# Create virtual environment
python -m venv venv
# Activate (Windows)
venv\S cripts\a ctivate
# Activate (Linux/macOS)
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Ensure MongoDB is running
mongosh
# Run setup script
python setup_mongodb.py
cd lms_automation_project
# Apply migrations
python manage.py migrate
# Create admin user
python manage.py createsuperuser
# Start server
python manage.py runserver
graph LR
A[Upload PDF] --> B[ML Extraction]
B --> C{Validate}
C -->|Pass| D[Upload to LMS]
C -->|Fail| E[Error Handling]
D --> F[Complete]
Loading
Status
Description
pending
Awaiting processing
processing
Currently extracting
extracted
Data extracted successfully
uploading
Uploading to LMS
uploaded
Successfully uploaded
failed
Error occurred
Method
Endpoint
Description
GET
/
Main dashboard
POST
/api/upload/
Upload PDF files
POST
/api/process/<id>/
Extract data from PDF
POST
/api/recheck/<id>/
Verify configuration
POST
/api/upload-lms/<id>/
Upload to LMS
POST
/api/upload-multiple-lms/
Batch upload
DELETE
/api/delete/<id>/
Delete document
GET
/api/status/<id>/
Get upload status
GET
/api/uploads/
List all uploads
# Upload PDF
curl -X POST http://127.0.0.1:8000/api/upload/ \
-F " pdf_files=@answer_sheet.pdf"
# Check Status
curl http://127.0.0.1:8000/api/status/1/
{
"success" : true ,
"data" : {
"id" : 1 ,
"filename" : " answer_sheet.pdf" ,
"registerNumber" : " 212221230038" ,
"subjectCode" : " 19AI505" ,
"status" : " uploaded" ,
"isUploaded" : true
}
}
Smart-answer-sheet-processor/
│
├── lms_automation_project/
│ ├── lms_project/ # Django settings
│ │ ├── settings.py
│ │ ├── urls.py
│ │ └── wsgi.py
│ │
│ ├── pdf_processor/ # Main application
│ │ ├── models.py # Database models
│ │ ├── views.py # API endpoints
│ │ ├── urls.py # URL routing
│ │ └── templates/ # HTML templates
│ │
│ ├── services/ # Core services
│ │ ├── ml_service.py # ML extraction
│ │ ├── lms_automation.py # Selenium automation
│ │ └── parallel_lms_uploader.py
│ │
│ ├── models/ # ML model weights
│ └── media/ # Uploaded files
│
├── requirements.txt
├── db-setup.md
├── LICENSE
└── README.md
{
"_id" : ObjectId ,
"registerNumber" : "212221230038" ,
"username" : "22008681" ,
"password" : "****" ,
"createdAt" : ISODate
}
{
"_id" : ObjectId ,
"subject_code" : "19AI505" ,
"url" : "https://lms..." ,
"createdAt" : ISODate
}
{
"_id" : ObjectId ,
"filename" : "file.pdf" ,
"status" : "Uploaded" ,
"django_id" : 1
}
MongoDB Connection Failed
# Check MongoDB status
mongosh
# Windows: Start service
net start MongoDB
# Linux
sudo systemctl start mongod
Credentials Not Found
// Add credentials via mongosh
db . credentials . insertOne ( {
registerNumber : "212221230038" ,
username : "22008681" ,
password : "password123"
} )
Port Already in Use
# Use different port
python manage.py runserver 8001
We welcome contributions! Please follow these steps:
Fork the repository
Create a feature branch (git checkout -b feature/AmazingFeature)
Commit changes (git commit -m 'Add AmazingFeature')
Push to branch (git push origin feature/AmazingFeature)
Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Commercial use
Modification
Distribution
Private use
Star this repo if you find it helpful!
Made by Kavinraja D