OCR را با استفاده از C++ انجام دهید

فناوری OCR (تشخیص کاراکتر نوری) به شما امکان می‌دهد متن موجود در تصاویر یا اسناد اسکن شده را بخوانید و به شکل قابل خواندن توسط ماشین تبدیل کنید. OCR موارد استفاده مختلفی دارد که شامل خواندن کدها از کوپن ها، ساخت متن قابل ویرایش، ذخیره سازی سلف سرویس، تبدیل اسناد چاپی به فرمت های دیجیتال و غیره می شود. ابزارها و کتابخانه های مختلف OCR در بازار موجود است، با این حال، قابل اعتماد بودن نتایج OCR یک عامل کلیدی است. در این مقاله، من به شما نشان خواهم داد که چگونه برنامه OCR خود را ایجاد کنید و با استفاده از C++ تصاویر را به صورت برنامه‌نویسی به متن تبدیل کنید.

کتابخانه C++ OCR برای تبدیل تصویر به متن

Aspose یک کتابخانه OCR C++ قدرتمند ارائه می‌کند که از یادگیری عمیق برای ارائه نتایج OCR قابل اعتمادتر و نزدیک به دقیق‌تر برای شما استفاده می‌کند. می‌توانید فایل‌های کتابخانه و همچنین یک پروژه نمونه را از GitHub دانلود کنید.

با استفاده از C++ صفحه تصویر را به متن تبدیل کنید

اجازه دهید ابتدا سناریویی را بررسی کنیم که در آن تصویر حاوی یک متن چند خطی است. این ممکن است زمانی اتفاق بیفتد که شما یک کتاب اسکن شده دارید که در آن هر صفحه از کتاب شامل یک سری خطوط متنی است. در زیر مراحل تبدیل تصویر به متن در این مورد آمده است.

  • مسیر تصویر را در یک متغیر رشته ای تنظیم کنید.
  • یک بافر برای ذخیره نتایج OCR آماده کنید.
  • OCR را با استفاده از تابع aspose::ocr::page(const char \imagepath، wchart \buffer، sizet buffersize) انجام دهید.
  • نتایج را چاپ کنید یا در یک فایل ذخیره کنید.

نمونه کد زیر نحوه اجرای OCR و تبدیل تصویر به متن با استفاده از C++ را نشان می دهد.

std::string image_path = "sample.png";

// بافر را برای نتیجه آماده کنید (در نمادها، len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

// OCR را انجام دهید
size_t size = aspose::ocr::page(image_path.c_str(), buffer, len);

//نتیجه چاپ
std::wcout << buffer << L"\n"; 

OCR را برای یک تصویر با یک خط با استفاده از C++ انجام دهید

در مثال قبلی، تصویری را که دارای چندین خط متن است تبدیل کرده ایم. با این حال، ممکن است موردی وجود داشته باشد که تصویر فقط شامل یک خط متن مانند عنوان یا شعار باشد. مراحل زیر برای انجام OCR در چنین مواردی آورده شده است.

  • از یک متغیر رشته ای برای تعیین مسیر تصویر استفاده کنید.
  • یک بافر برای ذخیره نتایج OCR ایجاد کنید.
  • OCR را با استفاده از تابع aspose::ocr::line(const char \imagepath، wchart \buffer، sizet buffersize) انجام دهید.
  • نتایج OCR را ذخیره یا چاپ کنید.

نمونه کد زیر نحوه اجرای OCR را روی یک تصویر با یک خط متن با استفاده از C++ نشان می دهد.

std::string image_path = "sample_line.jpg";

// بافر را برای نتیجه آماده کنید (در نمادها، len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

// OCR را انجام دهید
size_t size = aspose::ocr::line(image_path.c_str(), buffer, len);

//نتیجه چاپ
std::wcout << buffer << L"\n";

یک ناحیه خاص از تصویر را به متن در C++ تبدیل کنید

همچنین می توانید API را سفارشی کنید تا ناحیه ای از تصویر را که می خواهید OCR را در آن انجام دهید محدود کنید. در این صورت می توانید یک مستطیل روی تصویر ایجاد کنید تا به قسمت مورد نظر دسترسی داشته باشید. در زیر مراحل استخراج متن از یک ناحیه خاص از تصویر آمده است.

  • مسیر تصویر را در یک متغیر رشته ای تنظیم کنید.
  • یک بافر برای ذخیره نتایج OCR آماده کنید.
  • OCR را با استفاده از تابع aspose::ocr::pagerect(const char \imagepath, wchart \buffer, sizet buffersize, int x, int y, int w, int h) انجام دهید.
  • نتایج OCR را چاپ کنید.

نمونه کد زیر نحوه تبدیل ناحیه خاصی از تصویر را با استفاده از C++ به متن نشان می دهد.

std::string image_path = "sample_line.jpg";

// بافر را برای نتیجه آماده کنید (در نمادها، len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };

int x = 138, y = 352, w = 2033, h = 537;

// OCR یا ناحیه انتخاب شده را انجام دهید
size_t size = aspose::ocr::page_rect(image_path.c_str(), buffer, len, x, y, w, h);

//نتیجه چاپ
std::wcout << buffer << L"\n";

نتیجه

در این مقاله نحوه استفاده از کتابخانه OCR Aspose برای تبدیل تصاویر به متن در C++ را یاد گرفتید. ما نحوه OCR را روی یک تصویر با یک یا چند خط متن و همچنین خواندن متن از یک ناحیه خاص از یک تصویر دیده‌ایم. با استفاده از مستندات می‌توانید درباره Aspose.OCR برای C++ بیشتر بدانید.

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