نحوه کار با مدل 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")مرحله ۴: خواندن پاسخهای فردی
هر ورودی در result.OmrElements IOmrElement را پیادهسازی میکند: QuestionName سؤال را شناسایی میکند، و GetAnswer() مقدار شناساییشده آن را برمیگرداند (یک رشتهٔ خالی اگر چیزی از آستانهٔ تشخیص عبور نکند).
for element in result.OmrElements:
print(element.QuestionName, element.GetAnswer())مرحله ۵: صادر کردن کل نتیجه
print(result.GetCsv()) # also GetJson() / GetXml()مسائل رایج و راهحلها
GetAnswer() برای علامتی که میتوانم به وضوح روی اسکن ببینم، یک رشته خالی برمیگرداند. آستانه تشخیص ممکن است برای تاریکی آن علامت بیش از حد سخت باشد. Pass -100 to Recognize() برای خودکالیبراسیون، یا call Recalculate() با آستانهای شلتر روی نتیجهٔ موجود.
من به دادههای خام پاسخ در قالبی غیر از CSV/JSON/XML نیاز دارم. Iterate result.OmrElements خودتان و هر ساختاری که نیاز دارید را از هر یک بسازید IOmrElement’s GetAnswer()/GetCsv().
سوالات متداول
آیا Recalculate() تصویر اسکنشده را دوباره میخواند؟
نه — آن نتیجهٔ قبلاً شناساییشده را در مکان خود با آستانهٔ جدید دوباره امتیازدهی میکند.
QuestionName به چه چیزی اشاره دارد؟
مقدار Name که بر روی عنصر قالب (مثلاً AnswerSheetConfig.Name یا ChoiceBoxConfig.Name) تنظیم میکنید، علامت آن عنصر بود که در مقابل آن شناسایی شد.
آیا میتوانم فقط برخی عناصر را بهجای کل نتیجه صادر کنم؟
روشهای صادرات RecognitionResult کل نتیجه را پوشش میدهند؛ اگر به زیرمجموعهای نیاز دارید ابتدا OmrElements را خودتان فیلتر کنید.