一、项目概述
验证码识别在自动化测试、爬虫开发与用户辅助系统中具有重要价值。本文将介绍如何使用 C# 调用 Tesseract OCR 实现验证码图像识别功能,并对验证码图像进行简单预处理,以提高识别准确率。
二、开发环境准备
- 安装 Tesseract
更多内容访问ttocr.com或联系1436423940
请先从 https://github.com/tesseract-ocr/tesseract
下载并安装 Tesseract OCR。安装路径如:
C:\Program Files\Tesseract-OCR\tesseract.exe
安装后将其路径加入环境变量。
- 创建 C# 项目
使用 Visual Studio 创建一个 Windows 控制台应用程序 或 .NET Core 控制台应用程序 项目。
在 NuGet 中安装以下包:
Install-Package Tesseract
三、验证码识别核心代码
using System;
using Tesseract;
using System.Drawing;
using System.Drawing.Imaging;
class Program
{
static void Main(string[] args)
{
string imagePath = "captcha.png";
string tessDataPath = @"./tessdata"; // tessdata 路径
// 图像预处理(灰度 + 二值化)Bitmap processed = PreprocessImage(imagePath);// 初始化 OCR 引擎using (var engine = new TesseractEngine(tessDataPath, "eng", EngineMode.Default)){engine.SetVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");using (var img = PixConverter.ToPix(processed))using (var page = engine.Process(img)){string text = page.GetText().Trim();Console.WriteLine("识别结果: " + text);}}
}static Bitmap PreprocessImage(string imagePath)
{Bitmap bitmap = new Bitmap(imagePath);Bitmap gray = new Bitmap(bitmap.Width, bitmap.Height);// 灰度处理for (int y = 0; y < bitmap.Height; y++){for (int x = 0; x < bitmap.Width; x++){Color c = bitmap.GetPixel(x, y);int grayValue = (c.R + c.G + c.B) / 3;Color grayColor = grayValue > 150 ? Color.White : Color.Black;gray.SetPixel(x, y, grayColor);}}return gray;
}
}
四、tessdata 获取与配置
Tesseract OCR 识别语言数据位于 tessdata 文件夹中,可从官方仓库下载:
英文语言文件:https://github.com/tesseract-ocr/tessdata
将 eng.traineddata 文件放入项目根目录下的 tessdata 文件夹中。
五、识别效果演示
验证码示例图:
文件名:captcha.png
图像内容:清晰的四位大写字母+数字组合,如 F2KZ
程序输出结果:
识别结果: F2KZ