هسته 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 InputType نیست SingleImage یا PDF | NotSupportedException |
مسیر اضافهشده از طریق OcrInput.Add() در دیسک وجود ندارد | FileNotFoundException |
این بررسیها قبل از هر استنتاج مدل اجرا میشوند، بنابراین ورودی نامناسب بلافاصله شکست میخورد نه پس از یک مرحله تشخیص جزئی.
نکات و بهترین شیوهها
OcrOutputخالی است (Count == 0) اگرOcrInputهیچ فایلی اضافه نکرده باشد — قبل از فهرستسازیCountرا بررسی کنید.RecognitionResult.LinesResultدرونRecognitionResultتو در تو است؛ نام نوع سطح بالاییLinesResultبه تنهایی نوع قابل حل خارج از این تو در تویی نیست.
مشکلات رایج
| مسٔله | علت | رفع |
|---|---|---|
ArgumentNullException در Recognize() | null به جای یک OcrInput ارسال شد | همیشه قبل از فراخوانی Recognize() یک OcrInput بسازید |
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 جعبه محدودکننده برای یک خط |