זיהוי והוצאת אזורים מסומנים מדפים סרוקים באמצעות פייתון
מנוע OMR חינמי וקוד פתוח מבוסס פייתון התומך בעיבוד OMR. הוא תומך בעיבוד דפי OMR, זיהוי מבוסס תבנית וטיפול בטפסים מרובי-דפים ועוד.
מהי ספריית PyOMR?
הזיהוי האופטי של סימונים (OMR) הוא טכנולוגיה חזקה המשמשת ללכידת נתונים שסומנו על ידי בני אדם ממסמכים כגון סקרים, מבחנים והצבעות. בעוד שיש פתרונות OMR מסחריים, מפתחים המחפשים חלופה חינמית וקוד פתוח יכולים לנצל את PyOMR, ספריית Python המיועדת לעיבוד OMR. פותחה על ידי pattyjogal, PyOMR מאפשרת למפתחי תוכנה לאתר בועות מסומנות בטפסים סרוקים באמצעות קוד Python פשוט וטכניקות עיבוד תמונה סטנדרטיות. היא תומכת בזיהוי והוצאת אזורים מסומנים משיטוטים סרוקים, בעיבוד טפסים רב-ברירת-חירה, סקרים והערכות וכן בהתאמת תבניות OMR למגוון מקרי שימוש.
PyOMR הוא מנוע OMR מבוסס פייתון שנועד לאתר סימונים ממולאים בטפסים מוגדרים מראש, כגון גיליונות מבחני בחירה מרובה או תגובות לסקרים. הוא משתמש בספריות כמו 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 כוללת תמיכה מלאה בעיבוד תמונה אוטומטי בתוך יישומי Python. הספרייה כוללת פונקציות מובנות לתיקון הטייה (Deskewing) לתיקון סריקות מוטות, סף (Thresholding) להמרה לשחור ולבן לשיפור זיהוי סימונים והסרת רעש לשיפור הדיוק בסריקות באיכות נמוכה. בנוסף, היא מאפשרת לכלי להתמודד עם בעיות נפוצות בטפסים סרוקים כגון חוסר עקביות בתאורה, ניגודיות נמוכה או יישור קל. דוגמת הקוד הבאה מציגה כיצד לעבד תמונות בתוך יישומי Python.
איך לעבד תמונה בתוך אפליקציות 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 לציון מיקומי הבועות באמצעות ספריית Python.
איך ליצור תבנית 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 כוללת תמיכה בטיפול בטפסים מרובי דפים בתוך יישומי 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. הספרייה כוללת קדם-עיבוד תמונות כגון המרת תמונה לגווני אפור, סף, וזיהוי קונטור כדי לזהות סימונים בצורה אמינה — גם בסריקות רועשות או הדפסה בלתי מושלמת.