Simple Optical Mark Recognition in python
Switch branches/tags
Nothing to show
Clone or download
Latest commit f3077e6 Jun 17, 2018
Permalink
Failed to load latest commit information.
img Initial (public) commit Nov 12, 2016
sheet Initial (public) commit Nov 12, 2016
.gitignore Initial (public) commit Nov 12, 2016
README.md Update README.md Jun 17, 2018
omr.py Changes for Python 3 Jun 14, 2018
test_omr.py Create test_omr.py Jun 14, 2018

README.md

omr

omr is a simple python2 optical mark recognition script. It takes as input an image of an answered answer sheet and outputs which alternatives were marked. Scroll down for an example.

Usage

$ python2 omr.py --help
usage: omr.py [-h] --input INPUT [--output OUTPUT] [--show]

optional arguments:
  -h, --help       show this help message and exit
  --input INPUT    Input image filename
  --output OUTPUT  Output image filename
  --show           Displays annotated image

Example

$ python omr.py --input img/answered-sheet-photo.jpg  --output /tmp/results.png --show

Q1: A
Q2: C
Q3: C
Q4: E
Q5: N/A
Q6: N/A
Q7: A
Q8: N/A
Q9: N/A
Q10: N/A

In this case, we used the following image as input:

Input

And got the following output:

Output

Anwer Sheet

The answer sheet is available in the sheet/ directory.

Development

Run unit tests

test_omr.py contains unit tests that can be run using:

$ py.test
======================================================== test session starts =========================================================
platform darwin -- Python 3.6.5, pytest-3.5.1, py-1.5.3, pluggy-0.6.0
rootdir: /Users/user/omr, inifile:
plugins: remotedata-0.2.1, openfiles-0.3.0, doctestplus-0.1.3, arraydiff-0.2
collected 1 item

test_omr.py .                                                                                                                  [100%]

====================================================== 1 passed in 1.61 seconds ======================================================