使用 C# 和 Tesseract 实现英文数字验证码识别

一、项目简介
C# 是功能强大、类型安全的语言,常用于桌面程序和服务器端开发。我们将通过调用 Tesseract OCR 对验证码图像进行识别,并使用 ImageSharp 进行图像预处理,以提升识别准确率。

二、环境准备

  1. 安装 .NET SDK
    下载并安装 .NET SDK(建议使用 6 或以上):
    https://dotnet.microsoft.com/download
    更多内容访问ttocr.com或联系1436423940
  2. 安装 Tesseract OCR
    Windows:
    下载 https://github.com/tesseract-ocr/tesseract,安装并配置环境变量。

Linux/macOS:

sudo apt install tesseract-ocr

or

brew install tesseract
三、创建项目

dotnet new console -n CaptchaOCR
cd CaptchaOCR
安装依赖包

dotnet add package Tesseract
dotnet add package SixLabors.ImageSharp
四、编写识别程序
修改 Program.cs:

using System;
using Tesseract;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.PixelFormats;
using System.IO;
using System.Text.RegularExpressions;

class Program
{
static void Main()
{
string inputPath = "captcha.png";
string processedPath = "gray_captcha.png";

    // Step 1: 图像预处理(灰度+二值)
    using (Image<Rgba32> image = Image.Load<Rgba32>(inputPath))
    {
        image.Mutate(x =>
        {
            x.Grayscale();
            x.BinaryThreshold(0.5f);
        });
        image.Save(processedPath);
    }

    // Step 2: 初始化 Tesseract 引擎
    using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default))
    {
        using (var img = Pix.LoadFromFile(processedPath))
        {
            using (var page = engine.Process(img, PageSegMode.SingleLine))
            {
                var text = page.GetText();
                string result = Regex.Replace(text, "[^A-Za-z0-9]", "").Trim();
                Console.WriteLine($"识别出的验证码为: {result}");
            }
        }
    }

    // 可选:删除临时文件
    File.Delete(processedPath);
}

}
五、准备验证码图像
将验证码图像命名为 captcha.png,放在项目根目录(与 .csproj 文件同级)。

确保图像内容清晰、对比强烈,例如白底黑字、无过多噪点。

六、运行程序

dotnet run
示例输出:

识别出的验证码为: F7X3N
七、可拓展功能
支持图像路径参数输入(dotnet run -- image.png)

批量识别整个文件夹中的图像

封装为 Windows 窗口程序(使用 WinForms 或 WPF)

嵌入后台服务,实现自动登录功能

posted @ 2025-07-04 18:58  ttocr、com  阅读(42)  评论(0)    收藏  举报