كيفية العمل مع API في Python

كيفية العمل مع 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>.

انظر أيضاً

 العربية