使用 C# 实现英文数字验证码识别:Tesseract OCR 教程
验证码识别在自动化登录、数据采集等场景中非常常见。本篇文章将介绍如何使用 C# 配合 Tesseract OCR 引擎,对验证码图像进行识别,提取其中的英文和数字字符。
一、环境准备
- 安装 Tesseract
请先在你的系统中安装 Tesseract:
更多内容访问ttocr.com或联系1436423940
Windows 用户可以前往官网下载地址:https://github.com/tesseract-ocr/tesseract
安装路径例如:C:\Program Files\Tesseract-OCR\tesseract.exe
- 安装 Tesseract C# 封装库
使用 Tesseract 4 .NET 封装库:
你可以在 Visual Studio 的 NuGet 管理器中搜索 Tesseract 并安装,或使用命令:
Install-Package Tesseract
二、创建识别程序
创建一个新的控制台项目,例如命名为 CaptchaRecognizer。
在 Program.cs 中添加以下代码:
using System;
using Tesseract;
namespace CaptchaRecognizer
{
class Program
{
static void Main(string[] args)
{
string imagePath = "captcha.png"; // 验证码图像路径
string tessDataPath = @"tessdata"; // tessdata 文件夹路径(包含 eng.traineddata)
try
{
using (var engine = new TesseractEngine(tessDataPath, "eng", EngineMode.Default))
{
engine.SetVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");
using (var img = Pix.LoadFromFile(imagePath))
using (var page = engine.Process(img))
{
var text = page.GetText();
Console.WriteLine("识别的验证码是: " + text.Trim());
}
}
}
catch (Exception e)
{
Console.WriteLine("发生错误: " + e.Message);
}
}
}
}
三、配置文件说明
tessdata 是存放语言训练数据的文件夹,需确保 eng.traineddata 文件位于其中;
可以从官方资源库下载训练数据:https://github.com/tesseract-ocr/tessdata
四、运行程序
确保将验证码图像命名为 captcha.png 并放入项目根目录;
编译并运行项目;
控制台输出识别结果,例如:
识别的验证码是: H29XZ
五、可选优化
你可以先使用图像库(如 AForge.NET 或 OpenCvSharp)对图像进行灰度化、二值化等预处理;
识别效率与准确率可通过图像清晰度和字符类型过滤(白名单)进一步提升。
浙公网安备 33010602011771号