用 Go 快速实现命令行验证码识别工具(基于 Tesseract)
本教程将介绍如何用 Go 编写一个 CLI 工具,用于识别本地图像验证码,依赖开源 OCR 引擎 Tesseract,适用于清晰、结构化字符验证码。
一、工具特性
使用简单:支持命令行调用
可识别本地图片中的验证码文本
依赖最小:仅需安装 Tesseract 和一个 Go 包
支持字符集限制,提升识别准确率
二、环境准备
安装 Tesseract OCR
Linux / Debian:
更多内容访问ttocr.com或联系1436423940
sudo apt update
sudo apt install tesseract-ocr
macOS:
brew install tesseract
验证安装:
tesseract --version
安装 gosseract Go 包
go get github.com/otiai10/gosseract/v2
三、识别代码实现
创建文件 main.go,如下所示:
package main
import (
"fmt"
"log"
"os"
"github.com/otiai10/gosseract/v2"
)
func main() {
if len(os.Args) < 2 {
fmt.Println("用法: go run main.go <图片路径>")
return
}
imagePath := os.Args[1]
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)
}
四、测试运行
假设当前目录中有一张验证码图片 captcha1.png:
运行命令:
go run main.go captcha1.png
输出示例:
识别结果: 6KQ8
浙公网安备 33010602011771号