Виконайте OCR за допомогою C++

Технологія OCR(оптичне розпізнавання символів) дозволяє читати та перетворювати текст на зображеннях або відсканованих документах у машиночитану форму. OCR має різні варіанти використання, зокрема зчитування кодів із ваучерів, можливість редагування тексту, магазини самообслуговування, перетворення друкованих документів у цифрові формати тощо. На ринку доступні різні інструменти та бібліотеки OCR, однак ключовим фактором є надійність результатів OCR. У цій статті я покажу вам, як створити власну програму OCR і програмно перетворити зображення на текст за допомогою C++.

Бібліотека C++ OCR для перетворення зображення на текст

Aspose пропонує потужну бібліотеку C++ OCR, яка використовує глибоке навчання, щоб надати вам більш надійні та майже точні результати 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.

У наведеному нижче прикладі коду показано, як виконати оптичне розпізнавання тексту на зображенні з одним рядком тексту за допомогою 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 for C++, використовуючи документацію.

Дивись також