הליבה 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 | מאגר תמונות בזיכרון עבור סימון |
FormValidationLogic | Enum של התנהגות הפרת אימות |