Tessnet2图片识别
验证码识别据说可以用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.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)
{
}
}
}
}
|
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图片识别的更多相关文章
- Tessnet2图片识别(2)
1. 引用 tessnet2.dll (只有NET2.0版本) 2. 视图页 <%@ Page Language="C#" MasterPageFile="~/Vi ...
- 【Machine Learning】KNN算法虹膜图片识别
K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇一:WPF常用知识以及本项目设计总结
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇二:基于OneNote难点突破和批量识别
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇三:批量处理后的txt文件入库处理
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇四:关于OneNote入库处理以及审核
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
- WindowsAPI调用和OCR图片识别
傻了吧唧的装双系统.成功的干崩了原本的系统.现在重装VS.闲的没事胡扯几句. WindowsAPI在每一台Windows系统上开放标准API供开发人员调用.功能齐全.在这里只介绍三个部分. 1.利用A ...
- Android开发学习之路-GSON使用心得(OCR图片识别)
在安卓中解析JSON串可以使用的方法有很多,比如说用官方提供的JSONObject或者谷歌提供的开源库GSON,以及一些第三方开源库. 这里用的是GSON,为了测试方便,借助了一个百度的api,一个图 ...
- Atitit java 二维码识别 图片识别
Atitit java 二维码识别 图片识别 1.1. 解码11.2. 首先,我们先说一下二维码一共有40个尺寸.官方叫版本Version.11.3. 二维码的样例:21.4. 定位图案21.5. 数 ...
随机推荐
- 学习笔记——策略模式Strategy
策略模式,与模板模式一样,都是为了将接口和算法实现解耦,但策略模式更主要是整体算法的替换,而模板模式主要是流程一致,部分算法的替换. 个人理解为,一般算法替换,使用策略模式,当算法流程一致,可以提取为 ...
- scala模式匹配与样例类
样本类:添加了case的类便是样本类.这种修饰符可以让Scala编译器自动为这个类添加一些语法上的便捷设定.如下: 1.添加与类名一致的工厂方法.也就是说,可以写成Var("x") ...
- 转:用C语言的rand()和srand()产生伪随机数的方法总结
标准库<cstdlib>(被包含于<iostream>中)提供两个帮助生成伪随机数的函数: 函数一:int rand(void): 从srand (seed)中指定的seed开 ...
- 交换机VLAN、 TRUNK 、VTP 配置
交换机VLAN. TRUNK .VTP 配置 1. 配置 CISCO 二层交换机的IP 地址(catalyst 2950 为例) SW1(config)#int vlan 1 //进入管理接口inte ...
- notify vs nofifyall
http://stackoverflow.com/questions/37026/java-notify-vs-notifyall-all-over-again Do you want to tell ...
- JfreeCHart 异常:Chart image not found
http://bbs.justep.com/thread-54775-1-1.html java.lang.IllegalArgumentException: Width (0) and height ...
- HDU 1074 Doing Homework(状态压缩)
之前做过一个题,是在学贪心的时候做的,所以这个题就想当然的跑偏了,当看到N是<=16 的时候,状态压缩就理所当然了 #include<iostream> #include<cs ...
- 两列布局,读《css那些事儿》
两列布局: 1.两列定宽: 要点:float.width固定. :after清除浮动. 前提:两列的盒模型宽度相加不能大于父元素的宽度,否则会出现错位现象. <!DOCTYPE html> ...
- css3新增的background属性
1.background-size 可取值:auto(背景图片正常显示) size size (150px 40%) cover (背景图片覆盖整个背景) contain(背景图片缩小填满整个背景) ...
- Monkey and Banana(基础DP)
Monkey and Banana Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...