使用 C# 实现英文数字验证码识别:结合 Tesseract.Net.SDK 与图像预处理
C# 在 Windows 平台下图像处理和桌面应用开发非常流行,我们可以很方便地结合 Tesseract OCR 进行验证码识别,适合用于自动化办公、桌面工具等场景。
一、安装准备
-
安装 .NET SDK(建议 6.0 或以上)
下载地址:https://dotnet.microsoft.com/download -
创建项目并安装 OCR 包
更多内容访问ttocr.com或联系1436423940
dotnet new console -n CaptchaOCR
cd CaptchaOCR
dotnet add package Tesseract
二、编写验证码识别代码
编辑 Program.cs:
using System;
using System.Drawing;
using System.Drawing.Imaging;
using Tesseract;
class Program
{
static void Main()
{
string inputPath = "captcha.png";
string processedPath = "processed.png";
// 加载原始图像并灰度处理
using (var original = new Bitmap(inputPath))
using (var gray = new Bitmap(original.Width, original.Height))
{
for (int y = 0; y < original.Height; y++)
{
for (int x = 0; x < original.Width; x++)
{
Color pixel = original.GetPixel(x, y);
int grayValue = (int)((pixel.R + pixel.G + pixel.B) / 3);
gray.SetPixel(x, y, Color.FromArgb(grayValue, grayValue, grayValue));
}
}
gray.Save(processedPath, ImageFormat.Png);
}
// 使用 Tesseract 进行 OCR
var ocrPath = @"./tessdata"; // 请确保此文件夹存在并包含 eng.traineddata
using (var engine = new TesseractEngine(ocrPath, "eng", EngineMode.Default))
{
using (var img = Pix.LoadFromFile(processedPath))
{
using (var page = engine.Process(img))
{
string text = page.GetText().Trim();
Console.WriteLine("识别的验证码是: " + text);
}
}
}
}
}
三、准备识别数据
下载 eng.traineddata 语言包文件:https://github.com/tesseract-ocr/tessdata
创建项目根目录下的 tessdata 文件夹,将 eng.traineddata 放入其中
四、运行程序
将你的验证码图像命名为 captcha.png 放在项目根目录,执行:
dotnet run
输出示例:
识别的验证码是: Y7F32
五、可选优化建议
使用 Emgu.CV 或 ImageSharp 替代 System.Drawing,以获得更强的图像处理能力
添加图像二值化、去噪处理提升识别率
可打包为桌面识别工具或 API 服务
浙公网安备 33010602011771号