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
QuestionNameper 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 unRecognitionResultesistente in loco — rileggiOmrElementsin seguito invece di mantenere i riferimenti precedenti al ricalcolo.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
| La risposta di un elemento è una stringa vuota | La soglia di riconoscimento era troppo restrittiva per quel segno, o Recalculate() è stato chiamato con un valore impossibilmente restrittivo | Abbassa 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/Metodo | Descrizione |
|---|---|
RecognitionResult.OmrElements | Elenco delle voci IOmrElement riconosciute |
RecognitionResult.GetCsv / GetJson / GetXml | Esporta il risultato completo |
IOmrElement.GetAnswer / GetCsv | Valore riconosciuto per elemento |