{"id":21470960,"url":"https://github.com/saadarazzaq/autograde","last_synced_at":"2025-03-17T06:45:15.823Z","repository":{"id":203617687,"uuid":"709950223","full_name":"SaadARazzaq/AutoGrade","owner":"SaadARazzaq","description":"Automated MCQ Grading with Computer Vision and Optical Mark Recognition (OMR) Technology✅","archived":false,"fork":false,"pushed_at":"2024-12-23T04:09:25.000Z","size":248,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-23T16:14:27.585Z","etag":null,"topics":["automation","computer-vision","image-processing","optical-mark-recognition"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SaadARazzaq.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-10-25T17:57:49.000Z","updated_at":"2024-12-23T04:09:28.000Z","dependencies_parsed_at":"2023-10-29T23:25:12.599Z","dependency_job_id":null,"html_url":"https://github.com/SaadARazzaq/AutoGrade","commit_stats":null,"previous_names":["saadarazzaq/autograde"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SaadARazzaq%2FAutoGrade","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SaadARazzaq%2FAutoGrade/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SaadARazzaq%2FAutoGrade/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SaadARazzaq%2FAutoGrade/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SaadARazzaq","download_url":"https://codeload.github.com/SaadARazzaq/AutoGrade/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243988956,"owners_count":20379649,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","computer-vision","image-processing","optical-mark-recognition"],"created_at":"2024-11-23T09:30:00.456Z","updated_at":"2025-03-17T06:45:15.801Z","avatar_url":"https://github.com/SaadARazzaq.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AutoGrade  \n**Automated MCQ Grading with Computer Vision and Optical Mark Recognition (OMR) Technology** ✅  \n\n\u003cimg width=\"462\" alt=\"Screenshot 2024-12-23 at 09 07 22\" src=\"https://github.com/user-attachments/assets/a8ab266e-e6e8-4e93-91b2-af9517f4d3fa\" /\u003e\n\n\u003cimg width=\"462\" alt=\"Screenshot 2024-12-23 at 09 07 34\" src=\"https://github.com/user-attachments/assets/6709949b-8e2b-422f-9f53-cc3d1ce19e4a\" /\u003e\n\n### Overview  \nAutoGrade is a smart solution to grade multiple-choice questions (MCQs) automatically. It uses computer vision and Optical Mark Recognition (OMR) to make grading faster and more accurate, saving time and reducing errors.\n\n\n### Key Features  \n- **Smart Image Analysis**: Detects and checks marked answers with image processing.  \n- **Precise Recognition**: Finds and reads filled bubbles or checkboxes accurately.  \n- **Handles Many Sheets**: Grades multiple answer sheets at once.  \n- **Flexible Designs**: Works with different types of answer sheet layouts.  \n- **Quick Results**: Gives instant scores and useful feedback.\n\n### Technology Stack  \n- **Programming Language**: Python  \n- **Libraries**:  \n  - OpenCV for processing images  \n  - NumPy for calculations  \n  - Pandas for organizing data  \n- **Backend**: FastAPI for APIs and app setup  \n- **Testing**: PyTest for checking code quality  \n\n### Challenges Solved  \n- Reduces mistakes from manual grading  \n- Speeds up the grading process  \n- Handles large numbers of answer sheets efficiently  \n\n### Outcome  \nAutoGrade makes grading easy and accurate, helping teachers and examiners save time and focus on other tasks.\n\n---\n\n## Approach  \n\n### 1. Image Preprocessing  \n- Load and resize the input image for consistent analysis.  \n- Convert to grayscale to simplify the image.  \n- Apply blur to reduce noise.  \n- Detect edges with the Canny edge detector.  \n\n### 2. Finding Rectangles  \n- Find all contours (shapes) in the image.  \n- Select rectangle shapes based on size and structure.  \n- Sort the rectangles by size and pick the important ones.  \n\n### 3. Fixing the View  \n- Get the corners of each rectangle.  \n- Use perspective transformation to view the rectangle flat like a paper.  \n- Crop to keep only the part with answers.  \n\n### 4. Recognizing Marks  \n- Change each cropped rectangle to grayscale.  \n- Use binary thresholding to highlight the marks.  \n- Check the density of pixels to see which answers are filled.  \n\n### 5. Showing Results  \n- Use a Tkinter window to show all steps and results in one place.  \n\n### 6. Tools and Functions  \n- Functions to find rectangles and order their corners.  \n- Tools to filter and display images step by step.  \n\n---\n\n### Contact  \nFor more details, feel free to reach out via email or connect on LinkedIn.  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaadarazzaq%2Fautograde","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaadarazzaq%2Fautograde","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaadarazzaq%2Fautograde/lists"}