النواة API
النواة API
تغطي هذه الصفحة دورة حياة الكائن وسلوك الاستثناءات لأربعة الأنواع الأساسية: AsposeOcr، OcrInput، OcrOutput، وRecognitionResult.
دورة حياة OcrInput
OcrInput يطبق IDisposable ويجب إنشاؤه في بيان using. يأخذ المُنشئ الخاص به InputType (InputType.SingleImage أو InputType.PDF)، وOcrInput.Add(string) يضيف مسار ملف واحد في كل مرة — يمكن لنفس مثال OcrInput أن يحتوي على ملفات متعددة من نفس نوع الإدخال.
using Aspose.OCR;
using var input = new OcrInput(InputType.SingleImage);
input.Add("page-1.jpg");
input.Add("page-2.png");التعرف على OcrOutput وقراءته
AsposeOcr.Recognize(OcrInput) تُعيد OcrOutput، وهو List<RecognitionResult> — يمكن فهرسته مثل أي قائمة، مع RecognitionResult واحد لكل صورة (بالنسبة إلى InputType.SingleImage، واحد لكل ملف مضاف) أو لكل صفحة PDF (بالنسبة إلى InputType.PDF).
var api = new AsposeOcr();
OcrOutput output = api.Recognize(input);
RecognitionResult first = output[0];RecognitionResult والنوع المتداخل LinesResult
RecognitionResult.LinesResult هي فئة متداخلة — اشير إليها كـ RecognitionResult.LinesResult، وليس كنوع مستقل. كل RecognitionResult تُظهر:
RecognitionText— النص المعترف به بالكامل لتلك الصورة أو الصفحة، مع دمج الأسطر بفواصل سطرية.RecognitionLinesResult—List<RecognitionResult.LinesResult>، مدخل واحد لكل سطر نص مكتشف، يحتوي كل منها علىTextInLine(نص السطر) وLine(System.Drawing.Rectangleالذي يحدد إحداثيات بكسل ذلك السطر في الصورة المصدر).
RecognitionResult result = output[0];
Console.WriteLine(result.RecognitionText);
foreach (RecognitionResult.LinesResult line in result.RecognitionLinesResult)
{
System.Drawing.Rectangle bounds = line.Line;
Console.WriteLine($"x={bounds.X}, y={bounds.Y}: {line.TextInLine}");
}استثناءات
AsposeOcr.Recognize(OcrInput) يتحقق من صحة مدخلاته قبل تشغيل التعرف:
| Condition | Exception |
|---|---|
input هو null | ArgumentNullException |
input’s InputType ليس SingleImage أو PDF | NotSupportedException |
المسار المضاف عبر OcrInput.Add() غير موجود على القرص | FileNotFoundException |
تُجرى هذه الفحوصات قبل أي استدلال للنموذج، لذا ففشل المدخل السيئ يحدث فوراً بدلاً من بعد مرور جزئي للتعرف.
نصائح وأفضل الممارسات
OcrOutputفارغ (Count == 0) إذا لم يضيفOcrInputأي ملفات — تحقق منCountقبل الفهرسة.RecognitionResult.LinesResultمتداخلة داخلRecognitionResult؛ اسم النوع على المستوى الأعلىLinesResultبمفرده ليس نوعًا يمكن حله خارج ذلك التداخل.
مشكلات شائعة
| مشكلة | سبب | إصلاح |
|---|---|---|
ArgumentNullException على Recognize() | تم تمرير null بدلاً من OcrInput | دائمًا أنشئ OcrInput قبل استدعاء Recognize() |
NotSupportedException على Recognize() | تم إنشاء OcrInput بنوع إدخال غير SingleImage/PDF | فقط InputType.SingleImage و InputType.PDF صالحة |
FileNotFoundException على Recognize() | المسار في قائمة الانتظار غير موجود | تحقق من صحة مسارات الملفات قبل استدعاء OcrInput.Add() |
FAQ
هل RecognitionResult.LinesResult فئة مستقلة على المستوى الأعلى؟
لا — هي متداخلة داخل RecognitionResult. أشر إليها كـ RecognitionResult.LinesResult.
هل يضمن OcrOutput ترتيب الصفحات لملفات PDF؟
نعم — بالنسبة إلى InputType.PDF، تُعيد OcrOutput RecognitionResult واحدًا لكل صفحة بترتيب المصدر.
ماذا يحدث إذا استدعيت Recognize() مع OcrInput فارغ؟
إنّه يُعيد OcrOutput مع Count == 0 بدلاً من الرمي.
ملخص API Reference
| الصنف/الطريقة | وصف |
|---|---|
AsposeOcr.Recognize(OcrInput) | يُتحقق ويُعرّف؛ يرمي ArgumentNullException، NotSupportedException أو FileNotFoundException عند الإدخال غير صالح |
OcrInput.OcrInput(InputType) | يُنشئ حاوية إدخال لنوع إدخال واحد |
OcrInput.Add(string) | يُضيف مسار ملف إلى قائمة الانتظار |
OcrInput.Dispose() | يطلق الموارد (عبر IDisposable) |
OcrOutput | List<RecognitionResult> تم إرجاعه بواسطة Recognize() |
RecognitionResult.RecognitionText | النص الكامل المعترف به لصورة/صفحة واحدة |
RecognitionResult.RecognitionLinesResult | List<RecognitionResult.LinesResult> |
RecognitionResult.LinesResult.TextInLine | النص المعترف به لسطر واحد |
RecognitionResult.LinesResult.Line | System.Drawing.Rectangle مربع الإحاطة لسطر واحد |