使用 C++ 执行 OCR

OCR(光学字符识别)技术可让您阅读图像或扫描文档中的文本并将其转换为机器可读的形式。 OCR 有各种用例,包括从凭证读取代码、使文本可编辑、自助存储、将打印文档转换为数字格式等。市场上有各种 OCR 工具和库,但是,OCR 结果的可靠性是一个关键因素。在本文中,我将向您展示如何创建自己的 OCR 应用程序并使用 C++ 以编程方式将图像转换为文本。

将图像转换为文本的 C++ OCR 库

Aspose 提供了一个强大的 C++ OCR 库,它使用深度学习为您提供更可靠和更接近准确的 OCR 结果。您可以从 GitHub 下载 库文件以及示例项目。

使用 C++ 将图像页面转换为文本

让我们首先看看图像包含多行文本的场景。当您有一本扫描的书时,可能会出现这种情况,其中书的每一页都包含一堆文本行。以下是在这种情况下将图像转换为文本的步骤。

  • 在字符串变量中设置图像的路径。
  • 准备一个缓冲区来存储 OCR 结果。
  • 使用 aspose::ocr::page(const char \imagepath, wchart \buffer, sizet buffersize) 函数执行 OCR。
  • 打印结果或将它们保存在文件中。

以下代码示例展示了如何使用 C++ 执行 OCR 并将图像转换为文本。

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"; 

使用 C++ 对单行图像执行 OCR

在前面的示例中,我们已经转换了具有多行文本的图像。但是,可能存在图像仅包含单行文本(例如标题或标语)的情况。以下是在这种情况下执行 OCR 的步骤。

  • 使用字符串变量设置图像的路径。
  • 创建一个缓冲区来存储 OCR 结果。
  • 使用 aspose::ocr::line(const char \imagepath, wchart \buffer, sizet buffersize) 函数执行 OCR。
  • 保存或打印 OCR 结果。

以下代码示例展示了如何使用 C++ 对具有单行文本的图像执行 OCR。

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 结果。
  • 使用 aspose::ocr::pagerect(const char \imagepath, wchart \buffer, sizet buffersize, int x, int y, int w, int h) 函数执行 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 };

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";

结论

在本文中,您学习了如何使用 Aspose 的 OCR 库将图像转换为 C++ 中的文本。我们已经了解了如何对具有单行或多行文本的图像执行 OCR,以及如何从图像的特定区域读取文本。您可以使用 文档 了解更多关于 Aspose.OCR for C++ 的信息。

也可以看看