تشخیص و استخراج نواحی علامتدار از برگههای اسکنشده با پایتون
موتور OMR رایگان و متنباز مبتنی بر پایتون که از پردازش OMR پشتیبانی میکند. این موتور از پردازش برگههای OMR، تشخیص مبتنی بر قالب و مدیریت فرمهای چندصفحه و موارد مشابه پشتیبانی میکند.
PyOMR Librar چیست؟
تشخیص علامت نوری (OMR) یک فناوری قدرتمند است که برای استخراج دادههای علامتگذاریشده توسط انسان از اسنادی مانند نظرسنجیها، آزمونها و برگههای رأیگیری استفاده میشود. در حالی که راهحلهای تجاری OMR وجود دارند، توسعهدهندگانی که به دنبال یک جایگزین رایگان و متنباز هستند میتوانند از PyOMR، یک کتابخانه پایتون طراحیشده برای پردازش OMR، بهره ببرند. این کتابخانه که توسط pattyjogal توسعه یافته است، به برنامهنویسان امکان میدهد حبابهای علامتدار روی فرمهای اسکنشده را با استفاده از کد ساده پایتون و تکنیکهای استاندارد پردازش تصویر شناسایی کنند. این ابزار از شناسایی و استخراج نواحی علامتدار از صفحات اسکنشده، پردازش فرمهای چندگزینهای، نظرسنجیها و ارزیابیها و همچنین سفارشیسازی قالبهای OMR برای موارد استفاده مختلف پشتیبانی میکند.
PyOMR یک موتور OMR مبتنی بر پایتون است که برای تشخیص علامتهای پر شده در فرمهای از پیش تعریفشده، مانند برگههای تست MCQ یا پاسخهای نظرسنجی طراحی شده است. این موتور از کتابخانههایی مانند OpenCV برای پردازش تصویر استفاده میکند و سیستم مبتنی بر قالبی برای تعریف نواحی علامتگذاری مورد انتظار روی برگه فراهم میکند. چه شما یک توسعهدهنده نرمافزار باشید که یک سیستم نمرهدهی میسازد، یک معلم که ارزیابی تستها را خودکار میکند، یا یک سازمان که دادههای نظرسنجی جمعآوری میکند، PyOMR به شما امکان میدهد عملکرد OMR را مستقیماً در برنامه خود ادغام کنید. با رویکرد مبتنی بر قالب، تشخیص مبتنی بر OpenCV، و قابلیت اسکریپتنویسی کامل، این گزینهای ایدهآل برای توسعهدهندگانی است که میخواهند ابزارهای پردازش فرم خودکار بسازند بدون تکیه بر سرویسهای شخص ثالث.
شروع کار با PyOMR
روش پیشنهادی برای نصب کتابخانه PyOMR استفاده از GitHub است. لطفاً برای نصب روان از دستور زیر استفاده کنید
نصب کتابخانه PyOMR از طریق GitHub
git clone https://github.com/pattyjogal/pyomr.git
cd pyomr
نصب کتابخانههای پشتیبانیشده از طریق GitHub
pip install opencv-python numpy میتوانید کتابخانه را مستقیماً از GitHub دانلود کنید
پیشپردازش خودکار تصویر با پایتون
• کتابخانه منبع باز PyOMR پشتیبانی کامل از پردازش خودکار تصویر را در برنامههای پایتون فراهم کرده است. این کتابخانه شامل توابع داخلی برای اصلاح چرخش (Deskewing) به منظور تصحیح اسکنهای کج، آستانهگذاری (Thresholding) برای تبدیل به سیاه و سفید جهت تشخیص بهتر علامتها و حذف نویز برای بهبود دقت در اسکنهای با کیفیت پایین میباشد. علاوه بر این، این ابزار میتواند مشکلات رایج در فرمهای اسکنشده مانند ناهماهنگی نور، کنتراست پایین یا جابجایی جزئی را مدیریت کند. مثال کد زیر نشان میدهد چگونه میتوان تصاویر را در برنامههای پایتون پردازش کرد.
چگونه تصویر را داخل برنامههای پایتون پردازش کنیم؟
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 برای تعیین موقعیت حبابها ایجاد کنیم و آن را از طریق پایتون بارگذاری کنیم؟
{
"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 را برای مدیریت طرحهای مختلف پیکربندی کرد. برای فرمهای چندصفحهای توصیه میشود هر صفحه را بهصورت جداگانه پردازش کنید: مثال کد زیر نشان میدهد چگونه توسعهدهندگان نرمافزار میتوانند فرمهای چندصفحهای را در برنامههای پایتون مدیریت کنند.
چگونه فرمهای چندصفحهای را با استفاده از کتابخانه پایتون مدیریت کنیم؟
# 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 پشتیبانی کامل از پیشپردازش تصویر و حذف نویز را در برنامههای پایتون ارائه میدهد. این کتابخانه شامل پیشپردازش تصویری مانند تبدیل به مقیاس خاکستری، آستانهگذاری و تشخیص کانتور برای شناسایی دقیق علامتها است—حتی در اسکنهای پرنویز یا چاپهای ناقص.