Grade Autofiller is an assistant to TAs and Professors in our department (Computer Department). It should provide an easy way to fill the grades electronically, and it should be able to correct MCQ bubble sheet exams automatically.
- Clone the repository
$ git clone https://github.com/AdhamAliAbdelAal/Grades-autofiller.git
-
You can use and choose module from this file
$ cd './Code/GUI.py'
List of steps we take to process the input sheet and get our results
7. Calculate the bounding rectangle of the contours and get its coordinates, width and height and calculate aspect ratio
11. Filter the contours so if the aspect ratio β [0.8,1.2], the number of contour vertices is greater than 4, the contour area is greater than 30 (threshold to ignore small circles or contours) and the contour is a closed one then it will be considered as a bubble
12. Collect all contours areas in array and calculate the average area (the mean of areas should be very close to the bubbles area because the most frequent contours are the bubbles contours).
13. Another filter to the output contours that resulted from the first filter by check if the area of each contour is within 30% error with the average contour area then bubbles contours are only residual contours
15. Calculate the number of choices and the number of question in each row by using x and y coordinates of each bubble (bubbles belong to the same question are colored with the same color).
18. Check if the student select more than one choice or no choice the answer will be X but if the student select only one choice so the answer will be the character of the choice (A, B, C, etc.).
excel sheet name "result Grades sheet"
List of steps taken to process the Grades Sheet
Horizontal Lines Detect | Vertical Lines Detect | Intersection Lines Detect |
---|---|---|
2 Methods were used: β
- OCR
- Classifiers
6 different signs
Sign | Square | Question Mark | Check Mark | Horizontal Lines | Vertical Lines | Empty |
---|---|---|---|---|---|---|
Image | ||||||
Output | 0 | empty cell with a red background color | 5 | (5 - i) where i is the number of lines | number of lines | 0 |
excel sheet name "result Grades sheet"
4. Calculated coordinates for the new points (warped), and transformed the original points to these coordinates.
Data Acquisition and Model Training for Digits Detection (Digital and Handwritten)
The main idea is to train different models then use a polling system to collectively increase the accuracy of the system β beyond the accuracy of each on their own.
1. Not much Pre-Processing was needed for the single handwritten digits, just a noise reduction filter.
Now, we have contours containing single digits or a group of connected digits.
3. Divide the each contour width by the average width [integer Division]; to know how many digits are in each picture
4. If the quotient of the division is less than a certain threshold, then it contains a single digit. Otherwise, divide the contour into a number of smaller contours [each containing a single digit] according to the quotient.
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
Adham Ali |
Menatalh Hossamalden |
Eslam Ashraf |
Mohamed Walid |
Note: This software is licensed under MIT License, See License for more information Β©Mohamed Walid.