Модель распознавания

Модель распознавания

Модель распознавания

omr.model определяет структуру результата распознавания: RecognitionResult и интерфейс IOmrElement.


RecognitionResult

TemplateProcessor.Recognize() возвращает RecognitionResult. Он раскрывает OmrElements (список распознанных элементов), а также ImagePath, Images, PageName и TemplateName. На уровне результата GetCsv(encoding), GetJson(encoding) и GetXml(encoding) экспортируют весь результат; каждый имеет соответствующий вариант ...AsStream, возвращающий BytesIO.

from omr.api import OmrEngine, FormValidationLogic

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

IOmrElement

Каждая запись в RecognitionResult.OmrElements реализует IOmrElement: QuestionName и SortWeight определяют элемент, а GetAnswer() / GetCsv() читают его распознанное значение.

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

Советы и лучшие практики

  • Прочитайте QuestionName, чтобы сопоставить распознанный элемент с вопросом, из которого он взят, вместо того чтобы полагаться на порядок в списке.
  • Используйте варианты экспорта ...AsStream (GetCsvAsStream, GetJsonAsStream, GetXmlAsStream) при записи результатов в нефайловый ресурс.
  • TemplateProcessor.Recalculate() обновляет существующий RecognitionResult на месте — после этого перечитайте OmrElements, а не сохраняйте ссылки, полученные до перерасчёта.

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

ПроблемаПричинаИсправление
Ответ элемента — пустая строкаПорог распознавания был слишком строгим для этой метки, или Recalculate() был вызван со слишком строгим значениемСнизьте порог или передайте -100 в Recognize() для автоматической калибровки

FAQ

Что возвращает GetAnswer() для немаркированного вопроса?

Пустая строка — то же представление, которое Recalculate() выдаёт, когда более строгий порог отклоняет все отметки.

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

RecognitionResult’s GetCsv/GetJson/GetXml экспортирует полный результат; отфильтруйте OmrElements самостоятельно, если вам нужен поднабор.


Сводка API Reference

Класс/МетодОписание:
RecognitionResult.OmrElementsСписок распознанных записей IOmrElement
RecognitionResult.GetCsv / GetJson / GetXmlЭкспортировать полный результат
IOmrElement.GetAnswer / GetCsvРаспознанное значение для каждого элемента

См. также:

 Русский