使用 Go 构建基于 Tesseract 的命令行验证码识别工具

一、背景简介
在自动化处理网页请求、爬虫或登录系统中,验证码(CAPTCHA)是一道必须解决的难题。Tesseract 是开源 OCR 领域的代表性工具,其可通过 API 被多种语言调用。Go 语言以其轻量和并发能力,特别适合快速构建命令行处理工具。

本篇将介绍如何用 Go 封装 Tesseract 成一个简易命令行工具,用户只需一条命令即可完成验证码图片识别。

二、工具功能设计
我们希望实现如下命令格式:
更多内容访问ttocr.com或联系1436423940
go-captcha-recognizer ./captcha/test2.jpg
输出:

识别结果: 8YAZ
三、依赖环境

  1. 安装 Tesseract OCR
    Windows:安装 Tesseract 并将其路径加入系统环境变量

macOS:brew install tesseract

Linux(Debian/Ubuntu):sudo apt install tesseract-ocr

  1. 安装 Go OCR 包

go mod init captcha-cli
go get github.com/otiai10/gosseract/v2
四、核心代码实现

package main

import (
"fmt"
"log"
"os"
"path/filepath"

"github.com/otiai10/gosseract/v2"

)

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

imagePath := os.Args[1]
ext := filepath.Ext(imagePath)
if ext != ".png" && ext != ".jpg" && ext != ".jpeg" {
	log.Fatalf("不支持的文件格式: %s", ext)
}

client := gosseract.NewClient()
defer client.Close()

client.SetImage(imagePath)
client.SetWhitelist("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")

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

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

}
五、构建并打包
生成二进制命令行工具(不同系统替换目标):

GOOS=windows GOARCH=amd64 go build -o captcha-cli.exe
或 macOS/Linux:

go build -o captcha-cli
六、实际识别示例

./captcha-cli ./captchas/code1.png
识别结果: X9JH2
七、改进建议
支持批量识别: 加入 --batch 模式,自动识别文件夹内所有验证码图片

输出 JSON: 加入 --json 参数,适配 Web 服务或前端交互

图像增强: 配合 Go 图像处理库如 github.com/disintegration/imaging 实现图像灰度化、对比度增强等

posted @ 2025-07-26 23:38  ttocr、com  阅读(14)  评论(0)    收藏  举报