Как работать с моделью OMR в Python

Как работать с моделью OMR в Python

Объект RecognitionResult содержит один IOmrElement на каждый распознанный вопрос. Это руководство показывает, как читать и экспортировать распознанные ответы.

Пошаговое руководство

Шаг 1: Установите пакет

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

Шаг 2: Импортируйте необходимые классы

from omr.api import OmrEngine, FormValidationLogic

Шаг 3: Распознать скан

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

Шаг 4: Чтение отдельных ответов

Каждый элемент в result.OmrElements реализует IOmrElement: QuestionName определяет вопрос, а GetAnswer() возвращает распознанное значение (пустую строку, если ничего не прошло порог распознавания).

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

Шаг 5: Экспортировать весь результат

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

Распространённые проблемы и решения

GetAnswer() возвращает пустую строку для метки, которую я ясно вижу на скане. Порог распознавания может быть слишком строгим для темноты этой отметки. Pass -100 to Recognize() для авто-калибровки, или call Recalculate() с менее строгим порогом на существующем результате.

Мне нужны необработанные данные ответа в формате, отличном от CSV/JSON/XML. Iterate result.OmrElements самостоятельно и построить любую структуру, которую вам нужно получить из каждого IOmrElement’s GetAnswer()/GetCsv().

Часто задаваемые вопросы

Перепрочитывает ли Recalculate() отсканированное изображение?

Нет — он переоценивает уже распознанный результат на месте с новым порогом.

Что соответствует QuestionName?

Это Name, который вы задали в элементе шаблона (например, AnswerSheetConfig.Name или ChoiceBoxConfig.Name) — метка этого элемента, против которой происходило распознавание.

Могу ли я экспортировать только некоторые элементы вместо полного результата?

Методы экспорта RecognitionResult охватывают полный результат; сначала отфильтруйте OmrElements самостоятельно, если нужен подмножество.

См. также:

 Русский