چگونه با 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 برای ماتریس پاسخ ۲۰ سؤال شمارهدار (۴ حباب گزینه برای هر سؤال).
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]مرحله ۴: تولید و ذخیره
engine = OmrEngine()
gen = engine.Generate(tpl)
gen.Save("out", "quiz") # -> out/quiz.png + out/quiz.omrمشکلات رایج و راهحلها
صفحهی تولیدشده من خالی بهنظر میرسد. بررسی کنید که هر عنصر واقعاً به والدِ آن افزوده شده باشد Children فهرست — عنصری که ساخته شده اما هرگز به صفحه (یا مخزن) اضافه نشده است Children هرگز رندر نمیشود.
بهجای PNG به یک PDF نیاز دارم. در این نسخه در دسترس نیست — GenerationResult.SaveAsPdf() raises NotImplementedError. خروجی PNG را از Save() و در صورت نیاز به PDF، بهصورت خارجی تبدیل کنید.
من تنظیم میکنم Overflow و هیچچیز تغییر نکرد. موتور رندر این نسخه هنوز رعایت نمیکند Overflow/LongWordHandling — مقادیر شمارشی بهدرستی تجزیه و اعتبارسنجی میشوند، اما رفتار سرریز هنوز قابل پیکربندی نیست. این موضوع در نقشه راه بالادست ردیابی میشود.
سوالات متداول
آیا میتوانم همان قالب را بدون اشیاء Python بسازم؟
بله — DSL نشانهگذاری همان درخت عنصر را از متن ساده میسازد که مستقیماً به OmrEngine.Generate() منتقل میشود.
چگونه میتوانم یک قالب چندصفحهای تولید کنم؟
بیش از یک PageConfig به TemplateConfig.Children اضافه کنید؛ GenerationResult.MultipageTemplateImages برای هر صفحه یک تصویر برمیگرداند.
آیا موتور بین فراخوانیهای Generate() وضعیت را حفظ میکند؟
خیر — OmrEngine بدون حالت است؛ هر فراخوانی مستقل است.