iansan5653 / open-mcr Goto Github PK
View Code? Open in Web Editor NEW:pencil: Exam bubble sheet scorer. Created with OpenCV and Python.
License: GNU General Public License v3.0
:pencil: Exam bubble sheet scorer. Created with OpenCV and Python.
License: GNU General Public License v3.0
Add automatic type checking using Pipelines so we can have some checks before merging a PR.
Value 'tp.Optional' is unsubscriptable
The script does not process the sheet with 150 questions! It always gives an error :
Error : <Field.LAST_NAME: 1>.
please note that, I am using an image as an answer sheet with Student ID = 9999999999
U nfortunately the program does not start on my windows 11.
I get the following information"Failed to execute script main"
What could be the reason ? Please, give me some hint in this matter.
I have used the software to check about 200 answer sheets in one go. The software was unable to handle bad answer sheets .
So, I had to physically identify and separate the bad answer sheets.
If its okay, I would like to add a feature where the software will generate a separate output file to show the list of images that were bad-answer-sheets.
bad answer sheets are those that do not have the required corners - it could be due to...
add 100 and 200 question sets also..
A project preceding this one was to create a multiple choice test analysis software that outputs statistics and plots for analyzing test results.
Currently the output files are not yet compatible with this software, and it shouldn't be hard to add this support.
Currently outputs on a 0-1 scale.
This will help in finding the original file if needed to verify results.
When using the rearrangement method, the program should transpose the answer key sheet as there will only be one key and this is more intuitive.
The utility can check if keys have blank answers, or if arrangement files don't correspond completely.
Empty columns shouldn't have column names left.
Hey, how long would it take to alter the script for a test with 200 questions? I am trying to prepare a simulation exam for medical students (offered for free) and the exam is a 200 questions one.
I would appreciate and try and help with this feature (I'm a linux engineer, but I'm trying to learn some OpenCV anyway)
Maybe "Sort results by student name"?
Currently installing the program results in a number of errors due to unsigned binaries. We can improve the experience by signing them.
Can I use a different Design of OMR Sheet with this script. Can you help me in designing my custom design sheet as a consultant.
Currently, if a scanner that darkens the image is used, extra bubbles (especially the W and M bubbles) will be processed as filled. If a scanner that lightens the image is used, not enough bubbles will be considered. The threshold should either be dynamically created or at least improved per-letter.
The command line argument parsing functionality is using the native pathlib.Path
constructor method to parse file path arguments. However, this fails when a path is quoted using double quotes, like: --formmap = "C:/Test User/data/map.csv"
. Because this path has a space, double quotes are necessary. But this fails because the quotes are never stripped.
Solution is to just create a custom parsing method that strips quotes if present.
Currently the utility processes an image and then reads each zone as a separate operation. It would be much more efficient to read the entire sheet at once and calculate the threshold at that time, as the current method results in reading all the name bubbles twice.
ie YYYYMMDDHHmmss_scored-results.csv
This is critically important - there is no automated testing. We need unit and/or end-to-end testing examining as many scenarios as possible. (edit: we do have E2E testing now but could still use some unit tests).
it does not work on 150questions
the error is:
error:field.Lnastname:1
The software should either provide a more useful error message (it might be simpler to just say "Image X is invalid" rather than "Image X is rotated" since detecting rotation may be difficult), or simply process the image as if it was not sideways (maybe by re-running with 90deg rotation after failure).
We have several examples committed to the repository. It should be simple to convert these to end-to-end tests.
For now I am limiting this to solely what types I am actively using in the libraries. IE, if I call numpy.function(A,B,C)
then I only define:
def function(A: int, B: int, C: int) -> int: ...
Even if the full function is actually something like:
def function(A: int, B: int, C: int, D: float = 45.5) -> int: ...
Reported by Dr. Kaw - need to verify on other devices as well.
Per discussion in #29, a feature to consider for future versions would be alternative sheet layouts with more than 75 questions.
This should be a checkbox - either sort or leave in same order.
Consider condensing or using a grid layout
Reported here #39 (comment).
This is to make it compatible with existing test analysis software.
Example:
Test Form Code | A | B |
---|---|---|
Q1 | A | A |
Q2 | C | C |
Q3 | E | E |
Q4 | B | B |
Q5 | E | E |
Q6 | C | C |
Q7 | D | D |
Q8 | E | E |
Q9 | A | A |
Q10 | B | B |
Q11 | C | C |
Q12 | B | B |
Q13 | C | C |
Q14 | A | A |
Q15 | E | E |
Q16 | E | E |
Q17 | E | E |
A CLI would be very useful for debugging and when users want to do bulk processing. The CLI should accept all of the UI inputs as arguments and skip the UI prompt.
CLI design guidelines: https://clig.dev/
The UI currently looks like this:
For each input, there would need to be a command line option (ie, --output-path = ../output
).
All functions should be well documented
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.