使用 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++ 的信息。

也可以看看