AI-Assisted Answer Sheet Evaluation System
Evalify is a comprehensive automated grading system designed to streamline the evaluation of handwritten student answer sheets. It leverages OCR (Optical Character Recognition) and configurable keyword-based algorithms to grade student answers against a provided marking scheme.
- Role-Based Authentication: Secure login for Admin, Teacher, and Student roles.
- Dashboards: Dedicated interfaces for each user role.
- Teacher Tools: Create exams, manage marking schemes.
- File Upload: Support for PDF and Image uploads (Answer Sheets & Marking Schemes).
- OCR Engine:
- EasyOCR (default): Deep-learning based OCR with superior handwriting recognition.
- Tesseract (fallback): Traditional OCR for printed text.
- Converts PDFs to high-quality images.
- Handles various file formats (PNG, JPG, PDF).
- Configurable Grading Logic:
- Fuzzy Matching: Uses Levenshtein distance to handle OCR typos and handwriting variations (e.g., "Algoritm" ≈ "Algorithm").
- Stopword Removal: Toggle to ignore noise words ("the", "is") for concept-focused grading.
- Scoring Modes:
Linear: Partial credit based on keyword coverage.Binary: Strict all-or-nothing grading.
- REST API: Flexible endpoints to trigger evaluation with custom configurations.
- Backend: Python 3.14, FastAPI
- Database: SQLite (SQLAlchemy ORM)
- OCR: EasyOCR (primary), Tesseract, pytesseract, pdf2image
- Matching: FuzzyWuzzy, python-Levenshtein
- Frontend: HTML5, CSS3, Vanilla JavaScript
-
Clone the repository:
git clone https://gitlab.com/medhxnsh/evalify.git cd evalify -
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r backend/requirements.txt
-
Install System Dependencies:
- Tesseract OCR:
- Mac:
brew install tesseract - Linux:
sudo apt-get install tesseract-ocr - Windows: Download installer from UB-Mannheim.
- Mac:
- Poppler (for PDF conversion):
- Mac:
brew install poppler
- Mac:
- Tesseract OCR:
-
Start the Server:
uvicorn backend.app:app --reload --port 6001
The API will be available at
http://localhost:6001. -
Access the App: Open
http://localhost:6001/shared/login.htmlin your browser.Default Credentials:
- Teacher:
teacher/teacher123 - Student:
student/student123
- Teacher:
Run userspace test scripts to verify core logic:
# Test Phase 3 Grading Logic (Fuzzy Match, Scoring)
python backend/test_phase3_logic.py
# Test OCR Pipeline (EasyOCR - default)
python backend/test_ocr_script.py
# Test OCR Pipeline (Tesseract fallback)
python backend/test_ocr_script.py --engine tesseract