چگونه با API در Python کار کنیم
Aspose.OMR FOSS برای Python عمومی API (omr.api) بهصورت عمدی کوچک است: OmrEngine، TemplateProcessor، ImageCollection و FormValidationLogic. این راهنما نشان میدهد که چگونه اینها در یک گردشکار تولید-و-شناسایی کنار هم قرار میگیرند.
راهنمای گام به گام
مرحله ۱: نصب بسته
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.')"مرحله ۲: وارد کردن کلاسهای مورد نیاز
from omr.api import OmrEngine, FormValidationLogicمرحله ۳: تولید و ذخیره یک قالب
engine = OmrEngine()
gen = engine.Generate("final-exam.txt")
gen.Save("out", "final-exam")مرحله ۴: بارگذاری الگو برای شناسایی
به جای Ignore پیشفرض، FormValidationLogic.Exception را عبور دهید اگر میخواهید یک تخلف برای سوالاتی که انتخاب چندگانه غیرفعال است، ایجاد شود، بهجای اینکه بهصورت ساکت پذیرفته شوند.
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Exception)مرحله ۵: شناسایی و خروجیگیری
result = processor.Recognize("scan.png")
print(result.GetCsv())مشکلات رایج و راهحلها
FormValidationLogic.Exception هرگز خطا نمیاندازد، حتی در سؤال چندنشاندار. این بررسی فقط برای سؤالی که دارای Multiselect disabled; GlobalPageSettings.Multiselect بهصورت پیشفرض فعال است، بنابراین تأیید کنید که برای سؤالی که انتظار دارید تکانتخابی باشد، بهصورت صریح غیرفعال شده باشد.
من نیاز دارم تا اسکنهای متعدد را همزمان شناسایی کنم. از TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) بهجای فراخوانی Recognize() در یک حلقه.
تصویری را تحت نامی ثبت کردم که قبلاً استفاده شده بود. ImageCollection.Add بازنویسی نمیکند — بررسی کنید Contains(name) اول، یا برای هر تصویر از نامی منحصر بهفرد استفاده کنید.
سوالات متداول
آیا OmrEngine برای استفاده مجدد در چندین قالب ایمن است؟
بله — بیوضعیت است.
چگونه میتوانم یک نتیجه را با آستانه متفاوت دوباره امتیازدهی کنم بدون اینکه دوباره اسکن کنم؟
فراخوانی TemplateProcessor.Recalculate(result, recognitionThreshold).
چگونه میتوانم یک تصویر در حافظه را بهجای خواندن از دیسک در markup جاسازی کنم؟
آن را با ImageCollection.Add(name, image_bytes) ثبت کنید، سپس در markup به عنوان ?image=<name> ارجاع دهید.