Il modello di riconoscimento

Il modello di riconoscimento

Il modello di riconoscimento

omr.model definisce la struttura di un risultato di riconoscimento: RecognitionResult e l’interfaccia IOmrElement.


RecognitionResult

TemplateProcessor.Recognize() restituisce un RecognitionResult. Espone OmrElements (un elenco di elementi riconosciuti), oltre a ImagePath, Images, PageName e TemplateName. A livello di risultato, GetCsv(encoding), GetJson(encoding) e GetXml(encoding) esportano l’intero risultato; ognuno ha una variante ...AsStream corrispondente che restituisce un 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

Ogni voce in RecognitionResult.OmrElements implementa IOmrElement: QuestionName e SortWeight identificano l’elemento, e GetAnswer() / GetCsv() leggono il suo valore riconosciuto.

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

Suggerimenti e migliori pratiche

  • Leggi QuestionName per associare un elemento riconosciuto alla domanda da cui proviene, invece di fare affidamento sull’ordine della lista.
  • Utilizza le varianti di esportazione ...AsStream (GetCsvAsStream, GetJsonAsStream, GetXmlAsStream) quando scrivi i risultati in una destinazione non basata su file system.
  • TemplateProcessor.Recalculate() aggiorna un RecognitionResult esistente in loco — rileggi OmrElements in seguito invece di mantenere i riferimenti precedenti al ricalcolo.

Problemi comuni

ProblemaCausaCorrezione
La risposta di un elemento è una stringa vuotaLa soglia di riconoscimento era troppo restrittiva per quel segno, o Recalculate() è stato chiamato con un valore impossibilmente restrittivoAbbassa la soglia, o passa -100 a Recognize() per l’auto-calibrazione

FAQ

Cosa restituisce GetAnswer() per una domanda non marcata?

Una stringa vuota — la stessa rappresentazione che Recalculate() produce quando una soglia più restrittiva rifiuta ogni marcatura.

Posso esportare solo alcuni elementi invece dell’intero risultato?

RecognitionResult’s GetCsv/GetJson/GetXml esporta il risultato completo; filtra OmrElements tu stesso prima se hai bisogno di un sottoinsieme.


API Reference Riepilogo

Classe/MetodoDescrizione
RecognitionResult.OmrElementsElenco delle voci IOmrElement riconosciute
RecognitionResult.GetCsv / GetJson / GetXmlEsporta il risultato completo
IOmrElement.GetAnswer / GetCsvValore riconosciuto per elemento

Vedi anche

 Italiano