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

news/2025/11/19 23:04:15/文章来源:https://www.cnblogs.com/ocr12/p/19244359

验证码识别是一项常见的图像处理任务,尤其在自动化测试和数据采集场景中非常实用。本文将介绍如何在 C# 环境下,结合 Tesseract OCR 完成英文数字验证码的自动识别。

一、开发环境准备

  1. 安装 Visual Studio
    更多内容访问ttocr.com或联系1436423940
    建议使用 Visual Studio 2019 或以上版本,安装时确保勾选:

.NET 桌面开发

C++ 生成工具(因 Tesseract 需要用到)

  1. 下载和配置 Tesseract OCR

下载 Windows 版 Tesseract:https://github.com/tesseract-ocr/tesseract

安装后,添加其安装目录(如 C:\Program Files\Tesseract-OCR)到系统环境变量中。

二、创建项目

在 Visual Studio 中:

新建 控制台应用(.NET 6 或 .NET Framework)

安装 NuGet 包:

Install-Package Tesseract

三、项目结构说明

准备一张验证码图片(如 captcha.png)放入 bin/Debug/net6.0/ 目录。

四、核心识别代码

以下是完整的 C# 示例程序:

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

class Program
{
static void Main(string[] args)
{
string tessPath = @"C:\Program Files\Tesseract-OCR\tessdata"; // tesseract 数据路径
string imagePath = "captcha.png";

    // 灰度预处理string grayImagePath = "gray_captcha.png";ConvertToGrayscale(imagePath, grayImagePath);using var engine = new TesseractEngine(tessPath, "eng", EngineMode.Default);using var img = Pix.LoadFromFile(grayImagePath);using var page = engine.Process(img);string text = page.GetText().Trim();Console.WriteLine("识别结果: " + text);
}static void ConvertToGrayscale(string inputPath, string outputPath)
{using var bmp = new Bitmap(inputPath);using var grayBmp = new Bitmap(bmp.Width, bmp.Height);for (int y = 0; y < bmp.Height; y++){for (int x = 0; x < bmp.Width; x++){Color c = bmp.GetPixel(x, y);int gray = (int)(c.R * 0.3 + c.G * 0.59 + c.B * 0.11);grayBmp.SetPixel(x, y, Color.FromArgb(gray, gray, gray));}}grayBmp.Save(outputPath, ImageFormat.Png);
}

}

五、运行结果

执行后,输出如下:

识别结果: A3ZB7

你可以用不同的英文数字验证码图片进行测试。

六、提升识别率的建议

使用图像处理库(如 OpenCvSharp)进行边缘去噪、图像增强

增加 Tesseract 参数控制(如 PSM 模式设为 7)

对字体模糊验证码,可考虑深度学习模型如 CNN

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/970453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux ftp自动

您提到的“Linux FTP自动”可能有多种含义,以下是几种常见情况的解释和对应的Linux命令或脚本示例:1. 自动 FTP 上传文件(使用 ftp 命令) 如果您想在 Linux 系统中自动上传文件到 FTP 服务器,可以使用 ftp 命令结…

linux ftp脚本

在 Linux 系统中,ftp 命令行工具是用于与 FTP 服务器进行交互的常用工具。如果你想要编写一个 FTP 脚本,可以利用 ftp 命令结合 bash 脚本来实现自动化操作。 以下是一个简单的 FTP 脚本示例,用于上传文件到 FTP 服…

实用指南:【案例实战】鸿蒙分布式智能办公应用的架构设计与性能优化

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Yanhua Mini ACDP-2 BMW ECU Package: EUC Clone License with Modules 3/8/27 Bench Interface Board

Navigating BMW ECU Challenges: The Yanhua Mini ACDP-2 Package as Your Solution For European and American BMW owners and mechanics, ECU-related repairs and diagnostics can feel like a puzzle with missin…

根据图片路径将文件下载到本地

import java.io.*; import java.net.URL; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardCopyOption;public class FileDownloader {public static void main(String[] args…

2025雅思一对一提分攻略:5家靠谱机构适配不同基础学员

2025雅思一对一提分攻略:5家靠谱机构适配不同基础学员在雅思备考中,一对一课程因极强的针对性成为提分关键选择。尤其是基础薄弱、存在单科瓶颈或短期冲刺高分的学员,优质的一对一教学能精准击破问题。结合2025年最…

redis-RDB/AOF-主从复制整理 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

A few basic changes in PyQt6 and PySide6 regarding shader-based OpenGL graphics

https://gamedev.net/blogs/entry/2273817-a-few-basic-changes-in-pyqt6-and-pyside6-regarding-shader-based-opengl-graphics/

身份认证与信息管理:简单实验模拟钓鱼网页

学期2025-2026-1 学号20252332 《网络》第六自学总结“身份认证与信息管理”目录 初识安全 身份认证与信息管理实验 提取图片方法 后记初识安全 《网络空间安全导论(微课版)》第六章理解身份认证与信息管理实验 概念…

深入解析:Android Studio新手开发第二十四天

深入解析:Android Studio新手开发第二十四天2025-11-19 22:42 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

雅思培训班怎么选?2025实测榜单出炉,5家机构值得优先考虑

雅思培训班怎么选?2025实测榜单出炉,5家机构值得优先考虑随着留学申请竞争的持续加剧,雅思成绩作为海外院校录取的核心参考指标,其重要性愈发凸显。专业的雅思培训班能够通过科学的教学体系、资深的师资团队和精准…

LDO-实践篇(1)

LDO-实践篇(1)一、输入输出电容关于输入输出电容的选择,一般来说按照手册的推荐值,但是在选择的时候要特别注意手册是否有对ESR与电容材质的要求。LDO对电容ESR要求很高,属于关键参数。输出电容要求输入与输出电容…

IO 2024 Round 3(团体赛)Unofficial Mirror【游记】【题解】

第二次打团战。 队长:(?忘记定了);队员:Union_Find、Cosmos、Conan15。(排名不分先后) Conan15 视角。我常常追忆过去 上午为了找回手感刷了 10 道 ABC。中午睡晕过去了。 13:00 被摇醒,发现比赛已经开了。 由…

linux ftp用户目录

在 Linux 系统中,FTP(File Transfer Protocol)通常通过 vsftpd(Virtual File Transfer Protocol Daemon)来实现。如果你想管理 FTP 用户的目录,可以使用 vsftpd 的配置文件 vsftpd.conf 来设置用户权限和目录。一…

梦灯花op2 noctuary 歌词+翻译

翻译是基于这个视频,对少量地方做出了基于个人习惯喜好的修改。 like a fairytale that began since there is time this garden shrouded in pitch black 一个始于笼罩于纯暗中的大陆的童话故事 like stars eating u…

window开机启动无cmd脚本

window开机启动无cmd脚本Set WshShell = CreateObject("WScript.Shell") WshShell.Run "bash D:/x/x/x.sh", 0 Set WshShell = Nothing注意设置默认打开方式为脚本

完整教程:第一篇:把任意 HTTP API 一键变成 Agent 工具

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

双穿透架构:Docker 部署 Nextcloud 、CoderServer、使用cpolar 辅助+frp主导的个人开发环境环境解决方案

双穿透架构:Docker 部署 Nextcloud 、CoderServer、使用cpolar 辅助+frp主导的个人开发环境环境解决方案本文针对个人开发者的公网访问与全流程开发需求,设计了 “frp 主导穿透 + cpolar 辅助备份” 的 NextCloud 开…

【python】在Django中,执行原生SQL查询 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …