পাইথন ব্যবহার করে স্ক্যান করা শিট থেকে চিহ্নিত এলাকা সনাক্ত ও বের করুন
ওপেন সোর্স ফ্রি পাইথন-ভিত্তিক OMR ইঞ্জিন যা OMR প্রক্রিয়াকরণকে সমর্থন করে। এটি OMR শিট প্রক্রিয়াকরণ, টেমপ্লেট-ভিত্তিক সনাক্তকরণ এবং বহু-পৃষ্ঠার ফর্ম হ্যান্ডলিং ইত্যাদি সমর্থন করে।
PyOMR লাইব্রেরি কী?
অপটিক্যাল মার্ক রিকগনিশন (OMR) একটি শক্তিশালী প্রযুক্তি যা সার্ভে, টেস্ট এবং ভোটের মতো নথি থেকে মানব-চিহ্নিত ডেটা সংগ্রহ করতে ব্যবহৃত হয়। যদিও বাণিজ্যিক OMR সমাধান রয়েছে, তবে ফ্রি, ওপেন-সোর্স বিকল্প খুঁজছেন ডেভেলপাররা PyOMR ব্যবহার করতে পারেন, যা OMR প্রক্রিয়াকরণের জন্য ডিজাইন করা একটি পাইথন লাইব্রেরি। pattyjogal দ্বারা উন্নত, PyOMR সফটওয়্যার ডেভেলপারদের সহজ পাইথন কোড এবং স্ট্যান্ডার্ড ইমেজ প্রসেসিং টেকনিক ব্যবহার করে স্ক্যান করা ফর্মের চিহ্নিত বাবলগুলি সনাক্ত করতে সক্ষম করে। এটি স্ক্যান করা শীট থেকে চিহ্নিত এলাকা সনাক্ত ও বের করা, মাল্টিপল-চয়েস ফর্ম, সার্ভে এবং মূল্যায়ন প্রক্রিয়াকরণ, পাশাপাশি বিভিন্ন ব্যবহার ক্ষেত্রে OMR টেমপ্লেট কাস্টমাইজ করার সমর্থন প্রদান করে।
PyOMR হল একটি পাইথন-ভিত্তিক 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
পাইথন ব্যবহার করে স্বয়ংক্রিয় ইমেজ প্রিপ্রসেসিং
• ওপেন সোর্স PyOMR লাইব্রেরি পাইথন অ্যাপ্লিকেশনের মধ্যে স্বয়ংক্রিয় ইমেজ প্রক্রিয়াকরণের সম্পূর্ণ সমর্থন অন্তর্ভুক্ত করেছে। লাইব্রেরিতে ডেস্কিউইং (Tilted স্ক্যান সংশোধনের জন্য), থ্রেশহোল্ডিং (ব্ল্যাক ও হোয়াইটে রূপান্তর করে চিহ্ন সনাক্তকরণ উন্নত করার জন্য) এবং নয়েজ রিমুভাল (নিম্ন-গুণমানের স্ক্যানে নির্ভুলতা বাড়ানোর জন্য) এর মতো বিল্ট-ইন ফাংশন রয়েছে। এছাড়াও, এটি স্ক্যান করা ফর্মের সাধারণ সমস্যাগুলি যেমন আলোর অমিল, কম কনট্রাস্ট, বা সামান্য অ্যালাইনমেন্ট ত্রুটি মোকাবেলা করতে সক্ষম। নিম্নলিখিত কোড উদাহরণটি দেখায় কীভাবে পাইথন অ্যাপ্লিকেশনের মধ্যে ইমেজ প্রক্রিয়া করা যায়।
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'}")
পাইথন ব্যবহার করে টেমপ্লেট-ভিত্তিক সনাক্তকরণ
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")
পাইথন ব্যবহার করে বহু-পৃষ্ঠার ফর্ম হ্যান্ডলিং
PyOMR লাইব্রেরি পাইথন অ্যাপ্লিকেশনের মধ্যে মাল্টি-পেজ ফর্ম হ্যান্ডল করার জন্য সমর্থন অন্তর্ভুক্ত করেছে। একক-পেজ উত্তর শিট বা মাল্টি-পেজ সার্ভে প্রক্রিয়াকরণ যাই হোক, PyOMR বিভিন্ন লেআউট হ্যান্ডল করার জন্য কনফিগার করা যায়। মাল্টি-পেজ ফর্মের জন্য সুপারিশ করা হয়, প্রতিটি পেজ আলাদাভাবে প্রক্রিয়া করুন: নিম্নলিখিত কোড উদাহরণটি দেখায় কীভাবে সফটওয়্যার ডেভেলপাররা পাইথন অ্যাপ্লিকেশনের মধ্যে মাল্টি-পেজ ফর্ম হ্যান্ডল করতে পারেন।
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 লাইব্রেরি পাইথন অ্যাপ্লিকেশনের মধ্যে ইমেজ প্রি-প্রসেসিং এবং নয়েজ হ্যান্ডলিংয়ের সম্পূর্ণ সমর্থন প্রদান করেছে। লাইব্রেরিতে গ্রেস্কেল রূপান্তর, থ্রেশহোল্ডিং এবং কন্টুর ডিটেকশনের মতো ইমেজ প্রি-প্রসেসিং অন্তর্ভুক্ত রয়েছে, যা মার্কগুলোকে নির্ভরযোগ্যভাবে সনাক্ত করে—যদিও স্ক্যানগুলোতে নয়েজ থাকে বা প্রিন্টিং অপরিপূর্ণ হয়।