使用 C# 实现英文数字验证码识别:结合 Tesseract.Net.SDK 与图像预处理

C# 在 Windows 平台下图像处理和桌面应用开发非常流行,我们可以很方便地结合 Tesseract OCR 进行验证码识别,适合用于自动化办公、桌面工具等场景。

一、安装准备

  1. 安装 .NET SDK(建议 6.0 或以上)
    下载地址:https://dotnet.microsoft.com/download

  2. 创建项目并安装 OCR 包
    更多内容访问ttocr.com或联系1436423940
    dotnet new console -n CaptchaOCR
    cd CaptchaOCR
    dotnet add package Tesseract
    二、编写验证码识别代码
    编辑 Program.cs:

using System;
using System.Drawing;
using System.Drawing.Imaging;
using Tesseract;

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

    // 加载原始图像并灰度处理
    using (var original = new Bitmap(inputPath))
    using (var gray = new Bitmap(original.Width, original.Height))
    {
        for (int y = 0; y < original.Height; y++)
        {
            for (int x = 0; x < original.Width; x++)
            {
                Color pixel = original.GetPixel(x, y);
                int grayValue = (int)((pixel.R + pixel.G + pixel.B) / 3);
                gray.SetPixel(x, y, Color.FromArgb(grayValue, grayValue, grayValue));
            }
        }

        gray.Save(processedPath, ImageFormat.Png);
    }

    // 使用 Tesseract 进行 OCR
    var ocrPath = @"./tessdata"; // 请确保此文件夹存在并包含 eng.traineddata
    using (var engine = new TesseractEngine(ocrPath, "eng", EngineMode.Default))
    {
        using (var img = Pix.LoadFromFile(processedPath))
        {
            using (var page = engine.Process(img))
            {
                string text = page.GetText().Trim();
                Console.WriteLine("识别的验证码是: " + text);
            }
        }
    }
}

}
三、准备识别数据
下载 eng.traineddata 语言包文件:https://github.com/tesseract-ocr/tessdata

创建项目根目录下的 tessdata 文件夹,将 eng.traineddata 放入其中

四、运行程序
将你的验证码图像命名为 captcha.png 放在项目根目录,执行:

dotnet run
输出示例:

识别的验证码是: Y7F32
五、可选优化建议
使用 Emgu.CV 或 ImageSharp 替代 System.Drawing,以获得更强的图像处理能力

添加图像二值化、去噪处理提升识别率

可打包为桌面识别工具或 API 服务

posted @ 2025-04-11 18:56  ttocr、com  阅读(61)  评论(0)    收藏  举报