هسته 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) ورودی خود را پیش از اجرای تشخیص اعتبارسنجی می‌کند:

ConditionException
input null استArgumentNullException
input InputType نیست SingleImage یا PDFNotSupportedException
مسیر اضافه‌شده از طریق 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)
OcrOutputList<RecognitionResult> بازگردانده شده توسط Recognize()
RecognitionResult.RecognitionTextمتن شناسایی شده کامل برای یک تصویر/صفحه
RecognitionResult.RecognitionLinesResultList<RecognitionResult.LinesResult>
RecognitionResult.LinesResult.TextInLineمتن شناسایی شده برای یک خط
RecognitionResult.LinesResult.LineSystem.Drawing.Rectangle جعبه محدود‌کننده برای یک خط

همچنین ببینید:

 فارسی