Обзор функций

Обзор функций

Обзор функций

Aspose.OMR FOSS для Python охватывает три уровня: разработка шаблона, генерация образа страницы и дескриптора из него, а также распознавание меток со сканированной копии.


Проектирование шаблона

Шаблон представляет собой дерево конфигураций элементов, корневым узлом которого является TemplateConfig. Элементы вопросов включают ChoiceBoxConfig (пузырьки с фиксированными вариантами), CheckBoxConfig (флажки с любой отметкой), GridConfig и CompositeGridConfig (матрицы цифр/символов, объединённые в одно значение) и AnswerSheetConfig (нумерованные матрицы ответных пузырьков). Контейнеры компоновки (BlockConfig, ContainerConfig, PositionedBlockConfig) управляют границами, колонками и абсолютным позиционированием. То же самое дерево можно построить из компактного DSL разметки текста вместо объектов Python.

Generation

OmrEngine.Generate() преобразует шаблон в GenerationResult — образ страницы плюс дескриптор .omr JSON. MemoryGenerationResult предоставляет тот же вывод в виде потоков в памяти через GetImages()/GetOmr() для вызывающих, которые не хотят работать с файловой системой.

Recognition

TemplateProcessor.Recognize() считывает одно отсканированное изображение относительно шаблона, из которого оно было создано. RecognizeFolder() выполняет пакетную обработку для каждого изображения в папке. Recalculate() переоценивает уже распознанный результат с другим порогом без повторного чтения исходного изображения. Коррекция наклона использует угловые опорные метки (ReferencePointsSettings).

Экспорт результатов

RecognitionResult экспортирует в CSV, JSON или XML, каждый со соответствующим вариантом потока в памяти (GetCsvAsStream, GetJsonAsStream, GetXmlAsStream).

Перечисления систем письма и переполнения

Arabic, Hebrew, Persian, Urdu и Bengali системы письма (вместе с Western), а также перечисления LongWordHandling/OverflowAction, присутствуют и корректно разбираются для точности API с поверхностью Aspose.OMR. Ни одно из них пока не поддерживается движком рендеринга этой версии — рендеринг поддерживает только LTR/западный порядок, а поведение переполнения ещё не настраивается. Оба пункта находятся в дорожной карте upstream.


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

  • Используйте DSL разметки для простых форм; переключайтесь на код-ориентированное дерево TemplateConfig, когда требуется программный контроль над размещением элементов.
  • FormValidationLogic.Exception сразу отображает нарушения мультивыбора вместо того, чтобы тихо игнорировать их, для вопросов с отключённым мультивыбором.
  • Предпочтите RecognizeFolder() вместо того, чтобы самостоятельно выполнять циклические вызовы Recognize() при обработке пакета сканов.
  • Вызовите Recalculate() вместо повторного сканирования, если вам нужно лишь попробовать другой порог распознавания.

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

ПроблемаПричинаИсправление
SaveAsPdf() вызывает NotImplementedErrorЭкспорт в PDF не реализован в этой версииИспользуйте Save() для вывода PNG, или экспортируйте результаты распознавания как CSV/JSON/XML
Запрещённый ответ с множественным выбором принимается без уведомленияСтандартный FormValidationLogic.Ignore не вызывает исключения при нарушенияхПередайте FormValidationLogic.Exception в GetTemplateProcessor() и убедитесь, что Multiselect вопроса отключён

FAQ

Требует ли библиотека какой-нибудь GUI или внешнее OMR-оборудование?

Нет. Она полностью работает с файлов изображений (сканы или фотографии), используя numpy, opencv-python и Pillow.

Могу ли я создать PDF шаблона?

В этом выпуске нет — GenerationResult.SaveAsPdf() и MemoryGenerationResult.GetPDF() оба вызывают NotImplementedError. Вместо этого используйте PNG-вывод из Save()/GetImages().

Как обработать сразу много отсканированных форм?

Используйте TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) для распознавания каждого изображения в папке за один вызов.


API Reference Сводка

Класс/МетодОписание:
OmrEngine.GenerateРендерит шаблон в изображение страницы + дескриптор .omr
OmrEngine.GetTemplateProcessorЗагружает дескриптор .omr для распознавания
TemplateProcessor.RecognizeРаспознаёт одно отсканированное изображение
TemplateProcessor.RecognizeFolderРаспознает каждое изображение в папке
TemplateProcessor.RecalculateПересчитывает результат с новым порогом
RecognitionResult.GetCsv / GetJson / GetXmlЭкспортирует результаты распознавания

См. также:

 Русский