पायथन के माध्यम से स्कैन की गई शीट्स से चिह्नित क्षेत्रों का पता लगाएँ और निकालें
ओपन सोर्स मुफ्त पायथन-आधारित OMR इंजन जो OMR प्रोसेसिंग का समर्थन करता है। यह OMR शीट्स की प्रोसेसिंग, टेम्पलेट-आधारित डिटेक्शन और मल्टी-पेज फॉर्म्स को संभालने आदि का समर्थन करता है।
PyOMR लाइब्रेरी क्या है?
ऑप्टिकल मार्क रिकग्निशन (OMR) एक शक्तिशाली तकनीक है जो सर्वेक्षण, परीक्षण और मतदान जैसी दस्तावेज़ों से मानव-मार्क किए गए डेटा को कैप्चर करने के लिए उपयोग की जाती है। जबकि व्यावसायिक OMR समाधान उपलब्ध हैं, मुफ्त, ओपन-सोर्स विकल्प की तलाश करने वाले डेवलपर्स PyOMR का उपयोग कर सकते हैं, जो OMR प्रोसेसिंग के लिए डिज़ाइन की गई एक Python लाइब्रेरी है। pattyjogal द्वारा विकसित, PyOMR सॉफ़्टवेयर डेवलपर्स को सरल Python कोड और मानक इमेज प्रोसेसिंग तकनीकों का उपयोग करके स्कैन किए गए फ़ॉर्म पर मार्क किए गए बबल्स का पता लगाने में सक्षम बनाता है। यह स्कैन किए गए शीट्स से मार्क किए गए क्षेत्रों का पता लगाने और निकालने, मल्टीपल-चॉइस फ़ॉर्म, सर्वेक्षण और मूल्यांकन को प्रोसेस करने, तथा विभिन्न उपयोग मामलों के लिए OMR टेम्पलेट को कस्टमाइज़ करने का समर्थन करता है।
PyOMR एक Python-आधारित OMR इंजन है जो पूर्वनिर्धारित फ़ॉर्मों, जैसे MCQ टेस्ट शीट या सर्वे प्रतिक्रियाओं पर भरे गए चिह्नों का पता लगाने के लिए डिज़ाइन किया गया है। यह OpenCV जैसी लाइब्रेरीज़ का उपयोग इमेज प्रोसेसिंग के लिए करता है और शीट पर अपेक्षित चिह्न क्षेत्रों को परिभाषित करने के लिए टेम्पलेट-आधारित प्रणाली प्रदान करता है। चाहे आप एक सॉफ़्टवेयर डेवलपर हों जो ग्रेडिंग सिस्टम बना रहे हों, एक शिक्षक हों जो टेस्ट मूल्यांकन को स्वचालित कर रहे हों, या कोई संगठन जो सर्वे डेटा एकत्र कर रहा हो, PyOMR आपको OMR कार्यक्षमता को सीधे अपने ऐप में प्लग करने की अनुमति देता है। टेम्पलेट-आधारित दृष्टिकोण, OpenCV-समर्थित डिटेक्शन, और पूर्ण स्क्रिप्टेबिलिटी के साथ, यह उन डेवलपर्स के लिए आदर्श विकल्प है जो थर्ड-पार्टी सेवाओं पर निर्भर हुए बिना स्वचालित फ़ॉर्म प्रोसेसिंग टूल बनाना चाहते हैं।
PyOMR के साथ शुरूआत
PyOMR लाइब्रेरी को स्थापित करने का अनुशंसित तरीका GitHub का उपयोग करना है। सुगम स्थापना के लिए कृपया निम्न कमांड का उपयोग करें।
GitHub के माध्यम से PyOMR लाइब्रेरी स्थापित करें
git clone https://github.com/pattyjogal/pyomr.git
cd pyomr
GitHub के माध्यम से समर्थित लाइब्रेरी स्थापित करें
pip install opencv-python numpy आप लाइब्रेरी को सीधे GitHub से डाउनलोड कर सकते हैं।
Python के माध्यम से स्वचालित छवि पूर्व-प्रसंस्करण
• ओपन सोर्स PyOMR लाइब्रेरी ने पाइथन एप्लिकेशन के भीतर स्वचालित इमेज प्रोसेसिंग के लिए पूर्ण समर्थन शामिल किया है। लाइब्रेरी में डेस्क्यूइंग के लिए झुके हुए स्कैन को सुधारने, थ्रेशहोल्डिंग के लिए काली और सफेद में बदलने जिससे बेहतर मार्क डिटेक्शन हो और कम गुणवत्ता वाले स्कैन में शोर हटाने के लिए बिल्ट-इन फ़ंक्शन शामिल हैं। इसके अलावा, यह टूल स्कैन किए गए फ़ॉर्म में प्रकाश असंगतियों, कम कंट्रास्ट, या छोटे मिसअलाइनमेंट जैसी सामान्य समस्याओं को संभाल सकता है। निम्नलिखित कोड उदाहरण दिखाता है कि पाइथन एप्लिकेशन के भीतर इमेज को कैसे प्रोसेस किया जाए।
Python एप्लिकेशन में छवि को कैसे प्रोसेस करें?
from omr import omr_engine
# File paths
template_path = "config.json"
image_path = "answer_sheet.jpg"
# Run the OMR process
results = omr_engine.process_image(image_path, template_path)
# Output the results
for i, response in enumerate(results, 1):
print(f"Q{i}: {response if response else 'No mark detected'}")
Python के माध्यम से टेम्पलेट-आधारित पहचान
PyOMR एक JSON टेम्पलेट का उपयोग करता है ताकि आपके उत्तर शीट का लेआउट परिभाषित किया जा सके। इसमें प्रश्नों की संख्या, प्रत्येक प्रश्न के विकल्पों की संख्या, पहले बबल की प्रारंभिक स्थिति, पंक्तियों और स्तंभों के बीच अंतराल और बबल के आयाम शामिल हैं। यह सिस्टम को विभिन्न लेआउट्स में अत्यधिक लचीला और पुन: उपयोग योग्य बनाता है। यहाँ एक सरल उदाहरण है जो दिखाता है कि पाइथन लाइब्रेरी का उपयोग करके बबल स्थितियों को निर्दिष्ट करने के लिए JSON टेम्पलेट कैसे बनाया जाए।
बबल पोजीशन निर्दिष्ट करने के लिए JSON टेम्पलेट कैसे बनाएं और इसे Python के माध्यम से लोड करें?
{
"bubbles": [
{"question": "Q1", "options": ["A", "B", "C", "D"], "coords": [100, 150, 30, 30]},
{"question": "Q2", "options": ["A", "B", "C", "D"], "coords": [100, 200, 30, 30]}
],
"reference_marks": [[50, 50], [500, 50], [50, 700]]
}
#Load template
omr.load_template("template.json")
Python के माध्यम से मल्टी-पेज फ़ॉर्म संभालना
PyOMR लाइब्रेरी में Python एप्लिकेशन के भीतर मल्टी-पेज फ़ॉर्म को संभालने के लिए समर्थन शामिल है। चाहे सिंगल-पेज उत्तर शीट्स हों या मल्टी-पेज सर्वे, PyOMR को विभिन्न लेआउट को संभालने के लिए कॉन्फ़िगर किया जा सकता है। मल्टी-पेज फ़ॉर्म के लिए अनुशंसा की जाती है कि प्रत्येक पृष्ठ को अलग-अलग प्रोसेस किया जाए: निम्नलिखित कोड उदाहरण दिखाता है कि सॉफ़्टवेयर डेवलपर्स Python एप्लिकेशन के भीतर मल्टी-पेज फ़ॉर्म को कैसे संभाल सकते हैं।
Python लाइब्रेरी के माध्यम से मल्टी-पेज फॉर्म कैसे संभालें?
# for multi-page forms, process each page separately:
for page in omr.multi_page_scan("multi_page_form.pdf"):
page.preprocess()
answers = page.read_answers()
print(answers)
शोर संभालना और पूर्व-प्रसंस्करण
ओपन सोर्स PyOMR लाइब्रेरी ने Python एप्लिकेशन के भीतर इमेज प्रीप्रोसेसिंग और शोर प्रबंधन के लिए पूर्ण समर्थन प्रदान किया है। लाइब्रेरी में ग्रेस्केल रूपांतरण, थ्रेशहोल्डिंग, और कंटूर डिटेक्शन जैसी इमेज प्रीप्रोसेसिंग शामिल है, जिससे मार्क्स को विश्वसनीय रूप से पहचाना जा सके—भले ही स्कैन शोरयुक्त हों या प्रिंटिंग में त्रुटियां हों।