Hur man arbetar med OMR-modellen i Python

Hur man arbetar med OMR-modellen i Python

En RecognitionResult innehåller en IOmrElement per igenkänd fråga. Denna guide visar hur man läser och exporterar igenkända svar.

Steg-för-steg-guide

Steg 1: Installera paketet

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.')"

Steg 2: Importera nödvändiga klasser

from omr.api import OmrEngine, FormValidationLogic

Steg 3: Känn igen en skanning

engine = OmrEngine()
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Ignore)
result = processor.Recognize("scan.png")

Steg 4: Läs individuella svar

Varje post i result.OmrElements implementerar IOmrElement: QuestionName identifierar frågan, och GetAnswer() returnerar dess igenkända värde (en tom sträng om inget passerade igenkänningströskeln).

for element in result.OmrElements:
    print(element.QuestionName, element.GetAnswer())

Steg 5: Exportera hela resultatet

print(result.GetCsv())      # also GetJson() / GetXml()

Vanliga problem och lösningar

GetAnswer() returnerar en tom sträng för en markering som jag tydligt kan se på skanningen. Detekteringströskeln kan vara för strikt för den markeringens mörkhet. Pass -100 to Recognize() för automatisk kalibrering, eller anropa Recalculate() med en lösare tröskel på det befintliga resultatet.

Jag behöver de råa svarsdatan i ett format annat än CSV/JSON/XML. Iterate result.OmrElements själv och bygg vilken struktur du än behöver från varje IOmrElement’s GetAnswer()/GetCsv().

Vanliga frågor

Läser Recalculate() om den skannade bilden?

Nej — den omvärderar det redan igenkända resultatet på plats med ett nytt tröskelvärde.

Vad motsvarar QuestionName?

Det Name du anger på mall-elementet (t.ex. AnswerSheetConfig.Name eller ChoiceBoxConfig.Name) som elementets markering jämfördes mot.

Kan jag exportera bara vissa element istället för hela resultatet?

Exportmetoderna för RecognitionResult täcker hela resultatet; filtrera OmrElements själv först om du behöver en delmängd.

Se även

 Svenska