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
QuestionNamepara 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 umRecognitionResultexistente no local — releiaOmrElementsdepois, em vez de manter referências de antes do recálculo.
Problemas comuns
| Problema | Causa | Correção |
|---|---|---|
| A resposta de um elemento é uma string vazia | O limiar de reconhecimento estava muito restrito para essa marca, ou Recalculate() foi chamado com um valor impossivelmente restrito | Reduza 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étodo | Descrição |
|---|---|
RecognitionResult.OmrElements | Lista de entradas reconhecidas IOmrElement |
RecognitionResult.GetCsv / GetJson / GetXml | Exportar o resultado completo |
IOmrElement.GetAnswer / GetCsv | Valor reconhecido por elemento |