用 C# 和 Tesseract OCR 识别验证码

news/2025/11/22 23:58:56/文章来源:https://www.cnblogs.com/ocr12/p/19258944
  1. 安装 Tesseract OCR 和相关依赖

在 C# 中使用 Tesseract,需要通过 NuGet 安装 Tesseract 包。

安装 Tesseract NuGet 包

打开 Visual Studio。

在项目中右键点击 NuGet 包管理器 > 管理 NuGet 包。

搜索 Tesseract 并安装最新版本的包。

Install-Package Tesseract

  1. 编写 C# 代码

在项目中创建一个新的类(例如 CaptchaRecognizer.cs),并编写以下代码:

using System;
using Tesseract;
using System.Drawing;

class CaptchaRecognizer
{
static void Main()
{
// 初始化 Tesseract OCR 引擎
string datapath = @"./tessdata"; // tessdata 文件夹路径,需确保包含训练数据文件(如 eng.traineddata)
string language = "eng"; // 选择语言,默认英文
try
{
// 创建 Tesseract 实例
using (var engine = new TesseractEngine(datapath, language, EngineMode.Default))
{
// 加载验证码图片
using (var img = Pix.LoadFromFile("captcha_image.png"))
{
// 设置图片进行 OCR 识别
using (var page = engine.Process(img))
{
// 获取 OCR 识别的文本
string result = page.GetText();
Console.WriteLine("识别的验证码是: " + result);
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("发生错误: " + ex.Message);
}
}
}

  1. 代码解释

初始化 Tesseract 引擎:通过 TesseractEngine 类初始化 Tesseract 引擎。datapath 为 Tesseract 训练数据的文件夹路径,language 为使用的语言(这里是英文)。

加载验证码图像:使用 Pix.LoadFromFile("captcha_image.png") 加载图像文件。你需要提供图像文件的正确路径。

OCR 识别:调用 engine.Process(img) 对图像进行处理,得到识别的结果。然后通过 page.GetText() 提取识别出的文本。

捕获异常:通过 try-catch 语句捕获可能的错误,例如文件未找到或者路径错误等。

  1. 准备 Tesseract 数据文件

你需要下载 Tesseract 训练数据文件(例如 eng.traineddata),并将其放置在 tessdata 文件夹中。你可以从 Tesseract 的官方 GitHub 页面下载训练数据:Tesseract Trained Data

确保 tessdata 文件夹路径与项目中的路径一致。

  1. 运行程序

确保已经安装了 Tesseract 的训练数据并配置正确,运行该程序时,控制台会输出识别的验证码内容,例如:

识别的验证码是: 9g3r1

  1. 改进和优化

图像预处理:

你可以使用 OpenCvSharp(C# 的 OpenCV 封装)对验证码图像进行预处理,如二值化、去噪等,以提高识别的准确性。

安装 OpenCvSharp:

Install-Package OpenCvSharp4

处理复杂验证码:

对于复杂的验证码(如有干扰线、背景噪声等),可能需要图像处理技术(如去噪、边缘检测等)来提高识别的准确率。

  1. 示例:使用 OpenCV 进行图像预处理

下面是一个简单的示例,演示如何在 C# 中使用 OpenCV 对验证码进行二值化处理,并与 Tesseract 配合使用。

using OpenCvSharp;
using Tesseract;
using System;

class CaptchaRecognizer
{
static void Main()
{
// 加载验证码图像
Mat img = Cv2.ImRead("captcha_image.png");

    // 将图像转换为灰度图Mat gray = new Mat();Cv2.CvtColor(img, gray, ColorConversionCodes.BGR2GRAY);// 对灰度图像进行二值化处理Mat binary = new Mat();Cv2.Threshold(gray, binary, 128, 255, ThresholdTypes.Binary);// 将处理后的图像保存Cv2.ImWrite("processed_captcha.png", binary);// 使用 Tesseract 识别处理后的图像string datapath = @"./tessdata";string language = "eng"; // 英文try{using (var engine = new TesseractEngine(datapath, language, EngineMode.Default)){using (var processedImg = Pix.LoadFromFile("processed_captcha.png")){using (var page = engine.Process(processedImg)){string result = page.GetText();Console.WriteLine("识别的验证码是: " + result);}}}}catch (Exception ex){Console.WriteLine("发生错误: " + ex.Message);}
}

}

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

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

相关文章

用 C++ 和 Tesseract OCR 识别验证码

安装 Tesseract OCR在使用 C++ 实现验证码识别之前,需要先安装 Tesseract OCR 引擎。可以通过以下方式安装: 更多内容访问ttocr.com或联系1436423940 在 Ubuntu 上安装: sudo apt-get update sudo apt-get install …

2025最新临沂口腔服务推荐,洗牙、全瓷牙,专业可靠,值得信赖

随着人们口腔健康意识的提升,专业口腔服务需求日益增长。本榜单基于技术设备、医师团队、服务覆盖等维度,结合临沂本地患者满意度调研数据,权威解析2025年临沂五大口腔品牌综合实力,为市民选择口腔服务提供专业参考…

C++ 和 Tesseract OCR 识别验证码

安装 Tesseract OCR 更多内容访问ttocr.com或联系1436423940 首先,我们需要安装 Tesseract OCR。根据不同操作系统进行安装。在 Ubuntu 上安装: sudo apt update sudo apt install tesseract-ocr sudo apt install l…

2025.11.22总结

CS架构项目全解析 1.首先安装编译器配置环境,我这里安装的是visual studio 社区版2022 下载完编译器后配置c#环境,点击修改下载红框勾选部分2.项目的初始化 首先打开visual studio ,创建新项目选择空项目修改名字后…

若依框架源码—3

主干——ruoyi-admin 模块文件图片启动类 RuoYiApplication启动应用这个与我们默认创建的项目的启动主要有两点不同exclude = { DataSourceAutoConfiguration.class } 排除了自动配置的数据源为什么要排除自动配置的数…

idea linux

您提到的“idea linux”可能是指 IntelliJ IDEA 的 Linux 版本。IntelliJ IDEA 是一个广泛使用的 Java 开发环境,支持多种编程语言,包括 Java、Python、Javascript 等。一、IntelliJ IDEA 的 Linux 版本IntelliJ IDE…

icmp linux

在 Linux 系统中,icmp 是 Internet Control Message Protocol 的缩写,主要用于网络层通信,常用于:ping 命令:用于测试网络连接和延迟。traceroute 命令:用于跟踪数据包从源到目标的路径。一、ping 命令(ICMP)p…

2024.06.02

Do you agree or disagree with the following statement? Students should be allowed to take additional courses to graduate as soon as possible. 你是否同意以下观点:学生应该被允许选修额外的课程以便尽快毕…

STM32定时器:从基础定时到PWM高级应用

一、STM32 基本定时器的原理与应用 1. 基本概念 定时器的作用一般是为了使用定时功能和中断功能(洗衣机、微波炉.....),当然在STM32中也可以利用定时器产生周期性的脉冲信号来控制不同的外设(灯的亮度、电机的转速…

医思倍:构建全面赋能体系,助力医学工作者突破自我

在医学科研的道路上,每一位医学工作者都渴望突破自我,实现更高的学术成就。医思倍,作为全面赋能体系的构建者,正以其独特的赋能模式,助力医学工作者在科研的道路上不断突破自我,实现更高的目标。 一、科研思维培…

NCHU的PTA题目:单步电梯运行的总结与体会

一、前言 电梯调度系统是典型的实时请求处理与资源优化分配问题,核心目标是模拟现实中电梯的运行逻辑,在满足乘客多样化请求(内部选层、外部召梯)的前提下,遵循 “同方向优先、顺路处理” 的调度规则,同时处理无…

人口出生率对房价的影响有多大?从经济学角度来看待房价增长率

有人说,现在人口出生率在下降,一二线城市的房价那么高,会不会有问题呢?比如说人口少的话,将来买房子的人就少,那我现在还能不能买? 这个问题要从权重开始讲,分析这个问题,你要先明白哪个因素的权重是最高的。…

TIA_Portal_STEP7_Prof_Safety_WinCC_V19安装问题

安装失败该版本需要添加IIS服务重新安装安装成功后,出现新的问题: TIA_Portal添加新设备时软件卡死 TIA_Portal V19 默认安装的Automation License Manager V6.0,由于Microsoft Windows 推送了安全更新(KB5058411),…

corepack 作用

corepack 是一个由 Node.js 官方提供的包管理器分发工具,它的主要作用是:在不手动安装的情况下,启用并管理特定版本的包管理器(如 Yarn、pnpm),并与项目配置保持一致。🧩 核心作用详解 1. 无需全局安装 Yarn /…

2025 New CGDI K2 Key Unlock Renew Cable: Essential for Auto Key Programming Unlocking

The 2025 New CGDI K2 Key Unlock Renew Cable: Solving Key Programming Challenges for European & American Mechanics and Owners Problem Identification: The Frustration of Key-Related Issues In the fas…

为什么在虹吸作用下的四五线城市终将越来越衰落?

目前,一个不可抗拒的经济规律,就是很多四五线城市终将衰落。 你知道为什么互联网是高度往头部集中的,因为它不存在物理空间的限制。在竞争当中,物理空间是一个保护伞,就好比古代的天堑。但是随着科技的发展,物理…

Day45(15)-F:\硕士阶段\Java\课程代码\后端\web-ai-code\web-ai-project02\tlias-web-management

分页查询优化用实现类封装 @GetMapping public Result page(EmpQueryParam empQueryParam){log.info("分页查询:{}",empQueryParam);PageResult<Emp> pageResult = empService.page(empQueryParam);r…

第三次团队作业:需求改进系统设计

第三次团队作业:需求改进&系统设计 团队名称:洛珈山下 日期:2025-11-22 本周工程目标维度 目标对齐进度 将第二次作业“校正后的安排”细化为可执行任务并分配到人接口落地 给出“已冻结”的 RESTful 接口文档(…

AcWing 908

AcWing 908. 最大不相交区间数量 一、题目描述 给定 ( N ) 个闭区间 ([a_i, b_i]),请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。输出可选取区间的最大数量。 输入格式 第一行包含整数 ( N ),…

2025最新园林景观品牌品质推荐——至大园林景观,设计、施工、绿化,三维服务筑造精品,

随着城市更新战略的深入推进与人们对美好生活空间需求的提升,园林景观行业迎来高质量发展机遇。在2025年的行业竞争中,上海至大园林景观工程有限公司(简称“至大园林景观”)凭借“设计引领、施工保障、养护托底”的…