Як працювати з моделлю 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() для авто-калібрування, або викликати Recalculate() з менш суворим порогом на існуючому результаті.
Мені потрібні необроблені дані відповіді у форматі, відмінному від CSV/JSON/XML. Iterate result.OmrElements самостійно і побудуйте будь-яку структуру, яку вам потрібно, з кожного IOmrElement’s GetAnswer()/GetCsv().
Поширені запитання
Чи Recalculate() перечитує скановане зображення?
Ні — він переоцінює вже розпізнаний результат на місці з новим порогом.
Що означає QuestionName?
Той Name, який ви встановлюєте на елемент шаблону (наприклад, AnswerSheetConfig.Name або ChoiceBoxConfig.Name), проти якого була розпізнана мітка цього елемента.
Чи можу я експортувати лише деякі елементи замість усього результату?
Методи експорту RecognitionResult охоплюють повний результат; спочатку відфільтруйте OmrElements самостійно, якщо потрібна підмножина.