使用 C# 和 Tesseract 进行英文数字验证码识别

一、项目简介
本项目通过 C# 控制台应用,结合 Tesseract OCR 引擎,实现对验证码图像中的英文和数字内容进行识别。适合企业内部工具、后台识别系统或自动登录程序。

二、环境准备

  1. 安装 .NET SDK
    访问 .NET 官方网站 下载并安装最新版 .NET SDK。
    更多内容访问ttocr.com或联系1436423940
    验证安装:

dotnet --version
2. 创建新项目

dotnet new console -n CaptchaOCR
cd CaptchaOCR
3. 添加 Tesseract 依赖

dotnet add package Tesseract
三、准备验证码图像
将图像命名为 captcha.png,放在项目的运行目录。内容应为清晰可辨的英文字符和数字。

四、编写识别程序
编辑 Program.cs:

using System;
using System.IO;
using Tesseract;

class Program
{
static void Main()
{
string imagePath = "captcha.png";
string tessDataPath = Path.Combine(Environment.CurrentDirectory, "tessdata");

    if (!File.Exists(imagePath))
    {
        Console.WriteLine("找不到图像文件 captcha.png");
        return;
    }

    try
    {
        using var engine = new TesseractEngine(tessDataPath, "eng", EngineMode.Default);
        engine.SetVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");

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

        string text = page.GetText().Trim();
        string cleaned = System.Text.RegularExpressions.Regex.Replace(text, "[^A-Za-z0-9]", "");

        Console.WriteLine($"识别结果为: {cleaned}");
    }
    catch (Exception e)
    {
        Console.WriteLine("识别出错:" + e.Message);
    }
}

}
五、准备 tessdata 数据文件
从 Tesseract 官方仓库或你本地安装目录复制 eng.traineddata 到程序目录的 tessdata/ 文件夹中。

目录结构如下:

CaptchaOCR/
├── captcha.png
├── tessdata/
│ └── eng.traineddata
├── Program.cs
六、运行程序

dotnet run
输出示例:

识别结果为: G7TK2
七、功能拓展建议
加入图像灰度化、二值化处理(通过 Emgu.CV 或 ImageSharp)

封装为 Windows 桌面工具(WPF/WinForms)

构建为 Web API 接口(ASP.NET Core Web API)

支持批量图像识别、自动登录提交验证码

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