Il Nucleo API

Il Core API

omr.api è la piccola superficie con cui la maggior parte del codice interagisce: OmrEngine, TemplateProcessor, ImageCollection e l’enum FormValidationLogic.


OmrEngine

OmrEngine è una factory senza stato. Generate(source, settings) accetta una sorgente markup-DSL o un albero TemplateConfig e restituisce un GenerationResult. GetTemplateProcessor(templateSource, validationLogic) carica un percorso file .omr precedentemente salvato e restituisce un TemplateProcessor collegato; una sorgente stream invece prende un argomento di codifica del testo prima della logica di validazione.

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

Controlla il comportamento del motore quando una regola di validazione del modello — come un vincolo a selezione multipla — viene violata durante il riconoscimento: Ignore (predefinito) accetta silenziosamente la violazione, Exception solleva, e undefined è il valore zero dell’enum. Il controllo si applica solo alle domande il cui Multiselect è disabilitato; GlobalPageSettings.Multiselect è abilitato per impostazione predefinita.

TemplateProcessor

Recognize(source, recognitionThreshold) riconosce un’immagine scansionata. RecognizeFolder(folderPath, recognitionThreshold) riconosce ogni immagine in una cartella in una sola chiamata. Recalculate(result, recognitionThreshold) ricalcola un risultato già riconosciuto con una soglia diversa, senza rileggerne l’immagine di origine.

ImageCollection

Una mappa solo-append, sensibile al maiuscolo/minuscolo, da un nome a byte di immagine grezzi. Add(name, image) registra un’immagine, Contains(name) verifica se un nome è già registrato, Count segnala quanti sono registrati, e as_dict() restituisce la mappa di supporto. Il markup può fare riferimento a un’immagine registrata per nome (?image=<name>) invece di un percorso del filesystem.

from omr.api import ImageCollection

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

Suggerimenti e migliori pratiche

  • Passa FormValidationLogic.Exception durante lo sviluppo per evidenziare le violazioni di multi-selezione immediatamente invece di ignorarle silenziosamente (si attiva solo per le domande con Multiselect disabilitato).
  • Recalculate() è più economico rispetto a una nuova scansione — usalo quando è necessario cambiare solo la soglia di riconoscimento.
  • I nomi ImageCollection sono sensibili al maiuscolo/minuscolo; registrare lo stesso nome due volte genera un errore anziché sovrascrivere silenziosamente.
  • Generate() segnala la maggior parte dei fallimenti tramite GenerationResult.ErrorCode/ErrorMessage anziché sollevare un’eccezione — controlla ErrorCode prima di fidarti di un risultato generato.

Problemi comuni

ProblemaCausaCorrezione
Registrare un’immagine due volte sollevaImageCollection.Add non consente nomi duplicatiControlla Contains(name) prima, o usa un nome univoco per immagine
Una risposta multi-selezione non consentita viene accettata silenziosamenteIl valore predefinito FormValidationLogic.Ignore non sollevaPassa FormValidationLogic.Exception a GetTemplateProcessor() e assicurati che il Multiselect della domanda sia disabilitato

FAQ

È OmrEngine sicuro da riutilizzare in più template?

Sì — è senza stato; ogni chiamata Generate()/GetTemplateProcessor() è indipendente.

Come riconosco un’intera cartella di scansioni in una sola volta?

Chiama TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) invece di iterare Recognize() da solo.


Riepilogo API Reference

Classe/MetodoDescrizione
OmrEngine.GenerateRende un modello in un’immagine di pagina + descrittore .omr
OmrEngine.GetTemplateProcessorCarica un descrittore .omr per il riconoscimento
TemplateProcessor.Recognize / RecognizeFolder / RecalculatePunti di ingresso per il riconoscimento
ImageCollection.Add / Contains / as_dictRegistro di immagini in memoria per il markup
FormValidationLogicEnum del comportamento di violazione di validazione

Vedi anche

 Italiano