Como trabalhar com o API em Python

Como trabalhar com o API em Python

Aspose.OMR FOSS para o Python público API (omr.api) é intencionalmente pequeno: OmrEngine, TemplateProcessor, ImageCollection e FormValidationLogic. Este guia mostra como eles se encaixam em um fluxo de trabalho gerar-e-reconhecer.

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, FormValidationLogic

Etapa 3: Gerar e salvar um modelo

engine = OmrEngine()
gen = engine.Generate("final-exam.txt")
gen.Save("out", "final-exam")

Etapa 4: Carregar o Modelo para Reconhecimento

Passe FormValidationLogic.Exception em vez do padrão Ignore se você quiser que uma violação seja levantada para perguntas que têm a seleção múltipla desativada, em vez de serem aceitas silenciosamente.

processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Exception)

Etapa 5: Reconhecer e Exportar

result = processor.Recognize("scan.png")
print(result.GetCsv())

Problemas Comuns e Correções

FormValidationLogic.Exception nunca gera exceção, mesmo em uma pergunta com múltiplas marcações. A verificação só dispara para uma pergunta com Multiselect desativado; GlobalPageSettings.Multiselect por padrão está ativado, então confirme que está explicitamente desativado para a pergunta que você espera que seja de seleção única.

Preciso reconhecer várias varreduras de uma só vez. Use TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) em vez de chamar Recognize() em um loop.

Registrei uma imagem com um nome que já estava em uso. ImageCollection.Add não sobrescreve — verifique Contains(name) primeiro, ou use um nome exclusivo por imagem.

Perguntas Frequentes

É OmrEngine seguro reutilizar em vários modelos?

Sim — é sem estado.

Como faço para reavaliar um resultado com um limiar diferente sem reescaneamento?

Chame TemplateProcessor.Recalculate(result, recognitionThreshold).

Como incorporo uma imagem em memória ao markup em vez de lê-la do disco?

Registre-a com ImageCollection.Add(name, image_bytes) e, em seguida, referencie-a no markup como ?image=<name>.

Ver também

 Português