O Núcleo API

O Core API

omr.api é a pequena superfície com a qual a maior parte do código interage: OmrEngine, TemplateProcessor, ImageCollection e o enum FormValidationLogic.


OmrEngine

OmrEngine é uma fábrica sem estado. Generate(source, settings) aceita uma fonte markup-DSL ou uma árvore TemplateConfig e retorna um GenerationResult. GetTemplateProcessor(templateSource, validationLogic) carrega um caminho de arquivo .omr previamente salvo e retorna um TemplateProcessor vinculado; uma fonte de stream, em vez disso, recebe um argumento de codificação de texto antes da lógica de validação.

from omr.api import OmrEngine, FormValidationLogic

engine = OmrEngine()
gen = engine.Generate("final-exam.txt")
gen.Save("out", "final-exam")
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Ignore)

FormValidationLogic

Controla o comportamento do mecanismo quando uma regra de validação de modelo — como uma restrição de seleção múltipla — é violada durante o reconhecimento: Ignore (padrão) aceita a violação silenciosamente, Exception gera erro, e undefined é o valor zero do enum. A verificação se aplica apenas a perguntas cujo Multiselect está desativado; GlobalPageSettings.Multiselect tem o padrão ativado.

TemplateProcessor

Recognize(source, recognitionThreshold) reconhece uma imagem digitalizada. RecognizeFolder(folderPath, recognitionThreshold) reconhece todas as imagens em uma pasta em uma única chamada. Recalculate(result, recognitionThreshold) reavalia um resultado já reconhecido com um limiar diferente, sem reler a imagem original.

ImageCollection

Um mapa somente de acréscimo, sensível a maiúsculas e minúsculas, de um nome para bytes de imagem bruta. Add(name, image) registra uma imagem, Contains(name) verifica se um nome já está registrado, Count informa quantos estão registrados e as_dict() devolve o mapa subjacente. A marcação pode referenciar uma imagem registrada pelo nome (?image=<name>) em vez de um caminho de sistema de arquivos.

from omr.api import ImageCollection

images = ImageCollection()
with open("logo.png", "rb") as f:
    images.Add("logo.png", f.read())

Dicas e Melhores Práticas

  • Passe FormValidationLogic.Exception durante o desenvolvimento para expor violações de seleção múltipla imediatamente em vez de ignorá-las silenciosamente (só é disparado para perguntas com Multiselect desativado).
  • Recalculate() é mais barato que reescanear — use-o quando apenas o limiar de reconhecimento precisar ser alterado.
  • Os nomes ImageCollection são sensíveis a maiúsculas e minúsculas; registrar o mesmo nome duas vezes gera um erro em vez de sobrescrever silenciosamente.
  • Generate() relata a maioria das falhas através de GenerationResult.ErrorCode/ErrorMessage em vez de gerar exceção — verifique ErrorCode antes de confiar em um resultado gerado.

Problemas Comuns

ProblemaCausaCorreção
Registrar uma imagem duas vezes geraImageCollection.Add não permite nomes duplicadosVerifique Contains(name) primeiro, ou use um nome exclusivo para cada imagem
Uma resposta de múltipla seleção não permitida é aceita silenciosamenteO padrão FormValidationLogic.Ignore não geraPasse FormValidationLogic.Exception para GetTemplateProcessor() e assegure que o Multiselect da pergunta esteja desativado

FAQ

É OmrEngine seguro reutilizar em vários modelos?

Sim — é sem estado; cada chamada Generate()/GetTemplateProcessor() é independente.

Como reconhecer uma pasta inteira de digitalizações de uma só vez?

Chame TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) em vez de percorrer Recognize() manualmente.


Resumo API Reference

Classe/MétodoDescrição
OmrEngine.GenerateRenderiza um template em uma imagem de página + descritor .omr
OmrEngine.GetTemplateProcessorCarrega um descritor .omr para reconhecimento
TemplateProcessor.Recognize / RecognizeFolder / RecalculatePontos de entrada de reconhecimento
ImageCollection.Add / Contains / as_dictRegistro de imagens em memória para marcação
FormValidationLogicEnum de comportamento de violação de validação

Ver também

 Português