【验证码】使用Tesseract实现简单的验证码识别

1、Tesseract介绍:

Tesseract的OCR引擎最先由HP实验室于 1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。然而,HP不久便决定放弃OCR业务,Tesseract也从此尘封。 数年以后,HP意识到,与其将Tesseract束之高阁,不如贡献给开源软件业,让其重焕新生--2005年,Tesseract由美国内华达州信息技 术研究所获得,并求诸于Google对Tesseract进行改进、消除Bug、优化工作。

2、下载 Tesseract:

http://code.google.com/p/tesseract-ocr/downloads/list ,可以到这里下载一些识别必须的文件。

3、编写代码:

Tesseract可以在命令行中运行,但觉得不太好用,于是就通过代码调用DOS命令实现图像识别

using System.Diagnostics;
                 Process p = new Process();
                 p.StartInfo.FileName = "cmd.exe ";
             p.StartInfo.UseShellExecute = false;
                 p.StartInfo.RedirectStandardInput = true;
                 p.StartInfo.RedirectStandardOutput = true;
                 p.StartInfo.RedirectStandardError = true;
                 p.StartInfo.CreateNoWindow = true;

                 p.Start();
                 string cmd = "tesseract.exe " + PicPath + " " + filename + " -l chi_sim";//主要这句代码在起作用
                 p.StandardInput.WriteLine(cmd);
             p.Close();

图片识别以后会把识别的内容保存在一个txt文件中,我们可以通过代码将保存在txt文件中的内容读出来,直观的显示出来

读取txt文件

public static string LoadDataFromTXT(string filePath)
       {
            string[] line = System.IO.File.ReadAllLines(filePath);
           return line[0];
         }

这样运行以后就可以看到这样的效果

经过多次实验发现对于这种简单的数字验证码,识别正确率还是非常高的,但是对于我们中华民族博大精深的汉字,它表现的是否也如此优秀呢?那就让我们来做一下实验。。

在网上随便截一张带有汉字的图片:

让我们来看看汉字的识别效果吧:

大家看了一定很失望吧,对于汉字不是太给力,得到的结果乱七八糟,根本不能用,还要有很大的改进之处啊。。。不过它还是为我们识别一般验证码提供了方便。。

到这也基本讲完了,顺便讲一下如何实现窗体淡入淡出效果

using System.Runtime.InteropServices;
    public class Win32
    {
        public const Int32 AW_HOR_POSITIVE = 0x00000001; // 从左到右打开窗口
        public const Int32 AW_HOR_NEGATIVE = 0x00000002; // 从右到左打开窗口
        public const Int32 AW_VER_POSITIVE = 0x00000004; // 从上到下打开窗口
        public const Int32 AW_VER_NEGATIVE = 0x00000008; // 从下到上打开窗口
        public const Int32 AW_CENTER = 0x00000010;
        public const Int32 AW_HIDE = 0x00010000; // 在窗体卸载时若想使用本函数就得加上此常量
        public const Int32 AW_ACTIVATE = 0x00020000; //在窗体通过本函数打开后,默认情况下会失去焦点,除非加上本常量
        public const Int32 AW_SLIDE = 0x00040000;
        public const Int32 AW_BLEND = 0x00080000; // 淡入淡出效果
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern bool AnimateWindow(
        IntPtr hwnd, // handle to window
        int dwTime, // duration of animation
        int dwFlags // animation type
        );
    }
Win32.AnimateWindow(this.Handle, 1000, Win32.AW_BLEND);//淡入
Win32.AnimateWindow(this.Handle, 1000, Win32.AW_SLIDE | Win32.AW_HIDE | Win32.AW_BLEND);//淡出

效果呢就是这样:

【验证码】使用Tesseract实现简单的验证码识别

时间: 2024-12-23 15:09:12

【验证码】使用Tesseract实现简单的验证码识别的相关文章

C#识别验证码技术-Tesseract

相信大家在开发一些程序会有识别图片上文字(即所谓的OCR)的需求,比如识别车牌.识别图片格式的商品价格.识别图片格式的邮箱地址等等,当然需求最多的还是识别验证码.如果要完成这些OCR的工作,需要你掌握图像处理.图像识别的知识,需要用到图形形态学.傅里叶变换.矩阵变换.贝叶斯决策等很多复杂的理论,这让绝大部分人都会望而却步. Tesseract这个开源项目的出现让我们普通人也可以涉足OCR的开发.Tesseract可以从图片中识别出文字内容,但不要以为Tesseract可以智能的识别出各种奇形怪状

Python验证码识别--利用pytesser识别简单图形验证码

一.探讨 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域…… 简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形.以及利用计算机进行图形的计算.处理和显示的相关原理与算法.图形通常由点.线.面.体等几何元素和灰度.色彩.线型.线宽等非几何属性组成.计算机涉及到的几何图形处理一般有 2维到n维图形处理,边界区分,面积计算,体积计算,扭曲变形校正.对于颜色则有色彩空间的计算与转换,图形上色,阴影,色差处理等等. 在破解验证码中需要用

Python验证码识别:利用pytesser识别简单图形验证码

一.探讨 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域--    简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形.以及利用计算机进行图形的计算.处理和显示的相关原理与算法.图形通常由点.线.面.体等几何元素和灰度.色彩.线型.线宽等非几何属性组成.计算机涉及到的几何图形处理一般有 2维到n维图形处理,边界区分,面积计算,体积计算,扭曲变形校正.对于颜色则有色彩空间的计算与转换,图形上色,阴影,色差处理等等. 在破解验证码中

基于SVM的python简单实现验证码识别

验证码识别是一个适合入门机器学习的项目,之前用knn 做过一个很简单的,这次用svm来实现.svm直接用了开源的库libsvm.验证码选的比较简单,代码也写得略乱,大家看看就好. 1. 爬取验证码图片 1 import urllib 2 from urllib import request 3 4 5 def download_pics(pic_name): 6 url = 'http://smart.gzeis.edu.cn:8081/Content/AuthCode.aspx' 7 res

通过百度AI识别简单的验证码

为什么要使用百度AI的: 百度AI这个我之前用到的是语音识别,想着肯定也有图片识别成文字的,所以找了一下果然找了,而且可以免费使用一点. 注:调用的这个百度AI识别不是专门识别验证码图片的(它可以识别图片中的所有文字,包括空格),所以只能识别一些简单的验证码,专业的使用超级鹰(收费) 使用到的场景: (1) 最近再写一个web自动化测试项目,在里面有一个selenium功能就是需要识别验证码. (2) 在用爬虫爬取登陆后的页面内容时候,也需要识别验证码 百度AI找的地方: 支持识别的图片格式:

python 简单图像识别--验证码

python  简单图像识别--验证码 记录下,准备工作安装过程很是麻烦. 首先库:pytesseract,image,tesseract,PIL windows安装PIL,直接exe进行安装更方便(https://files.cnblogs.com/files/Oran9e/PILwin64.zip)(https://files.cnblogs.com/files/Oran9e/PILwin32.zip) 安装 image:pip install image 安装 pytesseract:pi

验证码的认识和简单验证码的攻防

验证码(CAPTCHA)一词,几乎是上网的人都接触过.通俗地将,验证码就是一种把坐在电脑前的人类与机器区分开来的测试,也算是一种最常见反图灵测试.一般来说,验证码由计算机生成,服务器端的计算机知道答案,但在网线这端,应该只有用户(即真正的人)知道答案,而计算机不知道. 从上面的定义里,易得: 验证码应该是不易被计算机识别或破解出来的,如果用简单的算法,也能得到极高的破解率(大于或接近于75%),则这个验证码不算一个合格的验证码. 要攻破验证码,最好的方法应该是机器学习,因为这个方法能让计算机模拟

ASP.NET 如何做出简单的验证码

如果说要做验证码,那不得不提的就是GDI+绘图了.我们都知道验证码是以图片形式展示的,而且是动态生成的,这样就需要我们去画出它. 科普一下,什么是GDI+? GDI+是图形设备接口(GDI)的高级版本, 提供了各种丰富的图形图像处理功能.GDI+主要由二维矢量图形.图像处理和版式3部分组成.GDI+为使用各种字体.字号和样式来显示文本这种复杂任务提供了大量的支持. 下面说说验证码,对于验证码这样的图片,我觉得是由两部分组成的,一部分是矩形的背景,另一部分是在其上的字母数字组合(有的时候有汉字,有

python 简单图像识别--验证码Ⅲ

python  简单图像识别--验证码Ⅲ 实现自动登陆网站 登录学校图书馆管理系统为例,做一个简单的例子.python识别简单的没有干扰的纯数字验证码还是可以的,但是识别字母数字再加上干扰因素,误报率很高,因此这个我是采用"人工识别",人工输入. 首先得明白cookie的作用,cookie是某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据.因此我们需要用Cookielib模块来保持网站的cookie. 登录学校图书馆管理系统登陆(http://122.207