Como Trabalhar com Geração em Python

Como Trabalhar com Geração em Python

Aspose.OMR FOSS para Python cria um formulário OMR a partir de uma árvore de configurações de elementos com raiz em TemplateConfig, então o renderiza para uma imagem de página e descritor .omr com OmrEngine.Generate(). Este guia demonstra como construir um modelo simples de folha de respostas e gerá-lo.

Guia passo a passo

Etapa 1: Instalar o pacote

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.')"

Etapa 2: Importar classes necessárias

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

Etapa 3: Construir a árvore de modelo

Crie uma raiz TemplateConfig, um PageConfig para a página única e um AnswerSheetConfig para uma matriz de respostas numerada de 20 perguntas (4 bolhas de opção por pergunta).

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]

Etapa 4: Gerar e Salvar

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

Problemas Comuns e Soluções

Minha página gerada parece vazia. Verifique se cada elemento está realmente adicionado ao pai Children lista — um elemento construído mas nunca anexado à página (ou ao contêiner) Children nunca é renderizado.

Preciso de um PDF em vez de um PNG. Não disponível nesta versão — GenerationResult.SaveAsPdf() raises NotImplementedError. Use a saída PNG de Save() e converta externamente se um PDF for necessário.

Eu defini Overflow e nada mudou. O motor de renderização desta versão ainda não honra Overflow/LongWordHandling — os enums analisam e validam corretamente, mas o comportamento de overflow ainda não é configurável. Isso está rastreado no roadmap upstream.

Perguntas Frequentes

Posso criar o mesmo modelo sem objetos Python?

Sim — a DSL de marcação constrói a mesma árvore de elementos a partir de texto simples, passado diretamente para OmrEngine.Generate().

Como gero um modelo de várias páginas?

Adicione mais de um PageConfig a TemplateConfig.Children; GenerationResult.MultipageTemplateImages retorna uma imagem por página.

O engine mantém estado entre chamadas de Generate()?

Não — OmrEngine é sem estado; cada chamada é independente.

Ver também

 Português