Skip to content

Grade exams fast and accurately using a scanner πŸ–¨ or your phone 🀳.

License

Notifications You must be signed in to change notification settings

phil1618/OMRChecker

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

28 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

OMR Checker

Grade exams fast and accurately using a scanner πŸ–¨ or your phone 🀳.

Accurate RobustLarge_Scale Fast Lightweight Extensible

UserGuide PRs Welcome GitHub stars

TLDR; Jump to Getting Started.

Code in action on images taken by scanner: πŸ”₯

document_scanner

Code in action on images taken by a mobile phone: πŸ”₯

checking_xeroxed_mobile

🎯 Features

Current_Speed Current_Size Min Resolution

A full-fledged OMR checking software that can read and evaluate OMR sheets scanned at any angle and having any color. Support is also provided for a customisable marking scheme with section-wise marking, bonus questions, etc.

πŸ’― Accurate - Currently nearly 100% accurate on good quality document scans; and about 90% accurate on mobile images.

πŸ’ͺ🏿 Robust - Supports low resolution, xeroxed sheets. See Robustness for more.

⏩ Fast Current processing speed without any optimization is 200 OMRs/minute.

βœ… Extensible - Easily apply to different OMR layouts, surveys, etc.

πŸ“Š Visually Rich Outputs - get insights to configure and debug easily.

🎈 Lightweight - Core code size is less than 500 KB(Samples excluded).

🏫 Large Scale - Already used on tens of thousands of OMRs at Technothlon.

πŸ‘©πŸΏβ€πŸ’» Dev Friendly - Well documented repository based on python and openCV.

Devs can look at TODOs for live challenges. See more at Project Wiki.

For any help: Join

Getting started

Setup Time

Operating System

Although windows is supported, Linux is recommended for a bug-free experience.

1. Install dependencies

opencv 4.0.0 python 3.4

Note: To get a copy button for below commands, use CodeCopy Chrome | CodeCopy Firefox.

python3 -m pip install --user --upgrade pip
python3 -m pip install --user opencv-python
python3 -m pip install --user opencv-contrib-python

More details on pip install openCV here.

Note: On a fresh computer some of the libraries may get missing in above pip install.

Install them using the following commands: Windows users may skip this step.

sudo apt-get install -y build-essential cmake unzip pkg-config
sudo apt-get install -y libjpeg-dev libpng-dev libtiff-dev
sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install -y libatlas-base-dev gfortran

2. Clone the repo

git clone https://github.com/Udayraj123/OMRChecker

Install other requirements

imutils 0.5.2 matplotlib 3.0.2 pandas 0.24.0 numpy 1.16.0

cd OMRChecker/
python3 -m pip install --user -r requirements.txt

Note: If you face a distutils error, use the --ignore-installed flag

sudo python3 -m pip install --ignore-installed -r requirements.txt

3. Run the code(on sample images)

  1. Copy sample data:
    cp -r inputs/samples/sample1/* inputs/
    Note: If you are not running this for the first time, delete previous inputs first
    mv inputs/OMR_Files/ ~/.trash # can delete permanently using: rm -rf inputs/OMR_Files/
    
    cp -r inputs/samples/sample1/* inputs/
  2. Run OMRChecker: python3 main.py
  3. ???
  4. Profit!!

Note: For subsequent runs, if you don't want the outputs to append to previous results- Make sure the outputs folder is clean : rm -rf outputs/.

Applying it on your own OMR Sheets

  1. Follow the User Guide to create your own Template Layout.
  2. Open globals.py and play with the parameters (although most of them would need no change πŸ˜„)
  3. Run the code with appropriate arguments.

πŸ’‘ What can OMRChecker do for me?

Once you configure the OMR layout, just throw images of the sheets at the software; and you'll get back the graded responses in an excel sheet!

Images can be taken from various angles as shown below-

sample_input

These images will be processed in the following manner:

rotation_stack
*Note: This image is generated by the code itself!*

Finally a CSV file will also be generated containing all the responses and scoring

csv_output

There are a lot more visuals in the wiki. Check them out!

πŸ’‘ Why is this software free?

Our Motto:

Don't reinvent the wheel, use good wheels to make great vehicles!

After seeing it work fabulously at large scale on scanned OMR sheets at Technothlon, we have decided to open source the code and roll out mobile based scanning as well. The feedback from you all will be extremely valuable in making this idea become successful.

Can I use this code in my work?

Open Source Love svg1

OMRChecker is completely open source and published under GPLv3 license which is just to give you a heads up to disclose usage of this software in your code.

OMRChecker can be forked and modified. You are encouraged to play with it and we would love to see your own projects in action!

Credits

A Huge thanks to : The creative master Adrian Rosebrock for his blog : https://pyimagesearch.com

The legendary Harrison aka sentdex for his video tutorials.

And the james bond of computer vision Satya Mallic for his blog: https://www.learnopencv.com

And many other rockstars without whom this project would never have completed.

Thank you!

License

Copyright Β© 2019 Udayraj Deshmukh
OMRChecker : Grade exams fast and accurately using a scanner πŸ–¨ or your phone 🀳
This is free software, and you are welcome to redistribute it under certain conditions;

For more details see GitHub license

Related Projects

Here's a sneak peak of the Android OMR Helper App(WIP):

Activity:

Discord Group: Chat Ask me

HitCount Maintenance GitHub pull-requests closed GitHub issues-closed GitHub contributors

Help us reach 550 stars ⭐ to become #1 (Currently #4) on the "OMR" tag on github GitHub stars

To keep my πŸ’‘ brain juices flowing and create more such projects, β˜• Buy Me A Coffee

If this project saved you large costs on OMR Software licenses, or saved efforts to make one, or simply want to give me some credit: paypal

Note: As per non-profit traditions of Technothlon, all of your your donations will go into funding good initiatives in the future.

About

Grade exams fast and accurately using a scanner πŸ–¨ or your phone 🀳.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%