O Modelo de Reconhecimento

O Modelo de Reconhecimento

O Modelo de Reconhecimento

omr.model define a forma de um resultado de reconhecimento: RecognitionResult e a interface IOmrElement.


RecognitionResult

TemplateProcessor.Recognize() retorna um RecognitionResult. Ele expõe OmrElements (uma lista de elementos reconhecidos), além de ImagePath, Images, PageName e TemplateName. No nível de resultado, GetCsv(encoding), GetJson(encoding) e GetXml(encoding) exportam o resultado completo; cada um possui uma variante ...AsStream correspondente que retorna um BytesIO.

from omr.api import OmrEngine, FormValidationLogic

engine = OmrEngine()
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Ignore)
result = processor.Recognize("scan.png")
print(result.GetJson())

IOmrElement

Cada entrada em RecognitionResult.OmrElements implementa IOmrElement: QuestionName e SortWeight identificam o elemento, e GetAnswer() / GetCsv() leem seu valor reconhecido.

for element in result.OmrElements:
    print(element.QuestionName, element.GetAnswer())

Dicas e Melhores Práticas

  • Leia QuestionName para associar um elemento reconhecido de volta à pergunta de onde ele veio, em vez de depender da ordem da lista.
  • Use as variantes de exportação ...AsStream (GetCsvAsStream, GetJsonAsStream, GetXmlAsStream) ao gravar resultados para um destino que não seja o sistema de arquivos.
  • TemplateProcessor.Recalculate() atualiza um RecognitionResult existente no local — releia OmrElements depois, em vez de manter referências de antes do recálculo.

Problemas comuns

ProblemaCausaCorreção
A resposta de um elemento é uma string vaziaO limiar de reconhecimento estava muito restrito para essa marca, ou Recalculate() foi chamado com um valor impossivelmente restritoReduza o limiar, ou passe -100 para Recognize() para auto-calibração

FAQ

O que GetAnswer() devolve para uma pergunta não marcada?

Uma string vazia — a mesma representação que Recalculate() produz quando um limiar mais rigoroso rejeita todas as marcas.

Posso exportar apenas alguns elementos em vez do resultado completo?

O RecognitionResult’s GetCsv/GetJson/GetXml exporta o resultado completo; filtre OmrElements você mesmo primeiro se precisar de um subconjunto.


API Reference Resumo

Classe/MétodoDescrição
RecognitionResult.OmrElementsLista de entradas reconhecidas IOmrElement
RecognitionResult.GetCsv / GetJson / GetXmlExportar o resultado completo
IOmrElement.GetAnswer / GetCsvValor reconhecido por elemento

Ver também

 Português