验证码识别据说可以用C#图像识别类库Tessnet2来实现,Tessnet2源于目前Google维护的开源项目Tesseract2。本文将对此传说进行验证,含验证结果与验证方法。

1. 验证结果

———————- 20150131更新————————————

通过对Tesseract的进一步学习与验证,其实Tessnet2识别”verification”这张图片完全没有问题,之前在验证时不行是因为我在写代码时把“ocr.SetVariable”的识别范围限制为数字与大写字母。总的来说,Tesseract对色彩分明未变形的图片识别效果还是比较好的。

———————- 20150131更新————————————

2.  验证方法

2.1 首先需要下载tessnet2库文件,分为32bit与64bit。根据电脑的操作系统来选:32位操作系统选tessnet2_32.dll,64位操作系统选tessnet2_64.dll)。

2.2 下载相关语言包tessdata,目前我只找到了英文的,可用于识别数字与字母;

2.3 新建控制台项目–>解决方案资源管理器–>选择“引用”后点右键–>在“添加引用”对话框中选择“浏览”–>找到文件tessnet2的解压文件夹选择相应的dll文件。

2.4 解决方案资源管理器–>选择“引用”后点右键–>在“添加引用”对话框中选择“.NET“–>找到System.Drawing并添加。

2.5 验证代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace TessnetTest
{
class Program
{
static void Main(string[] args)
{
//D:\CSharp\TessnetTest\ReCaptcha.jpg是待识别图片在电脑中的路径
Bitmap map = new Bitmap(@"D:\CSharp\TessnetTest\ReCaptcha.jpg");

tessnet2.Tesseract ocr = new tessnet2.Tesseract();//声明一个OCR类
string txt = "";
List<tessnet2.Word> result = new List<tessnet2.Word>();

try
{//当前识别变量设置:数字与大写字母,这种写法会导致无法识别小写字母,加上小写字母即可
ocr.SetVariable("tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
//应用当前语言包。注,Tessnet2是支持多国语的。语言包下载链接:http://code.google.com/p/tesseract-ocr/downloads/list
//D:\CSharp\TessnetTesttessdata是语言包在电脑中的路径
ocr.Init(@"D:\CSharp\TessnetTest\tessdata", "eng", false);

result = ocr.DoOCR(map, Rectangle.Empty);
foreach (tessnet2.Word word in result)
{
txt += word.Text;
}
Console.WriteLine(txt);
Console.ReadLine();
}
catch (Exception ex)
{

}
}
}
}

 
http://livezingy.com/tessnet2-identifying-code/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
 
namespace TessnetTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //D:\CSharp\TessnetTest\ReCaptcha.jpg是待识别图片在电脑中的路径
            Bitmap map = new Bitmap(@"D:\CSharp\TessnetTest\ReCaptcha.jpg");
 
            tessnet2.Tesseract ocr = new tessnet2.Tesseract();//声明一个OCR类  
            string txt = "";
            List<tessnet2.Word> result = new List<tessnet2.Word>();
 
            try
            {//当前识别变量设置:数字与大写字母,这种写法会导致无法识别小写字母,加上小写字母即可
                ocr.SetVariable("tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
                //应用当前语言包。注,Tessnet2是支持多国语的。语言包下载链接:http://code.google.com/p/tesseract-ocr/downloads/list
                //D:\CSharp\TessnetTesttessdata是语言包在电脑中的路径
                ocr.Init(@"D:\CSharp\TessnetTest\tessdata", "eng", false);
 
                result = ocr.DoOCR(map, Rectangle.Empty);
                foreach (tessnet2.Word word in result)
                {
                    txt += word.Text;
                }
                Console.WriteLine(txt);
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                
            }
        }
    }
}

      3.展望

从某网站的验证码来看,字体基本无倾斜,间距也较大,如果可以把这些图片进行黑白化,识别的正确率是否会高一些呢?

另外,我找到的dll文件不知是什么版本,是否有最新版本出现,最新版本是否更强大呢?但是我不能从code.Google下载最新版本。说到这里,我不得不再打一个小广告,从我的推广链接http://www.share-nydus.com/s/rnutgcbp 注册nydus VPN的帐号,我可以得到免费的3天试用时间,先谢过。不过坚持每天签到也送积分,可以兑换免费时间,在免费时间里Google的各种服务可以随便用。

Tessnet2图片识别的更多相关文章

  1. Tessnet2图片识别(2)

    1. 引用 tessnet2.dll (只有NET2.0版本) 2. 视图页 <%@ Page Language="C#" MasterPageFile="~/Vi ...

  2. 【Machine Learning】KNN算法虹膜图片识别

    K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  3. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇一:WPF常用知识以及本项目设计总结

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  4. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇二:基于OneNote难点突破和批量识别

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  5. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇三:批量处理后的txt文件入库处理

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  6. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇四:关于OneNote入库处理以及审核

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  7. WindowsAPI调用和OCR图片识别

    傻了吧唧的装双系统.成功的干崩了原本的系统.现在重装VS.闲的没事胡扯几句. WindowsAPI在每一台Windows系统上开放标准API供开发人员调用.功能齐全.在这里只介绍三个部分. 1.利用A ...

  8. Android开发学习之路-GSON使用心得(OCR图片识别)

    在安卓中解析JSON串可以使用的方法有很多,比如说用官方提供的JSONObject或者谷歌提供的开源库GSON,以及一些第三方开源库. 这里用的是GSON,为了测试方便,借助了一个百度的api,一个图 ...

  9. Atitit java 二维码识别 图片识别

    Atitit java 二维码识别 图片识别 1.1. 解码11.2. 首先,我们先说一下二维码一共有40个尺寸.官方叫版本Version.11.3. 二维码的样例:21.4. 定位图案21.5. 数 ...

随机推荐

  1. Log4j NDC MDC

    NDC(Nested Diagnostic Context)和MDC(Mapped Diagnostic Context)是log4j种非常有用的两个类,它们用于存储应用程序的上下文信息(contex ...

  2. ios 集合总结

    NSArray 用于对象有序集合(相当于是数组) 它有两个限制: 1. 它只能存储objective-c的对象,但不能存储C中的基本数据类型,如int , float, enum, struct等. ...

  3. listview设置条目点击的时候不变色(让状态选择器不起作用)

    未设置前的效果如下图: 很明显,“酷狗音乐”那个条目被点击的时候,条目背景变为蓝色,怎么去掉这个颜色呢? java代码可以这么写: listView.setSelector(new ColorDraw ...

  4. Struts2 语法--验证方式:

    第一种方式: 重写validation方法, ====验证action中所有的方法: 1. 在UserAction1里重写validation: @Override public void valid ...

  5. Android开发之如何保证Service不被杀掉(broadcast+system/app)

    序言 最近项目要实现这样一个效果:运行后,要有一个service始终保持在后台运行,不管用户作出什么操作,都要保证service不被kill,这可真是一个难题.参考了现今各种定制版的系统和安全厂商牛虻 ...

  6. UL/LI

    如何用CSS制作横向菜单 让ul li横向排列及圆点处理    我们先建立一个无序列表,来建立菜单的结构.代码是: <ul><li><a href="1&quo ...

  7. emacs redo

    c / c/ cg c/ cg c/ tramp: /sudo::/usr/

  8. UIView你知道多少

    转载自:http://www.cnblogs.com/likwo/archive/2011/06/18/2084192.html   曾经有人这么说过,在iphone里你看到的,摸到的,都是UIVie ...

  9. 上传数据插件 Easy Populate 遇到问题 ?langer=remove

    批量上传,出现如下错误提示: ADD NEW PRODUCT FAILED! – Model: no200 – SQL error. Check Easy Populate error log in ...

  10. 需要注意的subList方法!和substring是不一样的!从源码解释他们的不同。

    很多时候我们截取字符串用的是substring方法,很自然用着,但是对于列表的截取时很多时候就用得很少,但是其实他们是很不一样的,具体哪里不一样呢? package main; import java ...