Skip to content

Add NEET OMR sample and template (180 questions)#287

Draft
Rugvedrc wants to merge 3 commits into
Udayraj123:masterfrom
Rugvedrc:master
Draft

Add NEET OMR sample and template (180 questions)#287
Rugvedrc wants to merge 3 commits into
Udayraj123:masterfrom
Rugvedrc:master

Conversation

@Rugvedrc
Copy link
Copy Markdown

@Rugvedrc Rugvedrc commented May 8, 2026

Closes #40

Added NEET OMR Sample

  • Blank NEET OMR sheet (1238x1688px)
  • 180 questions, 5 columns of 36 questions each
  • Options 1-2-3-4 (QTYPE_MCQ4 format)
  • Verified: zero false positives on blank sheet
  • bubblesGap: 43, labelsGap: 20.51

Copilot AI review requested due to automatic review settings May 8, 2026 07:40
@qodo-free-for-open-source-projects
Copy link
Copy Markdown

Review Summary by Qodo

Add NEET OMR template with 180 questions

✨ Enhancement

Grey Divider

Walkthroughs

Description
• Add NEET OMR template with 180 questions
• Configure 5-column layout with MCQ4 format
• Set bubble and label spacing parameters
• Define question labels q1 through q180
Diagram
flowchart LR
  A["NEET OMR Template"] --> B["5 Columns"]
  B --> C["Col1: q1-q36"]
  B --> D["Col2: q37-q72"]
  B --> E["Col3: q73-q108"]
  B --> F["Col4: q109-q144"]
  B --> G["Col5: q145-q180"]
  C --> H["MCQ4 Format"]
  D --> H
  E --> H
  F --> H
  G --> H
  H --> I["Bubble Gap: 43"]
  H --> J["Label Gap: 20.51"]
Loading

Grey Divider

File Changes

1. samples/community/Rugvedrc/template.json ⚙️ Configuration changes +57/-0

NEET OMR template configuration

• Created NEET OMR template configuration file
• Defined page dimensions as 1238x1688 pixels
• Configured 5 field blocks (Col1-Col5) with MCQ4 question type
• Set consistent bubble dimensions (22x22) and spacing parameters
• Mapped 180 questions across 5 columns with 36 questions each

samples/community/Rugvedrc/template.json


Grey Divider

Qodo Logo

@qodo-free-for-open-source-projects
Copy link
Copy Markdown

qodo-free-for-open-source-projects Bot commented May 8, 2026

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (0) 📎 Requirement gaps (1)

Grey Divider


Action required

1. No usage rights for NEET image 📎 Requirement gap ⛨ Security
Description
The PR adds a community sample template without any accompanying statement or evidence that the
related OMR sheet image is publicly usable. This creates legal/licensing risk and violates the
requirement that contributed OMR images have explicit public-usage rights.
Code

samples/community/Rugvedrc/template.json[R1-57]

+{
+    "pageDimensions": [1238, 1688],
+    "bubbleDimensions": [22, 22],
+    "preProcessors": [],
+    "fieldBlocks": {
+        "Col1": {
+            "fieldType": "QTYPE_MCQ4",
+            "origin": [136, 813],
+            "bubblesGap": 43,
+            "labelsGap": 20.51,
+            "fieldLabels": ["q1","q2","q3","q4","q5","q6","q7","q8","q9","q10",
+                "q11","q12","q13","q14","q15","q16","q17","q18","q19","q20",
+                "q21","q22","q23","q24","q25","q26","q27","q28","q29","q30",
+                "q31","q32","q33","q34","q35","q36"]
+        },
+        "Col2": {
+            "fieldType": "QTYPE_MCQ4",
+            "origin": [354, 813],
+            "bubblesGap": 43,
+            "labelsGap": 20.51,
+            "fieldLabels": ["q37","q38","q39","q40","q41","q42","q43","q44","q45","q46",
+                "q47","q48","q49","q50","q51","q52","q53","q54","q55","q56",
+                "q57","q58","q59","q60","q61","q62","q63","q64","q65","q66",
+                "q67","q68","q69","q70","q71","q72"]
+        },
+        "Col3": {
+            "fieldType": "QTYPE_MCQ4",
+            "origin": [571, 813],
+            "bubblesGap": 43,
+            "labelsGap": 20.51,
+            "fieldLabels": ["q73","q74","q75","q76","q77","q78","q79","q80","q81","q82",
+                "q83","q84","q85","q86","q87","q88","q89","q90","q91","q92",
+                "q93","q94","q95","q96","q97","q98","q99","q100","q101","q102",
+                "q103","q104","q105","q106","q107","q108"]
+        },
+        "Col4": {
+            "fieldType": "QTYPE_MCQ4",
+            "origin": [788, 813],
+            "bubblesGap": 43,
+            "labelsGap": 20.51,
+            "fieldLabels": ["q109","q110","q111","q112","q113","q114","q115","q116","q117","q118",
+                "q119","q120","q121","q122","q123","q124","q125","q126","q127","q128",
+                "q129","q130","q131","q132","q133","q134","q135","q136","q137","q138",
+                "q139","q140","q141","q142","q143","q144"]
+        },
+        "Col5": {
+            "fieldType": "QTYPE_MCQ4",
+            "origin": [1005, 813],
+            "bubblesGap": 43,
+            "labelsGap": 20.51,
+            "fieldLabels": ["q145","q146","q147","q148","q149","q150","q151","q152","q153","q154",
+                "q155","q156","q157","q158","q159","q160","q161","q162","q163","q164",
+                "q165","q166","q167","q168","q169","q170","q171","q172","q173","q174",
+                "q175","q176","q177","q178","q179","q180"]
+        }
+    }
+}
Evidence
PR Compliance ID 1 requires submitted OMR sheet images to have explicit public-usage rights. The
only added content shown in the PR is a template.json with layout data and no licensing/permission
statement for the associated sample assets, so usage rights are not evidenced in the contribution.

Submit publicly usable OMR sheet image(s)
samples/community/Rugvedrc/template.json[1-57]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The community sample contribution does not include any explicit permission/license statement indicating the NEET OMR sheet image is publicly usable.
## Issue Context
PR Compliance ID 1 requires that contributed OMR sheet image(s) have clear public-usage rights (public domain, permissive license, or explicit permission).
## Fix Focus Areas
- samples/community/Rugvedrc/template.json[1-57]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Advisory comments

2. Missing EOF newline 🐞 Bug ⚙ Maintainability
Description
The newly added JSON file does not end with a trailing newline, which can create noisy diffs and
trigger tooling warnings in some environments.
Code

samples/community/Rugvedrc/template.json[57]

+}
Evidence
The PR diff explicitly indicates the file is missing the final newline character at EOF.

samples/community/Rugvedrc/template.json[57-57]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`samples/community/Rugvedrc/template.json` is missing a trailing newline at end-of-file.
### Issue Context
The PR diff shows `\ No newline at end of file` for this file.
### Fix Focus Areas
- samples/community/Rugvedrc/template.json[57-57]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Verbose fieldLabels lists ✓ Resolved 🐞 Bug ⚙ Maintainability
Description
The template enumerates every question label (q1…q180) explicitly, making it harder to audit and
easier to introduce mistakes when editing; the codebase supports compact range syntax for field
labels.
Code

samples/community/Rugvedrc/template.json[R11-14]

+            "fieldLabels": ["q1","q2","q3","q4","q5","q6","q7","q8","q9","q10",
+                "q11","q12","q13","q14","q15","q16","q17","q18","q19","q20",
+                "q21","q22","q23","q24","q25","q26","q27","q28","q29","q30",
+                "q31","q32","q33","q34","q35","q36"]
Evidence
Field labels are parsed via parse_fields(...), which expands range strings like q1..36 into
individual labels; other sample templates already use this compact format for MCQ blocks.

samples/community/Rugvedrc/template.json[11-14]
src/template.py[233-247]
src/utils/parsing.py[71-101]
samples/community/UPSC-mock/template.json[63-74]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The new template lists all question labels individually; the repo supports range expressions (e.g., `q1..36`) which are expanded during parsing.
### Issue Context
`FieldBlock` uses `parse_fields(...)` on `fieldLabels`, and `parse_field_string(...)` expands `qX..Y` ranges.
### Fix Focus Areas
- samples/community/Rugvedrc/template.json[11-54]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

Comment on lines +1 to +57
{
"pageDimensions": [1238, 1688],
"bubbleDimensions": [22, 22],
"preProcessors": [],
"fieldBlocks": {
"Col1": {
"fieldType": "QTYPE_MCQ4",
"origin": [136, 813],
"bubblesGap": 43,
"labelsGap": 20.51,
"fieldLabels": ["q1","q2","q3","q4","q5","q6","q7","q8","q9","q10",
"q11","q12","q13","q14","q15","q16","q17","q18","q19","q20",
"q21","q22","q23","q24","q25","q26","q27","q28","q29","q30",
"q31","q32","q33","q34","q35","q36"]
},
"Col2": {
"fieldType": "QTYPE_MCQ4",
"origin": [354, 813],
"bubblesGap": 43,
"labelsGap": 20.51,
"fieldLabels": ["q37","q38","q39","q40","q41","q42","q43","q44","q45","q46",
"q47","q48","q49","q50","q51","q52","q53","q54","q55","q56",
"q57","q58","q59","q60","q61","q62","q63","q64","q65","q66",
"q67","q68","q69","q70","q71","q72"]
},
"Col3": {
"fieldType": "QTYPE_MCQ4",
"origin": [571, 813],
"bubblesGap": 43,
"labelsGap": 20.51,
"fieldLabels": ["q73","q74","q75","q76","q77","q78","q79","q80","q81","q82",
"q83","q84","q85","q86","q87","q88","q89","q90","q91","q92",
"q93","q94","q95","q96","q97","q98","q99","q100","q101","q102",
"q103","q104","q105","q106","q107","q108"]
},
"Col4": {
"fieldType": "QTYPE_MCQ4",
"origin": [788, 813],
"bubblesGap": 43,
"labelsGap": 20.51,
"fieldLabels": ["q109","q110","q111","q112","q113","q114","q115","q116","q117","q118",
"q119","q120","q121","q122","q123","q124","q125","q126","q127","q128",
"q129","q130","q131","q132","q133","q134","q135","q136","q137","q138",
"q139","q140","q141","q142","q143","q144"]
},
"Col5": {
"fieldType": "QTYPE_MCQ4",
"origin": [1005, 813],
"bubblesGap": 43,
"labelsGap": 20.51,
"fieldLabels": ["q145","q146","q147","q148","q149","q150","q151","q152","q153","q154",
"q155","q156","q157","q158","q159","q160","q161","q162","q163","q164",
"q165","q166","q167","q168","q169","q170","q171","q172","q173","q174",
"q175","q176","q177","q178","q179","q180"]
}
}
} No newline at end of file
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. No usage rights for neet image 📎 Requirement gap ⛨ Security

The PR adds a community sample template without any accompanying statement or evidence that the
related OMR sheet image is publicly usable. This creates legal/licensing risk and violates the
requirement that contributed OMR images have explicit public-usage rights.
Agent Prompt
## Issue description
The community sample contribution does not include any explicit permission/license statement indicating the NEET OMR sheet image is publicly usable.

## Issue Context
PR Compliance ID 1 requires that contributed OMR sheet image(s) have clear public-usage rights (public domain, permissive license, or explicit permission).

## Fix Focus Areas
- samples/community/Rugvedrc/template.json[1-57]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new NEET-style (180-question, 5-column) OMR template under samples/community, supporting the community samples collection and closing issue #40.

Changes:

  • Introduces a NEET OMR template.json targeting a 1238×1688 sheet with 5 MCQ4 columns (36 questions each).
  • Defines per-column origins and consistent bubblesGap / labelsGap values for 180 question fields.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +11 to +54
"fieldLabels": ["q1","q2","q3","q4","q5","q6","q7","q8","q9","q10",
"q11","q12","q13","q14","q15","q16","q17","q18","q19","q20",
"q21","q22","q23","q24","q25","q26","q27","q28","q29","q30",
"q31","q32","q33","q34","q35","q36"]
},
"Col2": {
"fieldType": "QTYPE_MCQ4",
"origin": [354, 813],
"bubblesGap": 43,
"labelsGap": 20.51,
"fieldLabels": ["q37","q38","q39","q40","q41","q42","q43","q44","q45","q46",
"q47","q48","q49","q50","q51","q52","q53","q54","q55","q56",
"q57","q58","q59","q60","q61","q62","q63","q64","q65","q66",
"q67","q68","q69","q70","q71","q72"]
},
"Col3": {
"fieldType": "QTYPE_MCQ4",
"origin": [571, 813],
"bubblesGap": 43,
"labelsGap": 20.51,
"fieldLabels": ["q73","q74","q75","q76","q77","q78","q79","q80","q81","q82",
"q83","q84","q85","q86","q87","q88","q89","q90","q91","q92",
"q93","q94","q95","q96","q97","q98","q99","q100","q101","q102",
"q103","q104","q105","q106","q107","q108"]
},
"Col4": {
"fieldType": "QTYPE_MCQ4",
"origin": [788, 813],
"bubblesGap": 43,
"labelsGap": 20.51,
"fieldLabels": ["q109","q110","q111","q112","q113","q114","q115","q116","q117","q118",
"q119","q120","q121","q122","q123","q124","q125","q126","q127","q128",
"q129","q130","q131","q132","q133","q134","q135","q136","q137","q138",
"q139","q140","q141","q142","q143","q144"]
},
"Col5": {
"fieldType": "QTYPE_MCQ4",
"origin": [1005, 813],
"bubblesGap": 43,
"labelsGap": 20.51,
"fieldLabels": ["q145","q146","q147","q148","q149","q150","q151","q152","q153","q154",
"q155","q156","q157","q158","q159","q160","q161","q162","q163","q164",
"q165","q166","q167","q168","q169","q170","q171","q172","q173","q174",
"q175","q176","q177","q178","q179","q180"]
@Rugvedrc
Copy link
Copy Markdown
Author

Rugvedrc commented May 8, 2026

The OMR sheet image (neet_omr_sample.jpg) is a blank/generic NEET-style
OMR template created for practice purposes. It contains no personal data,
no candidate information, and is not sourced from any official NTA document.
It is a publicly shareable blank practice sheet.

@Rugvedrc
Copy link
Copy Markdown
Author

Rugvedrc commented May 8, 2026

Image source: https://github.com/barika001/Medical-Entrance-Exams-Study-Material/blob/main/NEET%20OMR.pdf

The OMR sheet image is taken from a public GitHub repository under open access.
It is a blank NEET practice sheet with no personal/candidate data.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd appreciate if you provide a manually scanned sample containing marked bubbles. That way it'll show that OMRChecker is working correctly for the sample.

@Udayraj123
Copy link
Copy Markdown
Owner

@Rugvedrc bump to update the sample image. Marking PR as draft for now.

@Udayraj123 Udayraj123 marked this pull request as draft May 29, 2026 06:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Beginner][Getting Familiar] Submit your sample image and template!

3 participants