C# 和 Tesseract OCR 实现验证码图像识别
验证码广泛用于防止恶意登录和自动化提交。在本篇教程中,我们将介绍如何使用 C# 语言和 Tesseract OCR 引擎实现英文数字验证码的识别。通过简单的图像预处理和 OCR 引擎,我们可以自动读取图像中的验证码内容。
一、准备环境
- 安装 Visual Studio 和 .NET SDK
确保你已经安装了:
Visual Studio(或 VS Code + .NET CLI)
.NET SDK(建议 6.0 或更新版本)
验证方式:
dotnet --version
2. 安装 Tesseract OCR 引擎
请在系统中安装 Tesseract:
更多内容访问ttocr.com或联系1436423940
Windows 用户可从:https://github.com/tesseract-ocr/tesseract 下载安装包。
macOS 用户使用:brew install tesseract
Ubuntu 用户执行:sudo apt install tesseract-ocr
二、创建项目并添加依赖
- 创建新控制台应用:
dotnet new console -n CaptchaOCR
cd CaptchaOCR
2. 添加 Tesseract.NET 包:
dotnet add package Tesseract
三、编写验证码识别代码
编辑 Program.cs 文件,填入以下代码:
using System;
using Tesseract;
using System.Drawing;
class Program
{
static void Main(string[] args)
{
var imagePath = "captcha.png";
try
{
using var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default);
engine.SetVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");
using var img = Pix.LoadFromFile(imagePath);
using var page = engine.Process(img);
string text = page.GetText().Trim();
Console.WriteLine("识别结果: " + text);
}
catch (Exception ex)
{
Console.WriteLine("识别失败:" + ex.Message);
}
}
}
注意事项:
./tessdata 是 Tesseract 的数据路径,通常包含 eng.traineddata。你可以从 tessdata GitHub 下载并放入项目目录。
你需要将 captcha.png 放在项目根目录中,也可以更改路径。
四、运行识别程序
确保验证码图像已准备好并命名为 captcha.png,然后在终端运行程序:
dotnet run
输出示例:
识别结果: K7ND3
五、可选:图像预处理建议
验证码通常包含背景噪点,建议在识别前进行一些图像预处理以提升准确率。C# 中可使用 System.Drawing 或第三方库(如 EmguCV)进行:
灰度化
二值化
去噪滤波
调整图像对比度
例如,简单的灰度处理可使用:
Bitmap bmp = new Bitmap("captcha.png");
for (int y = 0; y < bmp.Height; y++)
{
for (int x = 0; x < bmp.Width; x++)
{
Color c = bmp.GetPixel(x, y);
int gray = (int)(0.3 * c.R + 0.59 * c.G + 0.11 * c.B);
bmp.SetPixel(x, y, Color.FromArgb(gray, gray, gray));
}
}
bmp.Save("gray_captcha.png");
浙公网安备 33010602011771号