Як працювати з генерацією у Python

Як працювати з генерацією у 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 list — елемент, створений, але ніколи не приєднаний до сторінки (або контейнера) Children ніколи не відображається.

Мені потрібен PDF замість PNG. Недоступно у цьому випуску — GenerationResult.SaveAsPdf() raises NotImplementedError. Використайте PNG-вихід з Save() і конвертуйте зовні, якщо потрібен PDF.

Я встановив Overflow і нічого не змінилося. Рендер-двигун цього випуску ще не враховує Overflow/LongWordHandling — перерахування (enum) аналізуються та валідуються правильно, але поведінка при переповненні ще не налаштовується. Це відстежується у дорожній карті upstream.

Поширені запитання

Чи можу я створити той самий шаблон без Python об’єктів?

Так — DSL розмітки створює те саме дерево елементів з простого тексту, переданого безпосередньо до OmrEngine.Generate().

Як створити багатосторінковий шаблон?

Додайте більше одного PageConfig до TemplateConfig.Children; GenerationResult.MultipageTemplateImages повертає одне зображення на сторінку.

Чи зберігає двигун стан між викликами Generate()?

Ні — OmrEngine без стану; кожен виклик є незалежним.

Дивіться також

 Українська