چگونه چندین تصویر را بهصورت دستهای با Aspose.OCR FOSS for .NET پردازش کنیم
Aspose.OCR FOSS برای .NET میتواند چندین تصویر را در یک تماس Recognize() شناسایی کند. این راهنما نشان میدهد چگونه میتوانید چندین فایل را در یک OcrInput صف کنید و نتایج آنها را به ترتیب بخوانید.
راهنمای گام به گام
مرحله ۱: نصب بسته
dotnet add package Aspose.OCR.FOSSمرحله ۲: افزودن چندین فایل به یک OcrInput
تمام فایلهای اضافهشده به یک OcrInput باید همان InputType را داشته باشند. آنها بهصورت متوالی پردازش میشوند و به ترتیب افزودن بازگردانده میشوند.
using Aspose.OCR;
var api = new AsposeOcr();
using var input = new OcrInput(InputType.SingleImage);
input.Add("page-1.jpg");
input.Add("page-2.png");مرحله ۳: تشخیص و خواندن نتایج به ترتیب
یک بار AsposeOcr.Recognize() را برای کل دسته فراخوانی کنید، سپس OcrOutput را بر اساس شاخص تکرار کنید تا هر نتیجه را به فایلی که از آن آمده است مطابقت دهید.
OcrOutput output = api.Recognize(input);
for (int index = 0; index < output.Count; index++)
{
Console.WriteLine($"Image {index + 1}");
Console.WriteLine(output[index].RecognitionText);
}OcrOutput یک لیست مرتب از RecognitionResult است، با یک ورودی برای هر تصویر به ترتیبی که OcrInput.Add() فراخوانی شده بود.
مرحله ۴: بهجای آن یک PDF چندصفحهای را بهصورت دستهای پردازش کنید
همان مدل دستهبندی برای PDF نیز اعمال میشود: OcrInput را با InputType.PDF بسازید، یک مسیر PDF اضافه کنید، و Recognize() برای هر صفحه یک RecognitionResult بر میگرداند، به ترتیب صفحات.
using var pdfInput = new OcrInput(InputType.PDF);
pdfInput.Add("multi-page-document.pdf");
OcrOutput pages = api.Recognize(pdfInput);
Console.WriteLine($"Pages recognized: {pages.Count}");مشکلات رایج و راهحلها
Mixing InputType.SingleImage and InputType.PDF مسیرها در یک OcrInput. پشتیبانی نمیشود — هر OcrInput با یک InputType و فقط فایلهای آن نوع را میپذیرد. از دو جداگانه OcrInput نمونهها (و دو Recognize() تماسها) اگر نیاز دارید هر دو تصویر و PDF را بهصورت همزمان پردازش کنید.
نتایج بهصورت نامرتب ظاهر میشوند. نباید اینطور باشد — OcrOutput ترتیب دقیق را حفظ میکند OcrInput.Add() فراخوانی شد. اگر فایلها بهصورت دوبارهچیده ظاهر شوند، بررسی کنید که کد فراخوانیکننده آنها را به ترتیب مورد نظر قبل از فراخوانی اضافه میکند Recognize().
یک فایل خراب کل دسته را شکست میدهد. Recognize() قبل از اجرای هر استنتاج مدل، هر مسیر صفگذاریشده را اعتبارسنجی میکند؛ اگر هر مسیر وجود نداشته باشد، کل فراخوانی خطا میدهد FileNotFoundException بهجای رد کردن آن فایل. اگر نتایج جزئی از یک دسته بزرگ قابل قبول هستند، ابتدا مسیرها را خودتان اعتبارسنجی کنید.
سوالات متداول
آیا پردازش دستهای فایلها را بهصورت موازی اجرا میکند؟
خیر. فایلها و صفحات PDF بهصورت ترتیبی پردازش میشوند — هیچ چندرشتهای سطح ورودی API وجود ندارد. Microsoft.ML.OnnxRuntime فقط درون هر فراخوانی استنتاجی جداگانه کار را موازی میکند.
آیا محدودیتی برای تعداد فایلهایی که یک OcrInput میتواند نگه دارد وجود دارد؟
رابط عمومی API محدودیت ثابت را مستند نکرده است؛ OcrInput.Add() بهسادگی یک مسیر را در صف میگذارد. دستههای بسیار بزرگ یکفایلبهیک پردازش میشوند، بنابراین توان پردازش بهصورت خطی مقیاس مییابد، نه بهصورت موازی.
آیا میتوانم همان نمونه AsposeOcr را در چندین دسته دوباره استفاده کنم؟
بله — AsposeOcr خودش هیچ حالتِ مربوط به هر فراخوانی را نگه نمیدارد؛ ساختن یک OcrInput جدید برای هر دسته و فراخوانی Recognize() روی همان نمونهٔ AsposeOcr یک الگوی معمولی است.