All Projects → Udayraj123 → Omrchecker

Udayraj123 / Omrchecker

Licence: gpl-3.0
Grade exams fast and accurately using a scanner 🖨 or your phone 🤳.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Omrchecker

Scanbot Sdk Example Android
Document scanning SDK example apps for the Scanbot SDK for Android.
Stars: ✭ 67 (-64.55%)
Mutual labels:  document, image-processing, scanner
Is Now Illegal
🚫 A NERD protest against Trump's Immigration ban
Stars: ✭ 1,392 (+636.51%)
Mutual labels:  opencv, image-processing
Imagestitching
Conducts image stitching upon an input video to generate a panorama in 3D
Stars: ✭ 98 (-48.15%)
Mutual labels:  opencv, image-processing
Autoannotationtool
A label tool aim to reduce semantic segmentation label time, rectangle and polygon annotation is supported
Stars: ✭ 113 (-40.21%)
Mutual labels:  opencv, image-processing
Automatic Leaf Infection Identifier
Automatic detection of plant diseases
Stars: ✭ 97 (-48.68%)
Mutual labels:  opencv, image-processing
Traffic Sign Detection
Traffic signs detection and classification in real time
Stars: ✭ 96 (-49.21%)
Mutual labels:  opencv, image-processing
Ios Rubik Solver
An iOS app that detects a 3x3 Rubik's cube, recognizes the color of all cubies, solves it and provides a 3D visualisation of the solving process.
Stars: ✭ 111 (-41.27%)
Mutual labels:  opencv, image-processing
Pyscenedetect
🎥 Python and OpenCV-based scene cut/transition detection program & library.
Stars: ✭ 1,203 (+536.51%)
Mutual labels:  opencv, image-processing
Color Tracker
Color tracking with OpenCV
Stars: ✭ 128 (-32.28%)
Mutual labels:  opencv, image-processing
Haskell Opencv
Haskell binding to OpenCV-3.x
Stars: ✭ 145 (-23.28%)
Mutual labels:  opencv, image-processing
Scene Text Recognition
Scene text detection and recognition based on Extremal Region(ER)
Stars: ✭ 146 (-22.75%)
Mutual labels:  opencv, image-processing
Retina Features
Project for segmentation of blood vessels, microaneurysm and hardexudates in fundus images.
Stars: ✭ 95 (-49.74%)
Mutual labels:  opencv, image-processing
The bilateral solver
Fast Bilateral Solver implementation with C++ and demos
Stars: ✭ 87 (-53.97%)
Mutual labels:  opencv, image-processing
Sign Language Recognition
✌️ 👌 ✊ 📷 Sign Language Recognition using Python
Stars: ✭ 98 (-48.15%)
Mutual labels:  opencv, image-processing
Litiv
C++ implementation pool for computer vision R&D projects.
Stars: ✭ 82 (-56.61%)
Mutual labels:  opencv, image-processing
Nvidia Gpu Tensor Core Accelerator Pytorch Opencv
A complete machine vision container that includes Jupyter notebooks with built-in code hinting, Anaconda, CUDA-X, TensorRT inference accelerator for Tensor cores, CuPy (GPU drop in replacement for Numpy), PyTorch, TF2, Tensorboard, and OpenCV for accelerated workloads on NVIDIA Tensor cores and GPUs.
Stars: ✭ 110 (-41.8%)
Mutual labels:  opencv, image-processing
Go Cv
Computer Vision package in pure Go taking advantage of SIMD acceleration
Stars: ✭ 66 (-65.08%)
Mutual labels:  opencv, image-processing
Invisibility cloak
This is a fun application of image processing which enables you to experience the magic of an invisibility cloak. Let's make our childhood fantasy of using an invisibility cloak come true.
Stars: ✭ 176 (-6.88%)
Mutual labels:  opencv, image-processing
Edge detection
This is a flutter plugin to detect edges in a live camera, take the picture of detected edges object, crop it, and save.
Stars: ✭ 116 (-38.62%)
Mutual labels:  opencv, scanner
Phpstamp
The XSL-way templating library for MS Office Word DOCX documents.
Stars: ✭ 150 (-20.63%)
Mutual labels:  document, template

OMR Checker

Grade exams fast and accurately using a scanner 🖨 or your phone 🤳.

HitCount GitHub stars

PRs Welcome GitHub pull-requests closed GitHub issues-closed GitHub contributors

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 Get insights to configure and debug easily.
🎈 Lightweight Core code size(excluding images) is less than 500 KB.
🏫 Large Scale Tested on a large scale at Technothlon.
👩🏿‍💻 Dev Friendly Pylinted and Black formatted code (check dev branch for latest code). Also has a developer community on discord.

Note: For solving interesting challenges, developers can checkout Dev Branch and TODOs.

See complete guide and details at 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

Code in action on images taken by scanner:

document_scanner

Code in action on images taken by a mobile phone:

checking_xeroxed_mobile

Visuals

Processing steps

See step by step processing of any OMR sheet:

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

Output

Get a CSV sheet containing the detected responses and evaluated scores:

csv_output

There are many more visuals in the wiki. Check them out here!

Getting started

Setup Time

Operating system: OSX or Linux is recommended although windows is also supported currently.

1. Install global dependencies

opencv 4.0.0 python 3.4+

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

Install opencv (Any installation method is fine.)

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.

Installing missing libraries(if any):

Windows users may skip this step.

On a fresh computer, some of the libraries may get missing in event after a successful pip install. Install them using following commands(ref):

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. Install project dependencies

matplotlib 3.0.2 pandas 0.24.0 numpy 1.16.0 deepmerge 0.1.0 dotmap 1.3.17

Clone the repo

# Shallow clone - takes latest code with minimal size
git clone https://github.com/Udayraj123/OMRChecker --depth=1

Note: Contributors should take a full clone(without the --depth flag).

Install pip requirements

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

Friendly Note: If you face a distutils error in pip, use --ignore-installed flag in above command.

3. Run the code

  1. First copy and examine the sample data to know how to structure your inputs:
    cp -r ./samples/sample1 inputs/
    # Note: you may remove previous inputs (if any) with `mv inputs/* ~/.trash` 
    # Change the number N in sampleN to see more examples
    
  2. Run OMRChecker:
    python3 main.py
    

Each example in samples folder demonstrates different ways in which OMRChecker can be used.

4. Running it on your own OMR Sheets

  1. First create your own template.json.
  2. Configure the tuning parameters (help needed for documentation!).
  1. Run OMRChecker with appropriate arguments (See full usage).

Full Usage

python3 main.py [--setLayout] [--noCropping] [--autoAlign] [--inputDir dir1] [--outputDir dir1] [--template path/to/template.json]

Explanation for the arguments:

--setLayout: Set up OMR template layout - modify your json file and run again until the template is set.

--autoAlign: (experimental) Enables automatic template alignment - use if the scans show slight misalignments.

--noCropping: Disables page contour detection - used when page boundary is not visible e.g. document scanner.

--inputDir: Specify an input directory.

--outputDir: Specify an output directory.

--template: Specify a default template if no template file in input directories.

FAQ

Why is this software free?

This project was born out of a student-led organization called as Technothlon. It is a logic-based international school championship organized by students of IIT Guwahati. Being a non-profit organization, and after seeing it work fabulously at such a large scale we decided to share this tool with the world. The OMR checking processes still involves so much tediousness which we aim to reduce dramatically.

We believe in the power of open source! Currently, OMRChecker is in an intermediate stage where only developers can use it. We hope to see it become more user-friendly as well as robust from exposure to different inputs from you all!

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 : Adrian Rosebrock for his exemplary blog : https://pyimagesearch.com

Harrison Kinsley aka sentdex for his video tutorials and many other resources.

Satya Mallic for his resourceful blog: https://www.learnopencv.com

And to other amazing people from all over the globe who've made significant improvements in this project. Thank you!

Related Projects

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

Stargazers over time

Stargazers over time

Ways to contribute:

  • Help OMRChecker reach more people by giving a star!

    The Goal is to reach top position for the OMR Topic

  • If this project saved you large costs on OMR Software licenses, or saved efforts to make one. Consider donating an amount of your choice below:

  • Join the Discord community to help others with using OMRChecker

License

GitHub license

Copyright © 2019-2020 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 LICENSE.

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].