使用 Go 和 Tesseract 实现英文数字验证码识别工具
一、项目概述
我们将用 Go 编写一个小工具,自动读取验证码图像、进行图像预处理(可选),并使用 Tesseract 进行 OCR 识别。适用于构建登录自动化工具、测试辅助程序等。
二、环境准备
- 安装 Go
从官网下载安装:https://go.dev/dl
确认版本:
更多内容访问ttocr.com或联系1436423940
go version
2. 安装 Tesseract
Ubuntu:
sudo apt update
sudo apt install tesseract-ocr
macOS:
brew install tesseract
Windows:下载地址
https://github.com/tesseract-ocr/tesseract
确保配置好 tesseract 命令到环境变量。
- 安装 gosseract
go get github.com/otiai10/gosseract/v2
三、代码实现
创建文件 main.go:
package main
import (
"fmt"
"log"
"regexp"
"github.com/otiai10/gosseract/v2"
)
func main() {
client := gosseract.NewClient()
defer client.Close()
// 设置图像路径
err := client.SetImage("captcha.png")
if err != nil {
log.Fatalf("加载图像失败: %v", err)
}
// 设置英文语言和白名单字符
client.Languages = []string{"eng"}
client.SetWhitelist("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")
// OCR 识别
text, err := client.Text()
if err != nil {
log.Fatalf("识别失败: %v", err)
}
// 清洗结果
re := regexp.MustCompile(`[A-Za-z0-9]+`)
result := re.FindString(text)
fmt.Printf("识别出的验证码为: %s\n", result)
}
四、准备图像文件
将你要识别的验证码图像命名为 captcha.png 并放置在与程序同目录下。
图像建议使用清晰的 PNG/JPEG,字符颜色对比明显。
五、运行程序
go run main.go
示例输出:
识别出的验证码为: F7X9G
六、图像预处理(可选)
可结合 ImageMagick 或 Go 图像库做灰度处理,提高识别准确率:
convert captcha.png -colorspace Gray -threshold 60% processed.png
然后修改程序识别 processed.png 即可。
浙公网安备 33010602011771号