Panoramica delle funzionalità
Panoramica delle funzionalità
Aspose.OMR FOSS per Python copre tre livelli: progettare un modello, generare un’immagine della pagina e un descrittore da essa, e riconoscere i segni da una copia scannerizzata.
Progettazione del modello
Un modello è un albero di configurazioni di elementi radicato in TemplateConfig. Gli elementi di domanda includono ChoiceBoxConfig (bolle di opzione fisse), CheckBoxConfig (caselle di spunta a segno libero), GridConfig e CompositeGridConfig (matrici di cifre/simboli fuse in un unico valore), e AnswerSheetConfig (matrici numerate di bolle di risposta). I contenitori di layout (BlockConfig, ContainerConfig, PositionedBlockConfig) controllano bordi, colonne e posizionamento assoluto. Lo stesso albero può essere costruito da un DSL di markup testuale compatto invece di oggetti Python.
Generation
OmrEngine.Generate() rende un modello in un GenerationResult — un’immagine della pagina più un descrittore .omr JSON. MemoryGenerationResult espone lo stesso output come flussi in memoria tramite GetImages()/GetOmr() per gli chiamanti che non vogliono toccare il filesystem.
Recognition
TemplateProcessor.Recognize() legge un’immagine scansionata rispetto al modello da cui è stata creata. RecognizeFolder() esegue il batch su ogni immagine in una cartella. Recalculate() ricalcola un risultato già riconosciuto con una soglia diversa senza rileggerne l’immagine di origine. La correzione di inclinazione utilizza i segni di riferimento d’angolo (ReferencePointsSettings).
Esportazione del risultato
RecognitionResult esporta in CSV, JSON o XML, ciascuno con una variante di stream in memoria corrispondente (GetCsvAsStream, GetJsonAsStream, GetXmlAsStream).
Enum del sistema di scrittura e overflow
Arabic, Hebrew, Persian, Urdu e Bengali sistemi di scrittura (insieme a Western), e gli enum LongWordHandling/OverflowAction, sono presenti e vengono analizzati correttamente per la fedeltà API con la superficie Aspose.OMR. Nessuno di essi è ancora rispettato dal motore di rendering di questa versione — il rendering è solo LTR/Western, e il comportamento di overflow non è ancora configurabile. Entrambi sono tracciati nella roadmap upstream.
Suggerimenti e migliori pratiche
- Usa il DSL di markup per moduli semplici; passa all’albero
TemplateConfigbasato sul codice quando hai bisogno di un controllo programmatico sul posizionamento degli elementi. FormValidationLogic.Exceptionmostra immediatamente le violazioni di multi-selezione invece di ignorarle silenziosamente, per le domande con multi-selezione disabilitata.- Preferisci
RecognizeFolder()anziché eseguire in loop le chiamateRecognize()quando elabori un batch di scansioni. - Chiama
Recalculate()invece di rifare la scansione quando devi solo provare una soglia di riconoscimento diversa.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
SaveAsPdf() solleva NotImplementedError | L’esportazione PDF non è implementata in questa versione | Usa Save() per l’output PNG, oppure esporta i risultati del riconoscimento come CSV/JSON/XML |
| Una risposta multi-selezione non consentita viene accettata silenziosamente | Il valore predefinito FormValidationLogic.Ignore non solleva in caso di violazioni | Passa FormValidationLogic.Exception a GetTemplateProcessor() e assicurati che il Multiselect della domanda sia disabilitato |
FAQ
La libreria richiede una GUI o hardware OMR esterno?
No. Funziona interamente a partire da file immagine (scansioni o foto) usando numpy, opencv-python e Pillow.
Posso generare un PDF del template?
Non in questa versione — GenerationResult.SaveAsPdf() e MemoryGenerationResult.GetPDF() sollevano entrambi NotImplementedError. Usa l’output PNG da Save()/GetImages() invece.
Come posso elaborare molti moduli scansionati contemporaneamente?
Usa TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) per riconoscere ogni immagine in una cartella in un’unica chiamata.
API Reference Riepilogo
| Classe/Metodo | Descrizione |
|---|---|
OmrEngine.Generate | Rende un template in un’immagine di pagina + descrittore .omr |
OmrEngine.GetTemplateProcessor | Carica un descrittore .omr per il riconoscimento |
TemplateProcessor.Recognize | Riconosce un’immagine scansionata |
TemplateProcessor.RecognizeFolder | Riconosce ogni immagine in una cartella |
TemplateProcessor.Recalculate | Rivaluta un risultato con una nuova soglia |
RecognitionResult.GetCsv / GetJson / GetXml | Esporta i risultati del riconoscimento |