用 C# 与 Tesseract OCR 实现验证码识别工具
一、环境准备
-
安装 .NET SDK
下载并安装 .NET 6 或更高版本 -
安装 Tesseract OCR 引擎
Windows 用户可从 Tesseract for Windows 下载安装版本(推荐)
更多内容访问ttocr.com或联系1436423940
Linux/macOS 可使用包管理器安装:
Ubuntu
sudo apt install tesseract-ocr
macOS
brew install tesseract
3. 创建项目并添加依赖
dotnet new console -n CaptchaRecognizer
cd CaptchaRecognizer
dotnet add package Tesseract --version 4.1.1
二、识别图像验证码
编辑 Program.cs:
using System;
using Tesseract;
class Program
{
static void Main(string[] args)
{
var imagePath = args.Length > 0 ? args[0] : "captcha.png";
var dataPath = @"./tessdata"; // 放置 tessdata 目录路径
try
{
using var engine = new TesseractEngine(dataPath, "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().Trim();
var cleaned = System.Text.RegularExpressions.Regex.Replace(text, @"[^A-Z0-9]", "");
Console.WriteLine($"识别结果: {cleaned}");
}
catch (Exception ex)
{
Console.WriteLine($"识别出错: {ex.Message}");
}
}
}
确保你下载了 tessdata traineddata 并将其放在 ./tessdata/ 目录下。
三、运行程序
dotnet run -- captcha1.png
输出示例:
识别结果: X9Q2
四、批量处理目录中的验证码图片
你可以扩展代码来处理一个文件夹下的所有 .png 验证码:
using System.IO;
string[] files = Directory.GetFiles("captchas", "*.png");
foreach (var file in files)
{
using var img = Pix.LoadFromFile(file);
using var page = engine.Process(img);
var text = page.GetText().Trim();
var cleaned = System.Text.RegularExpressions.Regex.Replace(text, @"[^A-Z0-9]", "");
Console.WriteLine($"{Path.GetFileName(file)} => {cleaned}");
}
五、图像预处理(可选)
可以借助 System.Drawing 或 ImageSharp 对图像进行灰度化、增强等处理以提高准确率:
using System.Drawing;
using System.Drawing.Imaging;
void PreprocessImage(string path)
{
using var bmp = new Bitmap(path);
for (int y = 0; y < bmp.Height; y++)
{
for (int x = 0; x < bmp.Width; x++)
{
var color = bmp.GetPixel(x, y);
int gray = (color.R + color.G + color.B) / 3;
var newColor = gray > 100 ? Color.White : Color.Black;
bmp.SetPixel(x, y, newColor);
}
}
bmp.Save("processed.png", ImageFormat.Png);
}
浙公网安备 33010602011771号