Технологія OCR(оптичне розпізнавання символів) дозволяє читати та перетворювати текст на зображеннях або відсканованих документах у машиночитану форму. OCR має різні варіанти використання, зокрема зчитування кодів із ваучерів, можливість редагування тексту, магазини самообслуговування, перетворення друкованих документів у цифрові формати тощо. На ринку доступні різні інструменти та бібліотеки OCR, однак ключовим фактором є надійність результатів OCR. У цій статті я покажу вам, як створити власну програму OCR і програмно перетворити зображення на текст за допомогою C++.
- Бібліотека C++ OCR для перетворення зображення на текст
- Перетворення сторінки зображення на текст за допомогою C++
- Виконайте OCR для зображення з одним рядком за допомогою C++
- Перетворення певної області зображення на текст у 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++, використовуючи документацію.