{"id":13545253,"url":"https://github.com/Udayraj123/OMRChecker","last_synced_at":"2025-04-02T15:31:05.702Z","repository":{"id":38847820,"uuid":"126692743","full_name":"Udayraj123/OMRChecker","owner":"Udayraj123","description":"Evaluate OMR sheets fast and accurately using a scanner 🖨 or your phone 🤳. ","archived":false,"fork":false,"pushed_at":"2025-03-22T15:54:34.000Z","size":39557,"stargazers_count":839,"open_issues_count":52,"forks_count":350,"subscribers_count":27,"default_branch":"master","last_synced_at":"2025-03-30T07:04:05.065Z","etag":null,"topics":["checker","correction","document","document-scanner","exam","grader","hacktoberfest","image-processing","mcq","multiple-choice","omr","omr-layout","omr-scanner","omr-scanning","omr-sheet","opencv","scanned-documents","scanner","scoring","template"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Udayraj123.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://www.paypal.me/Udayraj123/","https://www.buymeacoffee.com/Udayraj123"]}},"created_at":"2018-03-25T11:56:23.000Z","updated_at":"2025-03-27T12:21:24.000Z","dependencies_parsed_at":"2024-02-16T01:27:34.552Z","dependency_job_id":"41e8e06a-5d6c-4f8d-a21e-ad97945448f8","html_url":"https://github.com/Udayraj123/OMRChecker","commit_stats":{"total_commits":228,"total_committers":28,"mean_commits":8.142857142857142,"dds":0.6403508771929824,"last_synced_commit":"7189c2e311f36af8eaf620985dade969265fb006"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Udayraj123%2FOMRChecker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Udayraj123%2FOMRChecker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Udayraj123%2FOMRChecker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Udayraj123%2FOMRChecker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Udayraj123","download_url":"https://codeload.github.com/Udayraj123/OMRChecker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246841623,"owners_count":20842622,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["checker","correction","document","document-scanner","exam","grader","hacktoberfest","image-processing","mcq","multiple-choice","omr","omr-layout","omr-scanner","omr-scanning","omr-sheet","opencv","scanned-documents","scanner","scoring","template"],"created_at":"2024-08-01T11:00:59.720Z","updated_at":"2025-04-02T15:31:01.203Z","avatar_url":"https://github.com/Udayraj123.png","language":"Python","funding_links":["https://www.paypal.me/Udayraj123/","https://www.buymeacoffee.com/Udayraj123","https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=Z5BNNK7AVFVH8\u0026source=url","https://www.paypal.me/Udayraj123/500"],"categories":["Python","Recently Updated"],"sub_categories":["[Oct 20, 2024](/content/2024/10/20/README.md)"],"readme":"# OMR Checker\n\nRead OMR sheets fast and accurately using a scanner 🖨 or your phone 🤳.\n\n## What is OMR?\n\nOMR stands for Optical Mark Recognition, used to detect and interpret human-marked data on documents. OMR refers to the process of reading and evaluating OMR sheets, commonly used in exams, surveys, and other forms.\n\n#### **Quick Links**\n\n- [Installation](#getting-started)\n- [User Guide](https://github.com/Udayraj123/OMRChecker/wiki)\n- [Contributor Guide](https://github.com/Udayraj123/OMRChecker/blob/master/CONTRIBUTING.md)\n- [Project Ideas List](https://github.com/users/Udayraj123/projects/2/views/1)\n\n\u003chr /\u003e\n\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://github.com/Udayraj123/OMRChecker/pull/new/master) \u003c!-- [![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-brightgreen.svg)](https://github.com/Udayraj123/OMRChecker/wiki/TODOs) --\u003e\n[![GitHub pull-requests closed](https://img.shields.io/github/issues-pr-closed/Udayraj123/OMRChecker.svg)](https://github.com/Udayraj123/OMRChecker/pulls?q=is%3Aclosed)\n[![GitHub issues-closed](https://img.shields.io/github/issues-closed/Udayraj123/OMRChecker.svg)](https://GitHub.com/Udayraj123/OMRChecker/issues?q=is%3Aissue+is%3Aclosed)\n[![Ask me](https://img.shields.io/badge/Discuss-on_Github-purple.svg?style=flat-square)](https://github.com/Udayraj123/OMRChecker/issues/5)\n\n\u003c!-- [![GitHub contributors](https://img.shields.io/github/contributors/Udayraj123/OMRChecker.svg)](https://GitHub.com/Udayraj123/OMRChecker/graphs/contributors/) --\u003e\n\n[![GitHub stars](https://img.shields.io/github/stars/Udayraj123/OMRChecker.svg?style=social\u0026label=Stars✯)](https://GitHub.com/Udayraj123/OMRChecker/stargazers/)\n[![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2FUdayraj123%2FOMRChecker\u0026count_bg=%2379C83D\u0026title_bg=%23555555\u0026icon=googlecast.svg\u0026icon_color=%23E7E7E7\u0026title=hits%2829.09.2022%29\u0026edge_flat=false)](https://hits.seeyoufarm.com)\n[![Join](https://img.shields.io/badge/Join-Discord_group-purple.svg?style=flat-square)](https://discord.gg/qFv2Vqf)\n\n\u003c!-- [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/gist/Udayraj123/a125b1531c61cceed5f06994329cba66/omrchecker-on-cloud.ipynb) --\u003e\n\n## 🎯 Features\n\nA full-fledged OMR checking software that can read and evaluate OMR sheets scanned at any angle and having any color.\n\n| Specs \u003cimg width=200/\u003e | ![Current_Speed](https://img.shields.io/badge/Speed-200+_OMRs/min-blue.svg?style=flat-square) ![Min Resolution](https://img.shields.io/badge/Min_Resolution-640x480-blue.svg?style=flat-square) \u003cimg width=200/\u003e |\n| :--------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| 💯 **Accurate**        | Currently nearly 100% accurate on good quality document scans; and about 90% accurate on mobile images.                                                                                                          |\n| 💪🏿 **Robust**          | Supports low resolution, xeroxed sheets. See [**Robustness**](https://github.com/Udayraj123/OMRChecker/wiki/Robustness) for more.                                                                                |\n| ⏩ **Fast**            | Current processing speed without any optimization is 200 OMRs/minute.                                                                                                                                            |\n| ✅ **Customizable**    | [Easily apply](https://github.com/Udayraj123/OMRChecker/wiki/User-Guide) to custom OMR layouts, surveys, etc.                                                                                                    |\n| 📊 **Visually Rich**   | [Get insights](https://github.com/Udayraj123/OMRChecker/wiki/Rich-Visuals) to configure and debug easily.                                                                                                        |\n| 🎈 **Lightweight**     | Very minimal core code size.                                                                                                                                                                                     |\n| 🏫 **Large Scale**     | Tested on a large scale at [Technothlon](https://en.wikipedia.org/wiki/Technothlon).                                                                                                                             |\n| 👩🏿‍💻 **Dev Friendly**    | [Pylinted](http://pylint.pycqa.org/) and [Black formatted](https://github.com/psf/black) code. Also has a [developer community](https://discord.gg/qFv2Vqf) on discord.                                          |\n\nNote: For solving interesting challenges, developers can check out [**TODOs**](https://github.com/Udayraj123/OMRChecker/wiki/TODOs).\n\nSee the complete guide and details at [Project Wiki](https://github.com/Udayraj123/OMRChecker/wiki/).\n\n\u003c!-- 💁🏿‍♂️ **User Friendly** - WIP, Help by contributing! --\u003e\n\n## 💡 What can OMRChecker do for me?\n\nOnce you configure the OMR layout, just throw images of the sheets at the software; and you'll get back the marked responses in an excel sheet!\n\nImages can be taken from various angles as shown below-\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg alt=\"sample_input\" width=\"400\" src=\"https://raw.githubusercontent.com/wiki/Udayraj123/OMRChecker/extras/Progress/2019-04-26/images/sample_input.PNG\"\u003e\n\u003c/p\u003e\n\n### Code in action on images taken by scanner:\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg alt=\"document_scanner\" height=\"300\" src=\"https://raw.githubusercontent.com/wiki/Udayraj123/OMRChecker/extras/mini_scripts/outputs/gif/document_scanner.gif\"\u003e\n\n\u003c/p\u003e\n\n### Code in action on images taken by a mobile phone:\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg alt=\"checking_xeroxed_mobile\" height=\"300\" src=\"https://raw.githubusercontent.com/wiki/Udayraj123/OMRChecker/extras/mini_scripts/outputs/gif/checking_xeroxed_mobile.gif\"\u003e\n\u003c/p\u003e\n\n## Visuals\n\n### Processing steps\n\nSee step-by-step processing of any OMR sheet:\n\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://github.com/Udayraj123/OMRChecker/wiki/Rich-Visuals\"\u003e\n\t\t\u003cimg alt=\"rotation_stack\" width=\"650\" src=\"https://raw.githubusercontent.com/wiki/Udayraj123/OMRChecker/extras/Progress/2019-04-26/images/rotation.PNG\"\u003e\n\t\u003c/a\u003e\n\t\u003cbr\u003e\n\t*Note: This image is generated by the code itself!*\n\u003c/p\u003e\n\n### Output\n\nGet a CSV sheet containing the detected responses and evaluated scores:\n\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://github.com/Udayraj123/OMRChecker/wiki/Rich-Visuals\"\u003e\n\t\t\u003cimg alt=\"csv_output\" width=\"550\" src=\"https://raw.githubusercontent.com/wiki/Udayraj123/OMRChecker/extras/Progress/2019-04-26/images/csv_output.PNG\"\u003e\n\t\u003c/a\u003e\n\u003c/p\u003e\n\nWe now support [colored outputs](https://github.com/Udayraj123/OMRChecker/wiki/%5Bv2%5D-About-Evaluation) as well. Here's a sample output on another image -\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://github.com/Udayraj123/OMRChecker/wiki/%5Bv2%5D-About-Evaluation\"\u003e\n\t\t\u003cimg alt=\"colored_output\" width=\"550\" src=\"./docs/assets/colored_output.jpg\"\u003e\n\t\u003c/a\u003e\n\u003c/p\u003e\n\n#### There are many more visuals in the wiki. Check them out [here!](https://github.com/Udayraj123/OMRChecker/wiki/Rich-Visuals)\n\n## Getting started\n\n![Setup Time](https://img.shields.io/badge/Setup_Time-20_min-blue.svg)\n\n**Operating system:** OSX or Linux is recommended although Windows is also supported.\n\n### 1. Install global dependencies\n\n![opencv 4.0.0](https://img.shields.io/badge/opencv-4.0.0-blue.svg) ![python 3.5+](https://img.shields.io/badge/python-3.5+-blue.svg)\n\nTo check if python3 and pip is already installed:\n\n```bash\npython3 --version\npython3 -m pip --version\n```\n\n\u003cdetails\u003e\n\t\u003csummary\u003e\u003cb\u003eInstall Python3\u003c/b\u003e\u003c/summary\u003e\n\nTo install python3 follow instructions [here](https://www.python.org/downloads/)\n\nTo install pip - follow instructions [here](https://pip.pypa.io/en/stable/installation/)\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eInstall OpenCV\u003c/b\u003e\u003c/summary\u003e\n\n**Any installation method is fine.**\n\nRecommended:\n\n```bash\npython3 -m pip install --user --upgrade pip\npython3 -m pip install --user opencv-python\npython3 -m pip install --user opencv-contrib-python\n```\n\nMore details on pip install openCV [here](https://www.pyimagesearch.com/2018/09/19/pip-install-opencv/).\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\n\u003csummary\u003e\u003cb\u003eExtra steps(for Linux users only)\u003c/b\u003e\u003c/summary\u003e\n\n\u003cb\u003eInstalling missing libraries(if any):\u003c/b\u003e\n\nOn a fresh computer, some of the libraries may get missing in event after a successful pip install. Install them using following commands[(ref)](https://www.pyimagesearch.com/2018/05/28/ubuntu-18-04-how-to-install-opencv/):\n\n```bash\nsudo apt-get install -y build-essential cmake unzip pkg-config\nsudo apt-get install -y libjpeg-dev libpng-dev libtiff-dev\nsudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev\nsudo apt-get install -y libatlas-base-dev gfortran\n```\n\n\u003c/details\u003e\n\n### 2. Install project dependencies\n\nClone the repo\n\n```bash\ngit clone https://github.com/Udayraj123/OMRChecker\ncd OMRChecker/\n```\n\nInstall pip requirements\n\n```bash\npython3 -m pip install --user -r requirements.txt\n```\n\n_**Note:** If you face a distutils error in pip, use `--ignore-installed` flag in above command._\n\n\u003c!-- Wiki should not get cloned --\u003e\n\n### 3. Run the code\n\n1. First copy and examine the sample data to know how to structure your inputs:\n   ```bash\n   cp -r ./samples/sample1 inputs/\n   # Note: you may remove previous inputs (if any) with `mv inputs/* ~/.trash`\n   # Change the number N in sampleN to see more examples\n   ```\n2. Run OMRChecker:\n   ```bash\n   python3 main.py\n   ```\n\nAlternatively you can also use `python3 main.py -i ./samples/sample1`.\n\nEach example in the samples folder demonstrates different ways in which OMRChecker can be used.\n\n### Common Issues\n\n\u003cdetails\u003e\n\u003csummary\u003e\n\t1. [Windows] ERROR: Could not open requirements file\u003cbr\u003e\n\t\u003c/summary\u003e\nCommand: \u003ccode\u003epython3 -m pip install --user -r requirements.txt\u003c/code\u003e\n\u003cbr\u003e\n\tLink to Solution:  \u003ca href=\"https://github.com/Udayraj123/OMRChecker/issues/54#issuecomment-1264569006\"\u003e#54\u003c/a\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n2. [Linux] ERROR: No module named pip\u003cbr\u003e\n\u003c/summary\u003e\nCommand: \u003ccode\u003epython3 -m pip install --user --upgrade pip\u003c/code\u003e\n\u003cbr\u003e\n\tLink to Solution: \u003ca href=\"https://github.com/Udayraj123/OMRChecker/issues/70#issuecomment-1268094136\"\u003e#70\u003c/a\u003e\n\u003c/details\u003e\n\n## OMRChecker for custom OMR Sheets\n\n1. First, [create your own template.json](https://github.com/Udayraj123/OMRChecker/wiki/User-Guide).\n2. Configure the tuning parameters.\n3. Run OMRChecker with appropriate arguments (See full usage).\n\u003c!-- 4. Add answer key( TODO: add answer key/marking scheme guide)  --\u003e\n\n## Full Usage\n\n```\npython3 main.py [--setLayout] [--inputDir dir1] [--outputDir dir1]\n```\n\nExplanation for the arguments:\n\n`--setLayout`: Set up OMR template layout - modify your json file and run again until the template is set.\n\n`--inputDir`: Specify an input directory.\n\n`--outputDir`: Specify an output directory.\n\n\u003cdetails\u003e\n\u003csummary\u003e\n \u003cb\u003eDeprecation logs\u003c/b\u003e\n\u003c/summary\u003e\n\n- The old `--noCropping` flag has been replaced with the 'CropPage' plugin in \"preProcessors\" of the template.json(see [samples](https://github.com/Udayraj123/OMRChecker/tree/master/samples)).\n- The `--autoAlign` flag is deprecated due to low performance on a generic OMR sheet\n- The `--template` flag is deprecated and instead it's recommended to keep the template file at the parent folder containing folders of different images\n\u003c/details\u003e\n\n\u003c!-- #### Testing the code\nDatasets to test on :\nLow Quality Dataset(For CV Based methods)) (1.5 GB)\nStandard Quality Dataset(For ML Based methods) (3 GB)\nHigh Quality Dataset(For custom processing) (6 GB)\n--\u003e\n\n## FAQ\n\n\u003cdetails\u003e\n\u003csummary\u003e\n\u003cb\u003eWhy is this software free?\u003c/b\u003e\n\u003c/summary\u003e\n\nThis project was born out of a student-led organization called as [Technothlon](https://technothlon.techniche.org.in). 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.\n\nWe 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!\n\n[![Open Source](https://badges.frapsoft.com/os/v1/open-source.svg?v=103)](https://github.com/ellerbrock/open-source-badges/)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\n\u003cb\u003eCan I use this code in my (public) work?\u003c/b\u003e\n\u003c/summary\u003e\n\nOMRChecker can be forked and modified. You are encouraged to play with it and we would love to see your own projects in action!\n\nIt is published under the [MIT license](https://github.com/Udayraj123/OMRChecker/blob/master/LICENSE).\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\n\u003cb\u003eWhat are the ways to contribute?\u003c/b\u003e\n\u003c/summary\u003e\n\n\u003c!-- - Help OMRChecker reach more people by giving a star! The Goal is to reach top position for the [OMR Topic](https://github.com/topics/omr) --\u003e\n\n- Join the developer community on [Discord](https://discord.gg/qFv2Vqf) to fix [issues](https://github.com/Udayraj123/OMRChecker/issues) with OMRChecker.\n\n- If this project saved you large costs on OMR Software licenses, or saved efforts to make one. Consider donating an amount of your choice(donate section).\n\n\u003c!-- ![☕](https://miro.medium.com/fit/c/256/256/1*br7aoq_JVfxeg73x5tF_Sw.png) --\u003e\n\u003c!-- [![paypal.me](https://www.paypalobjects.com/en_GB/i/btn/btn_donate_SM.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=Z5BNNK7AVFVH8\u0026source=url) --\u003e\n\u003c!-- https://www.amazon.in/hz/wishlist/ls/3V0TDQBI3T8IL --\u003e\n\n\u003c/details\u003e\n\n## Credits\n\n_A Huge thanks to:_\n_**Adrian Rosebrock** for his exemplary blog:_ https://pyimagesearch.com\n\n_**Harrison Kinsley** aka sentdex for his [video tutorials](https://www.youtube.com/watch?v=Z78zbnLlPUA\u0026list=PLQVvvaa0QuDdttJXlLtAJxJetJcqmqlQq) and many other resources._\n\n_**Satya Mallic** for his resourceful blog:_ https://www.learnopencv.com\n\n_And to other amazing people from all over the globe who've made significant improvements in this project._\n\n_Thank you!_\n\n\u003c!--\nOpencV\nmatplotlib\nsome SO answers from roughworks\nprof\n--\u003e\n\n## Related Projects\n\nHere's a snapshot of the [Android OMR Helper App (archived)](https://github.com/Udayraj123/AndroidOMRHelper):\n\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://github.com/Udayraj123/AndroidOMRHelper\"\u003e\n\t\t\u003cimg height=\"300\" src=\"https://raw.githubusercontent.com/wiki/Udayraj123/OMRChecker/extras/Progress/2019-04-26/images/app_flow.PNG\"\u003e\n\t\u003c/a\u003e\n\u003c/p\u003e\n\n## Stargazers over time\n\n[![Stargazers over time](https://starchart.cc/Udayraj123/OMRChecker.svg)](https://starchart.cc/Udayraj123/OMRChecker)\n\n---\n\n\u003ch2 align=\"center\"\u003eMade with ❤️ by Awesome Contributors\u003c/h2\u003e\n\n\u003ca href=\"https://github.com/Udayraj123/OMRChecker/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=Udayraj123/OMRChecker\" /\u003e\n\u003c/a\u003e\n\n---\n\n### License\n\n[![GitHub license](https://img.shields.io/github/license/Udayraj123/OMRChecker.svg)](https://github.com/Udayraj123/OMRChecker/blob/master/LICENSE)\n\nFor more details see [LICENSE](https://github.com/Udayraj123/OMRChecker/blob/master/LICENSE).\n\n### Donate\n\n\u003ca href=\"https://www.buymeacoffee.com/Udayraj123\" target=\"_blank\"\u003e\u003cimg src=\"https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png\" alt=\"Buy Me A Coffee\" style=\"height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;\" \u003e\u003c/a\u003e [![paypal](https://www.paypalobjects.com/en_GB/i/btn/btn_donate_LG.gif)](https://www.paypal.me/Udayraj123/500)\n\n_Find OMRChecker on_ [**_Product Hunt_**](https://www.producthunt.com/posts/omr-checker/) **|** [**_Reddit_**](https://www.reddit.com/r/computervision/comments/ccbj6f/omrchecker_grade_exams_using_python_and_opencv/) **|** [**Discord**](https://discord.gg/qFv2Vqf) **|** [**Linkedin**](https://www.linkedin.com/pulse/open-source-talks-udayraj-udayraj-deshmukh/) **|** [**goodfirstissue.dev**](https://goodfirstissue.dev/language/python) **|** [**codepeak.tech**](https://www.codepeak.tech/) **|** [**fossoverflow.dev**](https://fossoverflow.dev/projects) **|** [**Interview on Console by CodeSee**](https://console.substack.com/p/console-140) **|** [**Open Source Hub**](https://opensourcehub.io/udayraj123/omrchecker)\n\n \u003c!-- [***Hacker News***](https://news.ycombinator.com/item?id=20420602) **|** --\u003e\n \u003c!-- **|** [***Swyya***](https://www.swyya.com/projects/omrchecker) --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FUdayraj123%2FOMRChecker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FUdayraj123%2FOMRChecker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FUdayraj123%2FOMRChecker/lists"}