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.Exceptiondurante lo sviluppo per evidenziare le violazioni di multi-selezione immediatamente invece di ignorarle silenziosamente (si attiva solo per le domande conMultiselectdisabilitato). Recalculate()è più economico rispetto a una nuova scansione — usalo quando è necessario cambiare solo la soglia di riconoscimento.- I nomi
ImageCollectionsono sensibili al maiuscolo/minuscolo; registrare lo stesso nome due volte genera un errore anziché sovrascrivere silenziosamente. Generate()segnala la maggior parte dei fallimenti tramiteGenerationResult.ErrorCode/ErrorMessageanziché sollevare un’eccezione — controllaErrorCodeprima di fidarti di un risultato generato.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
| Registrare un’immagine due volte solleva | ImageCollection.Add non consente nomi duplicati | Controlla Contains(name) prima, o usa un nome univoco per immagine |
| Una risposta multi-selezione non consentita viene accettata silenziosamente | Il valore predefinito FormValidationLogic.Ignore non solleva | Passa 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/Metodo | Descrizione |
|---|---|
OmrEngine.Generate | Rende un modello in un’immagine di pagina + descrittore .omr |
OmrEngine.GetTemplateProcessor | Carica un descrittore .omr per il riconoscimento |
TemplateProcessor.Recognize / RecognizeFolder / Recalculate | Punti di ingresso per il riconoscimento |
ImageCollection.Add / Contains / as_dict | Registro di immagini in memoria per il markup |
FormValidationLogic | Enum del comportamento di violazione di validazione |