用 Go 编写验证码识别工具(基于 Tesseract)
一、项目简介
在自动化登录、爬虫系统中,我们常会遇到验证码限制。对于结构简单的验证码图片,可以使用 OCR 技术自动识别字符。本文介绍如何用 Go 编写一个小工具,调用 Tesseract 引擎完成验证码识别。
二、安装准备
- 安装 Tesseract
Windows:下载安装包并配置环境变量;
macOS:执行 brew install tesseract;
Linux:执行 sudo apt install tesseract-ocr。
安装后验证:
tesseract --version
2. 安装 Go OCR 库
go get github.com/otiai10/gosseract/v2
三、代码实现
以下是完整的识别程序:
package main
import (
"fmt"
"log"
"github.com/otiai10/gosseract/v2"
)
func main() {
client := gosseract.NewClient()
defer client.Close()
err := client.SetImage("captcha.jpg")
if err != nil {
log.Fatal("加载图像失败:", err)
}
// 限制识别字符,提高准确率
client.SetWhitelist("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
text, err := client.Text()
if err != nil {
log.Fatal("识别出错:", err)
}
fmt.Println("验证码内容:", text)
}
四、输入输出示例
输入图像:captcha.jpg
内容为:F38KQ
程序输出:
验证码内容:F38KQ
五、常见问题
问题 说明与建议
输出为空 图像路径是否正确?图像是否过小或模糊?
识别错误率高 尝试去除干扰线、缩放图像、限制字符集
程序无法运行 检查 Tesseract 是否已安装并配置环境变量
六、适用场景
自动化测试系统验证码识别
表单自动填充辅助工具
小规模验证码数据集预标注
七、后续拓展
批量识别:可遍历图像文件夹,批量处理;
图像预处理:结合 ImageMagick、OpenCV 清洗图像;
部署为 API 接口,供其他程序调用。
浙公网安备 33010602011771号