Come lavorare con il modello OMR in Python
Un RecognitionResult contiene un IOmrElement per ogni domanda riconosciuta. Questa guida mostra come leggere ed esportare le risposte riconosciute.
Guida passo-passo
Passo 1: Installa il pacchetto
git clone https://github.com/aspose-omr-foss/Aspose.OMR-FOSS-for-Python.git
cd Aspose.OMR-FOSS-for-Python
pip install -e .python -c "import omr; print('Aspose.OMR FOSS for Python is ready.')"Passo 2: Importa le classi necessarie
from omr.api import OmrEngine, FormValidationLogicPasso 3: Riconosci una scansione
engine = OmrEngine()
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Ignore)
result = processor.Recognize("scan.png")Passo 4: Leggi le risposte individuali
Ogni voce in result.OmrElements implementa IOmrElement: QuestionName identifica la domanda e GetAnswer() restituisce il valore riconosciuto (una stringa vuota se nulla ha superato la soglia di riconoscimento).
for element in result.OmrElements:
print(element.QuestionName, element.GetAnswer())Passo 5: Esporta l’intero risultato
print(result.GetCsv()) # also GetJson() / GetXml()Problemi comuni e soluzioni
GetAnswer() restituisce una stringa vuota per un segno che riesco a vedere chiaramente nella scansione. La soglia di riconoscimento potrebbe essere troppo restrittiva per l’oscurità di quel segno. Pass -100 to Recognize() per l’auto-calibrazione, o chiama Recalculate() con una soglia più permissiva sul risultato esistente.
Ho bisogno dei dati di risposta grezzi in un formato diverso da CSV/JSON/XML. Iterate result.OmrElements te stesso e costruisci qualsiasi struttura ti serva da ciascuno IOmrElement’s GetAnswer()/GetCsv().
Domande frequenti
Il Recalculate() rilegge l’immagine scansionata?
No — ricalcola il punteggio del risultato già riconosciuto in loco con una nuova soglia.
A cosa corrisponde QuestionName?
Il Name che imposti sull’elemento modello (ad es. AnswerSheetConfig.Name o ChoiceBoxConfig.Name) contro il quale è stato riconosciuto il segno di quell’elemento.
Posso esportare solo alcuni elementi invece dell’intero risultato?
I metodi di esportazione di RecognitionResult coprono l’intero risultato; filtra OmrElements tu stesso prima se ti serve un sottoinsieme.