كيفية معالجة مجموعة من الصور دفعيًا باستخدام Aspose.OCR FOSS for .NET
Aspose.OCR FOSS لـ .NET يمكنه التعرف على عدة صور في مكالمة واحدة لـ Recognize(). يوضح هذا الدليل كيفية وضع عدة ملفات في OcrInput واحد وقراءة نتائجها بالترتيب.
دليل خطوة بخطوة
الخطوة 1: تثبيت الحزمة
dotnet add package Aspose.OCR.FOSSالخطوة 2: إضافة ملفات متعددة إلى 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");الخطوة 3: التعرف على النتائج وقراءتها بالترتيب
استدعِ 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().
الخطوة 4: تجميع ملف 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 هو نمط عادي.