مدل تشخیص
مدل شناسایی
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 GetCsv/GetJson/GetXml نتیجه کامل را؛ اگر به زیرمجموعهای نیاز دارید، ابتدا OmrElements را خودتان فیلتر کنید.
خلاصه API Reference
| کلاس/متد | توضیح |
|---|---|
RecognitionResult.OmrElements | لیست ورودیهای شناساییشده IOmrElement |
RecognitionResult.GetCsv / GetJson / GetXml | نتیجهٔ کامل را صادر کنید |
IOmrElement.GetAnswer / GetCsv | مقدار شناساییشده به ازای هر عنصر |