نظرة عامة على الميزات

نظرة عامة على الميزات

نظرة عامة على الميزات

Aspose.OMR FOSS لـ 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).

أنظمة الكتابة وتعدادات التدفق الزائد

أنظمة الكتابة Arabic، Hebrew، Persian، Urdu، وBengali (بالإضافة إلى Western)، وتعدادات 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

هل تتطلب المكتبة أي واجهة رسومية أو أجهزة 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تصدير نتائج التعرف

انظر أيضاً

 العربية