Coder Social home page Coder Social logo

innovationquest2019 / omrchecker Goto Github PK

View Code? Open in Web Editor NEW

This project forked from udayraj123/omrchecker

0.0 1.0 0.0 3.74 MB

Grade exams fast and accurately using a scanner ๐Ÿ–จ or your phone ๐Ÿคณ.

License: GNU General Public License v3.0

Python 100.00%

omrchecker's Introduction

OMR Checker

Grade exams fast and accurately using a scanner ๐Ÿ–จ or your phone ๐Ÿคณ.

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

GitHub stars PRs Welcome Join Ask me

TLDR; Jump to Getting Started.

๐ŸŽฏ Features

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.

Specs Current_Speed Current_Size Min Resolution
๐Ÿ’ฏ 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.
๐ŸŽˆ Extremely lightweight Core code size is less than 500 KB(Samples excluded).
๐Ÿซ Large Scale Used on tens of thousands of OMRs at Technothlon.
๐Ÿ‘ฉ๐Ÿฟโ€๐Ÿ’ป Dev Friendly Well documented repository based on python and openCV with an active discussion group.

Note: For solving live challenges, developers can checkout TODOs. See all details in Project Wiki.

๐Ÿ’ก 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 many visuals in the wiki. Check them out!

Code in action on images taken by scanner:

document_scanner

Code in action on images taken by a mobile phone:

checking_xeroxed_mobile

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

A. Running default sample

If you want to try out the default sample, you can directly run:

python3 main.py

B. Running other samples

  1. Put your data in inputs folder. You can copy sample data as shown below:
    # Note: remove previous inputs if any with `mv inputs/* ~/.trash` 
    # sample1 is the default sample
    cp -r ./samples/sample2/* inputs/
    Note: Change the number N in sampleN to see more examples
  2. Run OMRChecker: python3 main.py --noMarkers See usage guide here.

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

C. Running 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.

๐Ÿ’ก Why is this software free?

The idea for this project began at Technothlon, which is a non-profit international school championship. After seeing it work fabulously at such a large scale, we decided to share this simple and powerful tool with the world to perhaps help revamp OMR checking processes and help greatly reduce the tediousness of the work involved.

And we believe in the power of open source! Currently, OMRChecker is in its initial stage where only developers can use it. We hope to see it become more user-friendly and even more robust with exposure to different inputs from you!

Open Source

Can I use this code in my work?

OMRChecker can be forked and modified. You are encouraged to play with it and we would love to see your own projects in action! The only requirement is disclose usage of this software in your code. It is published under the GPLv3 license

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 amazing people over the globe without whom this project would never have completed. Thank you!

This project is dedicated to Technothlon where the idea of making such solution was conceived. Technothlon is a logic-based examination organized by students of IIT Guwahati.

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):

Other ways you can contribute:

  • Help OMRChecker cross 560 stars โญ to become #1 (Currently #4) on the "OMR" tag on github. Current stars: GitHub stars

  • Buy Me A Coffee โ˜• - To keep my brain juices flowing and help me create more such projects ๐Ÿ’ก

  • paypal - If this project saved you large costs on OMR Software licenses, or saved efforts to make one.

Find OMRChecker on Product Hunt | Hacker News | Reddit | Swyya

GitHub stars PRs Welcome Join

omrchecker's People

Contributors

udayraj123 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.