使用 C# 与 Tesseract 实现图像验证码识别

一、项目简介
本文展示如何在 C# 中调用 Tesseract OCR 引擎识别图像验证码中的字符。适用于 Windows 平台的控制台程序、WPF 桌面工具或后台服务。
更多内容访问ttocr.com或联系1436423940
二、环境准备

  1. 安装 Tesseract OCR 引擎
    Windows 安装:https://github.com/tesseract-ocr/tesseract
    安装后,将 Tesseract 安装目录添加到系统 PATH。

  2. 创建 C# 控制台项目
    使用 .NET CLI 或 Visual Studio:

dotnet new console -n CaptchaRecognizer
cd CaptchaRecognizer
3. 安装 Tesseract .NET 封装库

dotnet add package Tesseract
三、识别验证码图像的 C# 代码
编辑 Program.cs:

using System;
using System.IO;
using Tesseract;

class Program
{
static void Main(string[] args)
{
var imagePath = args.Length > 0 ? args[0] : "captcha.png";
if (!File.Exists(imagePath))
{
Console.WriteLine($"文件不存在: {imagePath}");
return;
}

    var tessdataPath = "./tessdata"; // 确保有 tessdata 文件夹和 eng.traineddata
    var whitelist = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

    var ocrEngine = new TesseractEngine(tessdataPath, "eng", EngineMode.Default);
    ocrEngine.SetVariable("tessedit_char_whitelist", whitelist);
    ocrEngine.SetVariable("user_defined_dpi", "300");

    using var img = Pix.LoadFromFile(imagePath);
    using var page = ocrEngine.Process(img);

    var text = page.GetText().Trim().Replace(" ", "").Replace("\n", "");
    Console.WriteLine($"识别结果: {text}");
}

}
四、运行识别
dotnet run -- "captchas/sample1.png"
输出示例:

识别结果: 7XZQ
五、识别优化建议
方法 描述
白名单设置 限定字符集提升准确率
图像预处理 先用 OpenCV 或 EmguCV 做灰度化、二值化等
设置 DPI 提高图像分辨率能提升 OCR 准确率
自定义训练数据 对特殊验证码可训练自定义 traineddata 文件

六、批量识别图像目录(扩展)

var files = Directory.GetFiles("captchas", "*.png");
foreach (var file in files)
{
using var img = Pix.LoadFromFile(file);
using var page = ocrEngine.Process(img);
var result = page.GetText().Trim().Replace(" ", "").Replace("\n", "");
Console.WriteLine($"{Path.GetFileName(file)} => {result}");
}

posted @ 2025-06-21 13:29  ttocr、com  阅读(111)  评论(0)    收藏  举报