Модель распознавания
Модель распознавания
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 | Распознанное значение для каждого элемента |