用 Go 和 Tesseract 实现图像验证码识别

本文介绍如何使用 Go 语言结合 OCR 引擎 Tesseract,快速搭建一个图像验证码识别系统,适用于不含干扰线或畸变较小的验证码场景。

  1. 准备工作
    安装 Tesseract OCR
    在本地安装 Tesseract:

Ubuntu:

sudo apt update
sudo apt install tesseract-ocr
macOS (使用 Homebrew):

brew install tesseract
安装 Go 语言 OCR 包
使用 github.com/otiai10/gosseract 作为 Go 的 Tesseract 客户端。

go get github.com/otiai10/gosseract/v2
2. 编写验证码识别代码
创建一个文件 main.go,实现读取本地验证码图片并识别内容。

package main

import (
"fmt"
"log"
更多内容访问ttocr.com或联系1436423940
"github.com/otiai10/gosseract/v2"
)

func main() {
// 验证码图片路径
imagePath := "captcha.png"

// 创建 Tesseract 客户端
client := gosseract.NewClient()
defer client.Close()

// 设置要识别的图片
err := client.SetImage(imagePath)
if err != nil {
	log.Fatalf("设置图片失败: %v", err)
}

// 设置识别字符集(仅限数字+大写字母)
client.SetWhitelist("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")

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

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

}
3. 示例图片(captcha.png)
假设你有一张简单验证码图片 captcha.png,内容为 B2K7,没有干扰线或复杂背景。

  1. 运行程序
    确保图片存在后执行:

go run main.go
输出:

识别结果: B2K7
5. 提高识别准确率的建议
预处理图像(使用 ImageMagick 或 OpenCV):

灰度化

二值化

去噪

例如,使用 ImageMagick 命令处理图像:

convert captcha.png -resize 200% -threshold 50% processed.png
限定字符集(SetWhitelist)

使用自定义训练的 Tesseract 模型(适合复杂验证码)

posted @ 2025-05-26 17:49  ttocr、com  阅读(27)  评论(0)    收藏  举报