Технология OCR (оптическое распознавание символов) позволяет читать и преобразовывать текст на изображениях или отсканированных документах в машиночитаемую форму. OCR имеет различные варианты использования, включая считывание кодов из ваучеров, редактируемость текста, магазины самообслуживания, преобразование печатных документов в цифровые форматы и т. д. На рынке доступны различные инструменты и библиотеки OCR, однако надежность результатов OCR является ключевым фактором. В этой статье я покажу вам, как создать собственное приложение OCR и программно преобразовать изображения в текст с помощью C++.
- Библиотека C++ OCR для преобразования изображения в текст
- Преобразование страницы изображения в текст с помощью C++
- Выполните OCR для изображения с одной строкой, используя C++
- Преобразование определенной области изображения в текст на С++
Библиотека C++ OCR для преобразования изображения в текст
Aspose предлагает мощную библиотеку C++ OCR, которая использует глубокое обучение, чтобы предоставить вам более надежные и близкие к точным результаты OCR. Вы можете скачать файлы библиотеки, а также пример проекта с GitHub.
Преобразование страницы изображения в текст с помощью C++
Давайте сначала проверим сценарий, в котором изображение содержит многострочный текст. Это может быть тот случай, когда у вас есть отсканированная книга, каждая страница книги содержит несколько строк текста. Ниже приведены шаги для преобразования изображения в текст в этом случае.
- Задайте путь к изображению в строковой переменной.
- Подготовьте буфер для хранения результатов OCR.
- Выполните распознавание символов с помощью функции aspose::ocr::page(const char \imagepath, wchart\buffer, sizet buffersize).
- Распечатайте результаты или сохраните их в файл.
В следующем примере кода показано, как выполнить распознавание символов и преобразовать изображение в текст с помощью C++.
std::string image_path = "sample.png";
// Подготовить буфер для результата (в символах len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };
// Выполнить распознавание текста
size_t size = aspose::ocr::page(image_path.c_str(), buffer, len);
//Распечатать результат
std::wcout << buffer << L"\n";
Выполните OCR для изображения с одной строкой, используя C++
В предыдущем примере мы преобразовали изображение с несколькими строками текста. Однако возможен случай, когда изображение содержит только одну строку текста, например заголовок или слоган. Ниже приведены шаги для выполнения 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 };
// Выполнить распознавание текста
size_t size = aspose::ocr::line(image_path.c_str(), buffer, len);
//Распечатать результат
std::wcout << buffer << L"\n";
Преобразование определенной области изображения в текст на C++
Вы также можете настроить API, чтобы ограничить область изображения, в которой вы хотите выполнить распознавание символов. В этом случае вы можете создать прямоугольник на изображении для доступа к нужной области. Ниже приведены шаги для извлечения текста из определенной области изображения.
- Задайте путь к изображению в строковой переменной.
- Подготовьте буфер для хранения результатов 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++. Мы увидели, как выполнять распознавание изображений с одной или несколькими строками текста, а также читать текст из определенной области изображения. Вы можете узнать больше об Aspose.OCR для C++, используя документацию.