نحوه کار تشخیص
چگونه تشخیص کار میکند
این صفحه نحوه کار داخلی AsposeOcr.Recognize() را از اعتبارسنجی ورودی تا RecognitionResult نهایی شرح میدهد. فراخوانی AsposeOcr.Recognize(OcrInput) یک خط لوله ثابت هشتمرحلهای را اجرا میکند. هر مرحلهٔ زیر بر پایهٔ پیادهسازی خود کتابخانه استوار است — هیچ مرحلهٔ قابل تنظیمی وجود ندارد.
۱. اعتبارسنجی ورودی
پیش از بارگذاری هر مدلی، Recognize() OcrInput را اعتبارسنجی میکند: ورودی null (ArgumentNullException)، InputType پشتیبانینشده (NotSupportedException) و هر مسیر صفگذاریشدهای که روی دیسک وجود ندارد (FileNotFoundException) را رد میکند. تا زمانی که تمام ورودیها پاس نشوند، هیچ نشست ONNX ای ایجاد نمیشود.
۲. رندر PDF یا بارگذاری رستر
برای InputType.PDF، هر صفحه به یک تصویر ۲۴-بیتی RGB در 150 DPI using Aspose.PDF.FOSS. برای InputType.SingleImage، فایل رستر مستقیماً بارگذاری میشود. وضوح رندر 150 DPI ثابت است و قابل تنظیم نیست.
۳. پیشپردازش آشکارساز
تصویر با استفاده از وزنهای لومن Rec. 709، که روشنایی ادراکشده را دقیقتر از میانگین سادهٔ کانال حفظ میکند. اگر طولانیترین طرف تصویر بیش از ۱۰۰۰ پیکسل باشد، با یک Lanczos-8 فیلتر (دو عبور یکبعدی) برای مطابقت با پیشپردازش زمان آموزش مدل تشخیصگر. یک نوار سفید ۳۲ پیکسلی به پایین تصویر اضافه میشود برای همان دلیل.
4. تشخیص ناحیه
تصویر پیشپردازششده از طریق اولین مدل توکار ONNX عبور میکند که نقشههای احتمال متن و ویژگیهای بصری میانی را تولید میسازد. مدل دوم ONNX — مدل بهبود — پیوندهای بین کاراکترهای مجاور را تقویت میکند بهطوری که یک خط کامل متن بهعنوان یک ناحیه شناسایی شود نه چندین قطعه. هر دو مدل بر روی CPU اجرا میشوند و Microsoft.ML.OnnxRuntime برای 8 رشتهکار داخلعملیاتی تنظیم شده است.
5. پردازش پس از ناحیه
نقشههای احتمال متن و لینکِ دیتکتور با آستانهگذاری میشوند، سپس با پر کردن چهار-متصل بهصورت جستجوی عرض-اول گروهبندی میگردند. هر ناحیه حاصل گسترش مییابد، با یک مستطیل کمینهسطحی منطبق میشود، به مختصات تصویر اصلی مقیاسبندی میشود و به مستطیلهای خطی محور-محور غیر تو در تو تبدیل میشود. این مستطیلها همان چیزی هستند که RecognitionResult.LinesResult.Line در نهایت بازمیگرداند.
6. تشخیص خط
هر مستطیل شناساییشده با دو پیکسل حاشیهگذاری میشود، از تصویر منبع برش داده میشود و — نسبت طول-عرض آن حفظ میشود — به یک بوم ثابت تغییر اندازه داده میشود 1200×32 بوم سفید. نتیجه به یک تنسور خاکستری NHWC تبدیل میشود و به مدل شناسایی پاس داده میشود.
7. رمزگشایی CTC
خروجی خام مدل شناسایی با روش greedy رمزگشایی میشود CTC (طبقهبندی زمانی اتصالگرایانه) رمزگشایی: کلاسهای پیشبینیشده تکراری فشرده میشوند، کلاس خالی حذف میشود و کلاسهای باقیمانده از طریق الفبای لاتین تعبیهشده در مدل به متن شناساییشدهٔ خط تبدیل میگردند.
8. ترکیب نتایج
خطوط شناساییشده با مستطیلهای تصویر منبع خود جفت میشوند تا هر RecognitionResult.LinesResult ساخته شود. تمام خطوط غیرخالی با شکستهای خط پلتفرم ترکیب میشوند تا RecognitionResult.RecognitionText تولید شود.
کار ترتیبی در مقابل کار موازی
فایلهای ورودی و، برای PDFها، صفحات جداگانه پردازش میشوند sequentially — هیچ چندریسمانی در سطح ورودی API وجود ندارد. موازیسازی فقط در داخل هر فراخوانی استنتاج ONNX وجود دارد، که Microsoft.ML.OnnxRuntime اجرأ گراف را بر روی ۸ رشتهٔ پیکربندیشدهٔ درونعملیاتی خود موازی میکند.