Come lavorare con il modello OMR in Python

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, FormValidationLogic

Passo 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.

Vedi anche

 Italiano