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, FormValidationLogicSteg 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.