סקירת תכונות
סקירת תכונות
Aspose.OMR קוד פתוח חופשי עבור Python מכסה שלושה שכבות: תכנון תבנית, יצירת תמונת עמוד ותיאור ממנו, והכרת סימנים מעותק סרוק.
תכנון תבנית
תבנית היא עץ של תצורות אלמנטים שמושרש ב-TemplateConfig. אלמנטים של שאלות כוללים ChoiceBoxConfig (בועות אפשרות קבועות), CheckBoxConfig (תיבות סימון עם כל סימן), GridConfig ו-CompositeGridConfig (מטריצות ספרות/סמלים ממוזגות לערך אחד), ו-AnswerSheetConfig (מטריצות בועות תשובה ממוספרות). מכולות פריסת (BlockConfig, ContainerConfig, PositionedBlockConfig) שולטות בגבולות, בעמודות ובמיקום מוחלט. ניתן לבנות את העץ עצמו משפת DSL קומפקטית של סימון טקסט במקום אובייקטים של Python.
Generation
OmrEngine.Generate() ממיר תבנית ל-GenerationResult — תמונת עמוד בתוספת מתאר .omr של JSON. MemoryGenerationResult חשוף את אותו פלט כזרמים בזיכרון באמצעות GetImages()/GetOmr() עבור קוראים שאינם רוצים לגעת במערכת הקבצים.
Recognition
TemplateProcessor.Recognize() קורא תמונה סרוקה אחת מול התבנית שנוצר ממנה. RecognizeFolder() מבצע עיבוד קבוצתי על כל תמונה בתיקייה. Recalculate() מחשב מחדש דירוג של תוצאה שכבר זוהתה בעזרת סף שונה מבלי לקרוא מחדש את תמונת המקור. תיקון הסטייה משתמש בסימני ייחוס בפינות (ReferencePointsSettings).
ייצוא תוצאה
RecognitionResult מייצא ל-CSV, JSON, או XML, כאשר לכל אחד יש גרסת זרם בזיכרון תואמת (GetCsvAsStream, GetJsonAsStream, GetXmlAsStream).
Enums של מערכת כתיבה והצפה
Arabic, Hebrew, Persian, Urdu, ו-Bengali מערכות כתיבה (לצד Western), וה-enums LongWordHandling/OverflowAction, קיימים ומפורשים כראוי ל-דיוק API עם משטח Aspose.OMR. אף אחד מהם עדיין לא מכובד על-ידי מנוע הרינדור של גרסה זו — הרינדור הוא רק LTR/Western, והתנהגות ההצפה עדיין לא ניתנת להגדרה. שניהם נעקבים במפת הדרכים של המקור.
טיפים ושיטות עבודה מומלצות
- השתמש ב-DSL של סימון עבור טפסים פשוטים; עבור לעץ
TemplateConfigמבוסס-קוד כאשר אתה צריך שליטה פרוגרמטית על מיקום האלמנטים. FormValidationLogic.Exceptionמציג הפרות של בחירה מרובה מיד במקום להתעלם מהן בשקט, עבור שאלות שבהן בחירה מרובה מושבתת.- העדף
RecognizeFolder()על פני לולאה של קריאותRecognize()בעצמך בעת עיבוד אצווה של סריקות. - קרא ל-
Recalculate()במקום לסרוק מחדש כאשר אתה צריך רק לנסות סף זיהוי שונה.
בעיות נפוצות
| בעיה | סיבה | תיקון |
|---|---|---|
SaveAsPdf() מעלה NotImplementedError | ייצוא PDF אינו מיושם בגרסה זו | השתמש ב-Save() לפלט PNG, או ייצא תוצאות זיהוי כ-CSV/JSON/XML |
| תשובת בחירה מרובה שאינה מורשית מתקבלת בשקט | ברירת המחדל של FormValidationLogic.Ignore אינה מעלה על הפרות | העבר FormValidationLogic.Exception ל-GetTemplateProcessor(), והבטח שה-Multiselect של השאלה מושבת |
FAQ
האם הספרייה דורשת ממשק משתמש גרפי (GUI) או חומרת OMR חיצונית?
לא. היא פועלת באופן מלא מקבצי תמונה (סריקות או תמונות) באמצעות numpy, opencv-python ו-Pillow.
האם אני יכול ליצור קובץ PDF של התבנית?
לא במוצא זה — GenerationResult.SaveAsPdf() ו-MemoryGenerationResult.GetPDF() משגרים גם NotImplementedError. השתמש בפלט PNG מ-Save()/GetImages() במקום.
איך אני מעבד הרבה טפסים סרוקים בבת אחת?
השתמש ב-TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) כדי לזהות כל תמונה בתיקייה בקריאה אחת.
API Reference סיכום
| מחלקה/מתודה | תיאור |
|---|---|
OmrEngine.Generate | מציג תבנית כתמונת עמוד + .omr מתאר |
OmrEngine.GetTemplateProcessor | טוען .omr מתאר לזיהוי |
TemplateProcessor.Recognize | מזהה תמונה סרוקה אחת |
TemplateProcessor.RecognizeFolder | מזהה כל תמונה בתיקייה |
TemplateProcessor.Recalculate | מחשב מחדש ניקוד של תוצאה עם סף חדש |
RecognitionResult.GetCsv / GetJson / GetXml | מייצא תוצאות זיהוי |