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

使用 C++ 执行 OCR

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

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

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

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

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

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

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

std::string image_path = "sample.png";
// Prepare buffer for result (in symbols, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };
// Perform OCR
size_t size = aspose::ocr::page(image_path.c_str(), buffer, len);
//Print result
std::wcout << buffer << L"\n";

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

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

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

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

std::string image_path = "sample_line.jpg";
// Prepare buffer for result (in symbols, len_byte = len * sizeof(wchar_t))
const size_t len = 4096;
wchar_t buffer[len] = { 0 };
// Perform OCR
size_t size = aspose::ocr::line(image_path.c_str(), buffer, len);
//Print result
std::wcout << buffer << L"\n";

在 C++ 中将图像的特定区域转换为文本

您还可以自定义 API 以限制要执行 OCR 的图像区域。在这种情况下,您可以在图像上创建一个矩形以访问所需区域。以下是从图像的特定区域提取文本的步骤。

  • 在字符串变量中设置图像的路径。
  • 准备一个缓冲区来存储 OCR 结果。
  • 使用 aspose::ocr::page_rect(const char *image_path, wchar_t *buffer, size_t buffer_size, int x, int y, int w, int h) 函数执行 OCR。
  • 打印 OCR 结果。

以下代码示例展示了如何使用 C++ 将图像的特定区域转换为文本。

std::string image_path = "sample_line.jpg";
// Prepare buffer for result (in symbols, 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;
// Perform OCR or selected area
size_t size = aspose::ocr::page_rect(image_path.c_str(), buffer, len, x, y, w, h);
//Print result
std::wcout << buffer << L"\n";

结论

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

也可以看看