Модель розпізнавання
Модель розпізнавання
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 | Розпізнане значення по елементу |