验证码识别据说可以用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. 我终于有案例库啦(github 提供的)

    穷逼一个,一直在纠结要不要买个服务器什么的. 后来在慕课网看 git 教程时看到 github 可以帮你展示网页哟,于是我便有了这个案例库. 网址:https://foreverz133.github ...

  2. JavaBean--JavaBean与表单

    SimpleBean.java: package cn.mldn.lxh.demo ; public class SimpleBean { private String name ; private ...

  3. 用FusionChartsFree做饼状图、柱状图、折线图的实例

    1.先来看看要进行表现的页面:myChart.jsp <%@ page language="java" contentType="text/html; charse ...

  4. 一键生成JNI头文件方法二

    经常使用java的同学一定都接触过JNI(Java Native Interface)吧.JNI为我们提供了java<---->C/C++之间的接口,使得我们可以在java中调用C程序,以 ...

  5. [转]使用openssl库实现RSA、AES数据加密

    openssl是可以很方便加密解密的库,可以使用它来对需要在网络中传输的数据加密.可以使用非对称加密:公钥加密,私钥解密.openssl提供了对RSA的支持,但RSA存在计算效率低的问题,所以一般的做 ...

  6. android4.0 的图库Gallery2代码分析(四) 之相册的数据处理以及显示

    最近迫于生存压力,不得不给人兼职打工.故在博文中加了个求点击的链接.麻烦有时间的博友们帮我点击一下.没时间的不用勉强啊.不过请放心,我是做技术的,肯定链接没病毒,就是我打工的淘宝店铺.嘻嘻.http: ...

  7. 用css、html编写一个两列布局的网页,名称为css.html ,要求左侧宽度为200px ,右侧自动扩展

    <body><div style=" float:left; width:200px; height:300px; border: 1px #0033FF solid;&q ...

  8. c语言学习基础:[1]开发工具介绍

    标签:c语言 1 2 3 4 分步阅读 学习编程语言的童鞋们一开始接触到的最多的估计就是C语言了,其次才是什么java.c++等,可以说学习c语言是我们走向编程世界的一座桥梁,学好它,对于我们学习和研 ...

  9. Sublime 2 配置

    在队友的推荐下,爱上了这款神一样的文本编辑器,熟练之后编辑效率真心是大幅提升啊. 一.Package Control Sublime拥有很强大的插件功能,而自带的缺少个管理工具,这个包可以用来很方便地 ...

  10. java中堆和堆栈的区别

    java中堆和堆栈的区别(一) 1.栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. 2. 栈的优势是,存取 ...