Як працювати з API у Python

Як працювати з API у Python

Aspose.OMR FOSS для публічного Python’s API (omr.api) навмисно невеликий: OmrEngine, TemplateProcessor, ImageCollection та FormValidationLogic. Цей посібник показує, як вони поєднуються в процесі роботи «генерувати-розпізнавати».

Покроковий посібник

Крок 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()
gen = engine.Generate("final-exam.txt")
gen.Save("out", "final-exam")

Крок 4: Завантажити шаблон для розпізнавання

Передайте FormValidationLogic.Exception замість типового Ignore, якщо ви хочете, щоб порушення піднімалося для питань, у яких вимкнено мультивибір, замість того, щоб воно приймалося без повідомлення.

processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Exception)

Крок 5: Розпізнати та експортувати

result = processor.Recognize("scan.png")
print(result.GetCsv())

Поширені проблеми та виправлення

FormValidationLogic.Exception ніколи не піднімає, навіть у багатократно позначеному питанні. Перевірка спрацьовує лише для питання з Multiselect вимкнено; GlobalPageSettings.Multiselect за замовчуванням ввімкнено, тому підтвердіть, що він явно вимкнений для питання, яке ви очікуєте як single-select.

Мені потрібно розпізнавати багато сканів одночасно. Використовуйте TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) замість виклику Recognize() у циклі.

Я зареєстрував зображення під ім’ям, яке вже використано. ImageCollection.Add не перезаписує — перевірте Contains(name) спочатку, або використовуйте унікальне ім’я для кожного зображення.

Часто задавані питання

Чи безпечно використовувати OmrEngine повторно в декількох шаблонах?

Так — це без стану.

Як переоцінити результат з іншим порогом без повторного сканування?

Викличте TemplateProcessor.Recalculate(result, recognitionThreshold).

Як вбудувати зображення в пам’яті у розмітку замість читання з диска?

Зареєструйте його за допомогою ImageCollection.Add(name, image_bytes), потім посилайтеся на нього у розмітці як ?image=<name>.

Дивіться також

 Українська