ATAS is a Django-based web application designed to automate the detection and tracking of students requiring compartment (re-take) exams (currently for Kathmandu Universtiy transcripts only). By leveraging Optical Character Recognition (OCR) and Pandas Data Processing, ATAS eliminates manual grade entry and identifies at-risk students instantly.
β οΈ Automated Failure Detection: Instantly flags students with a GPA < 2.0 or specific failing grades (F, D, or incomplete 'X')- π€ Bulk CSV/Excel Upload: Integrated Pandas engine for processing entire semester result sheets
- ποΈ Relational Academic Tracking: Manages Faculty, Courses, Students, and Exam Deadlines with database relationships
- π± Live Camera Integration: Scan physical documents directly from the browser using webcam
| Layer | Technology |
|---|---|
| Backend | Python 3.10+, Django 4.x |
| Data Processing | Pandas, NumPy |
| Computer Vision | Pytesseract, Tesseract OCR, OpenCV, Pillow |
| Frontend | HTML5, Bootstrap 5, CSS3, JavaScript (Webcam API) |
| Database | SQLite (Development), PostgreSQL (Production-ready) |
Ensure you have the following installed:
- Python 3.10+
- Tesseract OCR
- Linux:
sudo apt install tesseract-ocr - macOS:
brew install tesseract - Windows: Download from Tesseract OCR Releases
- Linux:
-
Clone the repository
git clone https://github.com/neeteshupreti/AcademicTrackingandAlertSystem.git cd AcademicTrackingandAlertSystem -
Create and activate virtual environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Run migrations
python manage.py migrate
-
Create superuser account
python manage.py createsuperuser
-
Start development server
python manage.py runserver
-
Access the application
- Admin Panel: http://localhost:8000/admin
- Main App: http://localhost:8000
AcademicTrackingandAlertSystem/
βββ manage.py # Django management script
βββ requirements.txt # Python dependencies
βββ db.sqlite3 # SQLite database
βββ ATAS/ # Django configuration
β βββ settings.py # Project settings
β βββ urls.py # Main URL routing
β βββ wsgi.py
βββ core/ # Core application
β βββ views.py # Admin & main views
β βββ models.py # Core models
β βββ urls.py
β βββ templates/ # HTML templates
βββ students/ # Students management app
β βββ views.py # Student views & import logic
β βββ models.py # Student models
β βββ forms.py # Django forms
β βββ templates/ # Student templates
βββ notifications/ # Notifications app
β βββ views.py
β βββ models.py # Alert models
β βββ templates/
βββ static/ # Static assets
βββ css/ # Stylesheets
βββ js/ # JavaScript files
ATAS includes a specialized KU (Kathmandu University) Report Parser that accurately extracts:
- Student Name: From "Name" labels with text normalization
- Semester: Supports multiple semester indicators (Semester: X, Sem: X, Year: X)
- GPA: Recognizes 6 different GPA formats including failure markers (X, F)
- Failed Subjects: Subject codes (CS101, MATH304, etc.) paired with failure grades
F- Direct failure(F)- Parenthesized failureINC- IncompleteFAIL- Full word failureX- GPA failure marker
Automatically detects: CS101, MATH304, IT102, ALGO301, etc.
- Pattern: 2-4 letter code + 2-4 digit number
- Case-sensitive extraction
- Students can have multiple compartments from different semesters
- Database allows same subject to be failed in different semesters
- Each compartment record stores:
- Semester of failure
- GPA at time of failure
- Timestamp of record creation
Input Transcript:
Name: JOHN DOE
Semester: 3
GPA: 2.5
Failed: CS101(F), IT102(F), ALGO301(INC)
Output JSON:
{
"name": "JOHN DOE",
"semester": 3,
"gpa": "2.5",
"failed_subjects": ["CS101", "IT102", "ALGO301"],
"is_failing": true,
"extraction_confidence": {
"name": "high",
"gpa": "high",
"subjects": "high",
"semester": "high"
}
}
For detailed OCR implementation notes, see OCR_IMPLEMENTATION_NOTES.md.
- Log in with superuser credentials
- Manage Faculty, Courses, and Students
- Set compartment deadlines
- Monitor active alerts
- Navigate to Import Records section
- Choose between:
- File Upload: Upload CSV/Excel with student results
- Camera Scanner: Capture transcript photos with webcam
- System automatically detects failures and creates alerts
- Dashboard displays all active compartment alerts
- Sorted by deadline urgency
- Track student status in real-time
Edit ATAS/settings.py to customize:
- Database settings
- Tesseract path (if not in system PATH)
- Email notifications (SMTP configuration)
- Static/Media file locations
-
Tesseract Path: If Tesseract isn't in your system PATH, add to
settings.py:import pytesseract pytesseract.pytesseract.pytesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' # Windows
-
Database: SQLite is included for development. For production, configure PostgreSQL in
settings.py
Pull requests are welcome! Please follow Django coding standards and include tests for new features.
This project is licensed under the MIT License - see LICENSE file for details.
For issues, questions, or contributions, please open an issue on GitHub or reach out to the development team.