הליבה API

הליבה API

omr.api היא המשטח הקטן שהקוד רובו מתקשר איתו: OmrEngine, TemplateProcessor, ImageCollection, וה-enum FormValidationLogic.


OmrEngine

OmrEngine היא מפעל ללא מצב. Generate(source, settings) מקבל מקור markup-DSL או עץ TemplateConfig ומחזיר GenerationResult. GetTemplateProcessor(templateSource, validationLogic) טוען נתיב קובץ .omr שנשמר בעבר ומחזיר TemplateProcessor קשור; מקור זרם במקום זאת מקבל ארגומנט קידוד-טקסט לפני לוגיקת האימות.

from omr.api import OmrEngine, FormValidationLogic

engine = OmrEngine()
gen = engine.Generate("final-exam.txt")
gen.Save("out", "final-exam")
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Ignore)

FormValidationLogic

שולט בהתנהגות המנוע כאשר כלל אימות תבנית — כגון מגבלה של בחירה מרובה — נשבר במהלך זיהוי: Ignore (ברירת מחדל) מקבל את ההפרה בשקט, Exception זורק שגיאה, ו-undefined הוא ערך האפס של ה-enum. הבדיקה חלה רק על שאלות שה-Multiselect שלהן מושבת; GlobalPageSettings.Multiselect ברירת המחדל היא מופעלת.

TemplateProcessor

Recognize(source, recognitionThreshold) מזהה תמונה סרוקה אחת. RecognizeFolder(folderPath, recognitionThreshold) מזהה כל תמונה בתיקייה בפנייה אחת. Recalculate(result, recognitionThreshold) מחזיר דירוג מחדש לתוצאה שכבר זוהתה עם סף שונה, מבלי לקרוא מחדש את תמונת המקור.

ImageCollection

מפה להוספה בלבד, רגישת רישיות, ממפה שם לבייטים גולמיים של תמונה. Add(name, image) רושמת תמונה, Contains(name) בודקת אם שם כבר רשום, Count מדווחת כמה נרשמו, ו-as_dict() מחזירה את המפה התחתית. סימון יכול להתייחס לתמונה רשומה בשם (?image=<name>) במקום בנתיב מערכת קבצים.

from omr.api import ImageCollection

images = ImageCollection()
with open("logo.png", "rb") as f:
    images.Add("logo.png", f.read())

טיפים ושיטות מומלצות

  • העבירו FormValidationLogic.Exception במהלך הפיתוח כדי לחשוף הפרות בחירה מרובה מיידית במקום להתעלם מהן בשקט (מתרחש רק עבור שאלות עם Multiselect מושבת).
  • Recalculate() זול יותר מאיבחון מחדש — השתמשו בו כאשר רק סף הזיהוי צריך להשתנות.
  • שמות ImageCollection רגישים לרישיות; רישום של אותו שם פעמיים גורם לשגיאה במקום לדרוס בשקט.
  • Generate() מדווחת על רוב הכשלים דרך GenerationResult.ErrorCode/ErrorMessage במקום לזרוק שגיאה — בדקו את ErrorCode לפני שאתם סומכים על תוצאה שנוצרה.

בעיות נפוצות

בעיהסיבהתיקון
רישום תמונה פעמיים גורם לImageCollection.Add אינו מאפשר שמות משוכפליםבדוק את Contains(name) תחילה, או השתמש בשם ייחודי לכל תמונה
תשובה מרובה-בחירה שאינה מותרת מתקבלת בשקטברירת המחדל של FormValidationLogic.Ignore אינה גורמת לשגיאההעבר FormValidationLogic.Exception אל GetTemplateProcessor(), וודא שה-Multiselect של השאלה מושבת

FAQ

האם OmrEngine בטוח לשימוש חוזר במספר תבניות?

כן — הוא חסר מצב; כל קריאה של Generate()/GetTemplateProcessor() היא עצמאית.

איך אני מזהה תיקייה שלמה של סריקות בבת אחת?

קרא ל-TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) במקום לבצע לולאה על Recognize() בעצמך.


סיכום API Reference

מחלקה/מתודהתיאור
OmrEngine.Generateמממש תבנית לתמונת עמוד + מתאר .omr
OmrEngine.GetTemplateProcessorטוען מתאר .omr לזיהוי
TemplateProcessor.Recognize / RecognizeFolder / Recalculateנקודות כניסה לזיהוי
ImageCollection.Add / Contains / as_dictמאגר תמונות בזיכרון עבור סימון
FormValidationLogicEnum של התנהגות הפרת אימות

ראה גם

 עברית