كيفية العمل مع نموذج OMR في Python
يحتوي RecognitionResult على IOmrElement واحد لكل سؤال تم التعرف عليه. يوضح هذا الدليل كيفية قراءة وتصدير الإجابات التي تم التعرف عليها.
دليل خطوة بخطوة
الخطوة 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()
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Ignore)
result = processor.Recognize("scan.png")الخطوة 4: قراءة الإجابات الفردية
كل إدخال في result.OmrElements يُنفّذ IOmrElement: QuestionName يحدد السؤال، وGetAnswer() يُعيد قيمته المعترف بها (سلسلة فارغة إذا لم يتجاوز شيء عتبة التعرف).
for element in result.OmrElements:
print(element.QuestionName, element.GetAnswer())الخطوة 5: تصدير النتيجة الكاملة
print(result.GetCsv()) # also GetJson() / GetXml()المشكلات الشائعة والحلول
GetAnswer() يرجع سلسلة فارغة للعلامة التي أستطيع رؤيتها بوضوح على المسح. قد تكون عتبة التعرف صارمة جدًا بالنسبة لظلام تلك العلامة. تخطي -100 to Recognize() للمعايرة التلقائية، أو استدعِ Recalculate() مع عتبة أقل صرامة على النتيجة الحالية.
أحتاج إلى بيانات الإجابة الخام بصيغة غير CSV/JSON/XML. Iterate result.OmrElements نفسك وقم بإنشاء أي بنية تحتاجها من كلٍّ IOmrElement’s GetAnswer()/GetCsv().
الأسئلة المتكررة
هل يقوم Recalculate() بإعادة قراءة الصورة الممسوحة ضوئيًا؟
لا — يقوم بإعادة تقييم النتيجة التي تم التعرف عليها بالفعل في مكانها باستخدام حد جديد.
ماذا يمثل QuestionName؟
الـ Name التي قمت بتعيينها على عنصر القالب (مثل AnswerSheetConfig.Name أو ChoiceBoxConfig.Name) هي العلامة التي تم التعرف عليها لهذا العنصر.
هل يمكنني تصدير بعض العناصر فقط بدلاً من النتيجة الكاملة؟
طرق التصدير الخاصة بـ RecognitionResult تغطي النتيجة بالكامل؛ قم بتصفية OmrElements بنفسك أولاً إذا كنت بحاجة إلى مجموعة فرعية.