Огляд можливостей
Огляд функцій
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/Western-only, а поведінка переповнення ще не налаштовується. Обидва елементи відстежуються у upstream roadmap.
Поради та кращі практики
- Використовуйте 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 | Експортує результати розпізнавання |