使用 Vala 編寫一個簡單的文字識別程式

ttocr、com發表於2024-11-08

文字識別(Optical Character Recognition, OCR)是一項非常有用的技術,能夠將影像中的文字轉換為可編輯和搜尋的格式。Vala 語言,作為一種現代的程式語言,具有與 C 類似的效率,並且與 GNOME 框架高度相容。在本文中,我們將使用 Vala 編寫一個簡單的 OCR 程式。

環境設定
首先,您需要確保已安裝了 Vala 編譯器和 Tesseract OCR 庫。Tesseract 是一個開源的 OCR 引擎,廣泛用於影像文字識別。

在 Ubuntu 上,您可以透過以下命令安裝所需的工具:

bash

sudo apt update
sudo apt install valac libtesseract-dev
匯入必要的庫
在 Vala 中,我們需要匯入 Tesseract 庫以及處理影像的 GdkPixbuf 庫。Vala 透過其 GObject 型別系統與 C 庫高度相容,因此我們可以直接使用這些庫。

更多內容訪問ttocr.com或聯絡1436423940
using GLib;
using GdkPixbuf;
using Tesseract;

public class OCRProgram {
public static void main(string[] args) {
// 檢查是否提供了圖片路徑
if (args.length != 2) {
print("用法: ocrprogram <影像檔案路徑>\n");
return;
}

    string imagePath = args[1];
    string result = perform_ocr(imagePath);

    print("識別的文字:\n%s\n", result);
}

// 使用 Tesseract 進行 OCR
public static string perform_ocr(string imagePath) {
    // 載入影像
    try {
        Pixbuf? pixbuf = Pixbuf.new_from_file(imagePath);
        if (pixbuf == null) {
            print("無法載入影像檔案: %s\n", imagePath);
            return "";
        }
    } catch (Error e) {
        print("載入影像時出錯: %s\n", e.message);
        return "";
    }

    // 初始化 Tesseract OCR 引擎
    try {
        Tesseract.Api api = new Tesseract.Api();
        api.init(null, "eng");  // 使用英語識別
        api.set_image(imagePath);  // 設定要識別的影像

        // 識別文字
        string recognizedText = api.get_text();
        return recognizedText;
    } catch (Error e) {
        print("OCR 處理時出錯: %s\n", e.message);
        return "";
    }
}

}
程式碼解析
匯入必要的庫

GLib: 這是 Vala 的標準庫,用於處理字串和其他基本資料結構。
GdkPixbuf: 用於載入和操作影像資料。
Tesseract: 這是我們使用的 OCR 引擎,透過 Tesseract.Api 類提供介面。
main 函式
main 函式接受命令列引數,檢查是否提供了影像路徑。如果沒有,它會顯示如何使用該程式。然後,它呼叫 perform_ocr 函式進行影像文字識別。

perform_ocr 函式
這個函式負責載入影像並使用 Tesseract 進行文字識別。首先,它會載入影像檔案,如果檔案載入失敗,它會輸出錯誤資訊。接下來,它初始化 Tesseract OCR 引擎,設定要處理的影像,並獲取識別的文字。

Tesseract API

init: 初始化 OCR 引擎,這裡我們指定了使用英語("eng")語言進行識別。
set_image: 設定需要處理的影像檔案路徑。
get_text: 獲取識別的文字內容。
編譯和執行程式
將上述程式碼儲存為 ocr_program.vala 檔案。

編譯程式碼:

valac --pkg tesseract-ocr ocr_program.vala
這會生成一個可執行檔案 ocr_program。

執行程式並提供影像檔案路徑:

bash

./ocr_program your_image.png
如果程式成功識別文字,它會列印出影像中的文字。

相關文章