使用 C# 和 Tesseract OCR 实现验证码识别
验证码识别在自动化测试、表单提交、爬虫验证中具有广泛用途。本篇将介绍如何使用 C# 结合 Tesseract OCR 库,读取一张包含英文和数字的验证码图片并识别出其中的字符。
一、准备工作
- 安装 Tesseract OCR
你需要在本地安装 Tesseract OCR 引擎:
Windows 用户可下载预编译版本:
https://github.com/tesseract-ocr/tesseract
安装完成后,记下 tesseract.exe 所在路径。
- 创建 C# 控制台项目
在 Visual Studio 或 CLI 中创建项目:
dotnet new console -n CaptchaRecognizer
cd CaptchaRecognizer
3. 添加依赖包
使用 NuGet 安装 Tesseract 包(由 Charles Weld 提供的 .NET 封装):
dotnet add package Tesseract
二、编写识别程序
修改 Program.cs 文件如下:
using System;
using Tesseract;
class Program
{
static void Main()
{
string imagePath = "captcha.png"; // 验证码图片路径
string tessdataPath = @"./tessdata"; // 语言包路径(eng.traineddata)
try
{
using var engine = new TesseractEngine(tessdataPath, "eng", EngineMode.Default);
engine.SetVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
using var img = Pix.LoadFromFile(imagePath);
using var page = engine.Process(img);
string text = page.GetText().Trim();
Console.WriteLine("识别结果:" + text);
}
catch (Exception e)
{
Console.WriteLine("识别失败:" + e.Message);
}
}
}
三、准备图像和语言包
将一张英文数字验证码图片命名为 captcha.png,放到项目根目录下。
下载 Tesseract OCR 的 tessdata 文件夹(包含 eng.traineddata),放入项目根目录中。
下载地址:https://github.com/tesseract-ocr/tessdata
四、运行程序
dotnet run
终端将输出识别结果:
识别结果:7G5KL
浙公网安备 33010602011771号