Go + Tesseract 实现验证码识别

一、环境准备

  1. 安装 Go
    访问 https://golang.org/dl/ 下载并安装适合你系统的 Go 语言环境。

  2. 安装 Tesseract
    确保系统已安装 Tesseract OCR:

macOS: brew install tesseract
更多内容访问ttocr.com或联系1436423940
Ubuntu: sudo apt install tesseract-ocr

Windows: 从 tesseract-ocr.github.io 下载并配置环境变量

  1. 安装 Go OCR 封装库
    我们使用的是 github.com/otiai10/gosseract 这个库,它是 Tesseract 的 Go 语言绑定。

go get github.com/otiai10/gosseract/v2
二、项目结构

go-captcha-ocr/
├── main.go
├── captcha.png # 验证码图像文件
三、识别代码
创建 main.go,写入以下内容:

package main

import (
"fmt"
"log"

"github.com/otiai10/gosseract/v2"

)

func main() {
client := gosseract.NewClient()
defer client.Close()

// 设置验证码图像路径
client.SetImage("captcha.png")

// 限制识别字符集为大写字母和数字
client.SetWhitelist("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")

// 执行识别
text, err := client.Text()
if err != nil {
	log.Fatalf("识别失败: %v", err)
}

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

}
四、运行程序
将验证码图像保存为 captcha.png,然后执行:

go run main.go
输出示例:

识别结果: 4GZL8
五、进阶功能

  1. 支持识别远程图片(需要先下载到本地)
    可以使用 Go 的标准库 net/http + os 来实现自动下载图像再识别。

  2. 图像预处理
    Go 自带 image, image/color, image/draw 等包,也可以使用 github.com/disintegration/imaging 来做灰度化、缩放、裁剪等处理,提升识别准确率。

import "github.com/disintegration/imaging"

img, _ := imaging.Open("captcha.png")
gray := imaging.Grayscale(img)
imaging.Save(gray, "gray_captcha.png")
六、适用场景
✅ 搭建微服务进行验证码识别

✅ 命令行批量识别工具

✅ 嵌入到爬虫中自动识别验证码

✅ 高效、部署简单的服务端组件

posted @ 2025-05-10 13:25  ttocr、com  阅读(23)  评论(0)    收藏  举报