כיצד לעבוד עם API ב-Python
Aspose.OMR FOSS עבור Python הציבורי API (omr.api) הוא קטן במכוון: OmrEngine, TemplateProcessor, ImageCollection, ו-FormValidationLogic. מדריך זה מראה איך הם משתלבים יחד בתהליך של יצירה והכרה.
מדריך שלב-אחר-שלב
צעד 1: התקנת החבילה
git clone https://github.com/aspose-omr-foss/Aspose.OMR-FOSS-for-Python.git
cd Aspose.OMR-FOSS-for-Python
pip install -e .python -c "import omr; print('Aspose.OMR FOSS for Python is ready.')"צעד 2: ייבוא המחלקות הדרושות
from omr.api import OmrEngine, FormValidationLogicצעד 3: יצירה ושמירת תבנית
engine = OmrEngine()
gen = engine.Generate("final-exam.txt")
gen.Save("out", "final-exam")שלב 4: טען את התבנית לזיהוי
החלף את FormValidationLogic.Exception במקום Ignore ברירת המחדל אם אתה רוצה שהפרה תיווצר עבור שאלות שבהן בחירה מרובה מושבתת, במקום להתקבל בשקט.
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Exception)שלב 5: זיהוי וייצוא
result = processor.Recognize("scan.png")
print(result.GetCsv())בעיות נפוצות ופתרונות
FormValidationLogic.Exception לעולם לא נזרק, אפילו על שאלה מרובת סימונים. הבדיקה מתרחשת רק עבור שאלה עם Multiselect מושבת; GlobalPageSettings.Multiselect בברירת מחדל הוא מופעל, לכן יש לוודא שהוא מכובה במפורש עבור השאלה שאתה מצפה שתהיה בחירה יחידה.
אני צריך לזהות הרבה סריקות בבת אחת. השתמש ב TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) במקום לקרוא ל Recognize() בלולאה.
רשמתי תמונה תחת שם שכבר היה בשימוש. ImageCollection.Add אינו משכתב — בדוק Contains(name) קודם, או השתמש בשם ייחודי לכל תמונה.
שאלות נפוצות
האם OmrEngine בטוח לשימוש חוזר במגוון תבניות?
כן — הוא ללא מצב.
איך ניתן לחשב מחדש תוצאה עם סף שונה מבלי לבצע סריקה מחדש?
קרא ל-TemplateProcessor.Recalculate(result, recognitionThreshold).
איך ניתן לשלב תמונה בזיכרון לתוך סימון במקום לקרוא אותה מהדיסק?
רשום אותה עם ImageCollection.Add(name, image_bytes), ואז הפנה אליה בסימון כ-?image=<name>.