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

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

Aspose.OMR FOSS لـ Python يبني نموذج OMR من شجرة تكوينات العناصر المتجذرة في TemplateConfig، ثم يُحوِّله إلى صورة صفحة ومُوَصِّف .omr باستخدام OmrEngine.Generate(). يشرح هذا الدليل كيفية بناء قالب ورقة إجابة بسيط وتوليده.

دليل خطوة بخطوة

الخطوة 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
from omr.generation.config import TemplateConfig
from omr.generation.config.elements.parents import PageConfig
from omr.generation.config.elements import AnswerSheetConfig

الخطوة 3: بناء شجرة القالب

أنشئ جذر TemplateConfig، وPageConfig للصفحة الوحيدة، وAnswerSheetConfig لمصفوفة إجابات مرقمة مكوّنة من 20 سؤالًا (4 فقاعة خيارات لكل سؤال).

tpl = TemplateConfig()
tpl.Name = "quiz"
page = PageConfig()
sheet = AnswerSheetConfig()
sheet.Name = "answers"
sheet.AnswersCount = 4    # bubbles per question (e.g. A-D)
sheet.ElementsCount = 20  # number of questions
page.Children = [sheet]
tpl.Children = [page]

الخطوة 4: إنشاء وحفظ

engine = OmrEngine()
gen = engine.Generate(tpl)
gen.Save("out", "quiz")   # -> out/quiz.png + out/quiz.omr

المشكلات الشائعة والحلول

تبدو صفحتي المولدة فارغة. تحقق من أن كل عنصر قد أُضيف فعليًا إلى عنصر أبٍ Children القائمة — عنصر تم إنشاؤه لكنه لم يُضاف أبدًا إلى صفحة (أو حاوية) Children لا يتم عرضه أبدًا.

أحتاج إلى PDF بدلاً من PNG. غير متوفر في هذا الإصدار — GenerationResult.SaveAsPdf() raises NotImplementedError. استخدم مخرجات PNG من Save() وقم بالتحويل خارجيًا إذا كان PDF مطلوبًا.

قمت بتعيين Overflow ولم يتغير شيء. محرك العرض في هذا الإصدار لا يلتزم بعد بـ Overflow/LongWordHandling — يتم تحليل القيم المتعددية وتحقق صحتها بشكل صحيح، لكن سلوك الفائض غير قابل للتكوين بعد. يتم تتبع ذلك في خارطة الطريق العليا.

الأسئلة المتكررة

هل يمكنني بناء نفس القالب دون كائنات Python؟

نعم — يقوم DSL للعلامات بإنشاء شجرة العناصر نفسها من نص عادي، يتم تمريره مباشرة إلى OmrEngine.Generate().

كيف يمكنني إنشاء قالب متعدد الصفحات؟

أضف أكثر من PageConfig إلى TemplateConfig.Children؛ GenerationResult.MultipageTemplateImages يُعيد صورة واحدة لكل صفحة.

هل يحتفظ المحرك بالحالة بين استدعاءات Generate()؟

لا — OmrEngine لا يحتفظ بالحالة؛ كل استدعاء مستقل.

انظر أيضاً

 العربية