使用 Go 語言實現簡單的文字識別(OCR)

ttocr、com發表於2024-12-06

隨著人工智慧技術的迅猛發展,文字識別(OCR,Optical Character Recognition)已經廣泛應用於文件掃描、自動化資料輸入等領域。在這篇文章中,我們將透過 Go 語言實現一個簡單的文字識別程式,來提取圖片中的文字。為了方便操作,我們將使用 GoCV 庫,這是一個基於 OpenCV 的 Go 語言繫結,提供了強大的計算機視覺功能。

步驟 1:安裝 Go 和相關依賴
安裝 Go:
更多內容訪問ttocr.com或聯絡1436423940
首先,確保你已經安裝了 Go 程式語言。如果尚未安裝,可以透過以下命令安裝:

在 Go 官網 下載並安裝 Go。
安裝完成後,可以使用以下命令驗證安裝是否成功:

bash

go version
安裝 GoCV 庫:

GoCV 是 OpenCV 的 Go 語言繫結,可以透過以下命令安裝:

在 Ubuntu 上,你可以透過以下命令安裝依賴:

bash

sudo apt-get update
sudo apt-get install -y libopencv-dev
然後,安裝 GoCV 庫:

bash

go get -u -d gocv.io/x/gocv
安裝 Tesseract OCR:

Tesseract 是一個開源的 OCR 引擎,我們將透過 GoCV 結合 Tesseract 來提取影像中的文字。

在 Ubuntu 上安裝 Tesseract:

bash

sudo apt-get install tesseract-ocr
其他作業系統可參考 Tesseract 安裝文件。

步驟 2:編寫 Go 程式碼實現文字識別
我們將使用 GoCV 庫載入影像,並利用 Tesseract 來識別影像中的文字。以下是完整的程式碼示例:

go

package main

import (
"fmt"
"log"
"gocv.io/x/gocv"
"github.com/otiai10/gosseract"
)

func main() {
// 開啟影像檔案
img := gocv.IMRead("image.png", gocv.IMReadColor)
if img.Empty() {
log.Fatalf("影像載入失敗!")
}
defer img.Close()

// 轉換為灰度影像
grayImg := gocv.NewMat()
defer grayImg.Close()
gocv.CvtColor(img, &grayImg, gocv.ColorBGRToGray)

// 使用 Tesseract 進行文字識別
client := gosseract.NewClient()
defer client.Close()

client.SetImageFromBytes(grayImg.ToBytes())
text, err := client.Text()
if err != nil {
    log.Fatalf("文字識別失敗: %v", err)
}

// 輸出識別結果
fmt.Println("識別到的文字:")
fmt.Println(text)

}
步驟 3:執行程式碼
將圖片放在專案目錄下,並確保圖片的路徑正確。

執行以下命令來執行 Go 程式碼:

bash

go run main.go
程式會載入圖片並進行文字識別,識別的文字將輸出到控制檯。

步驟 4:最佳化和增強
影像預處理: OCR 識別的準確性通常與影像質量相關。你可以對影像進行一些預處理來提高識別率。例如,影像二值化、去噪聲和銳化等。

go

// 影像二值化處理
gocv.Threshold(grayImg, &grayImg, 0, 255, gocv.ThresholdBinaryInv)
多語言支援: Tesseract 支援多語言識別,你可以透過 SetLanguage 方法選擇需要識別的語言。例如:

go

client.SetLanguage("eng+chi_sim") // 英文和簡體中文
錯誤處理和最佳化: 在實際應用中,你可能需要對影像的質量進行進一步處理,或為不同的輸入影像調整 OCR 配置,以獲得更好的識別效果。

相關文章