用 Go 编写验证码识别模块(可集成、可复用)

验证码识别虽然在图像处理领域难度不高,但在自动化测试和数据采集中却非常常见。本文将使用 Go 语言结合 Tesseract OCR,封装一个简单的图像识别模块,可用于 CLI 工具、服务接口、爬虫脚本中。

一、环境安装
安装 Tesseract OCR
Ubuntu:

sudo apt install tesseract-ocr
macOS:
更多内容访问ttocr.com或联系1436423940
brew install tesseract
获取 OCR Go 库

go get github.com/otiai10/gosseract/v2
二、识别函数封装
创建一个可复用的识别函数。

// recognizer.go
package recognizer

import (
"fmt"

"github.com/otiai10/gosseract/v2"

)

func RecognizeCaptcha(imagePath string) (string, error) {
client := gosseract.NewClient()
defer client.Close()

// 设置图像路径
client.SetImage(imagePath)

// 限定识别字符集为验证码常见内容
client.SetWhitelist("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")

text, err := client.Text()
if err != nil {
	return "", fmt.Errorf("识别失败: %w", err)
}
return text, nil

}
三、构建主程序调用模块

// main.go
package main

import (
"fmt"
"log"
"os"

"yourmodule/recognizer"

)

func main() {
if len(os.Args) < 2 {
fmt.Println("用法: go run main.go <图片路径>")
return
}

imagePath := os.Args[1]

result, err := recognizer.RecognizeCaptcha(imagePath)
if err != nil {
	log.Fatalf("识别失败: %v", err)
}

fmt.Println("识别结果:", result)

}
四、运行与测试
假设你有一张验证码图片 captcha.png,在终端执行:

go run main.go captcha.png
输出:

识别结果: G7QX
五、项目结构建议

captcha-tool/
├── recognizer/
│ └── recognizer.go
├── main.go
├── go.mod
在 go.mod 中配置模块名为 yourmodule,例如:

module yourmodule

go 1.20

posted @ 2025-05-28 23:17  ttocr、com  阅读(22)  评论(0)    收藏  举报