这两天因为工作需要,要到某个网站采集信息,一是要模拟登陆,二是要破解验证码,本想用第三方付费打码,但是想想网上免费的代码也挺多的,于是乎准备从网上撸点代码下来,谁知道,撸了好多个都不行,本人以前也没接触过这方面的,代码无从下手,最后不知道在哪个兄台博客找到一个国外的第三方开源OCR,说是强大的谷歌公司做维护,C++开发的,有.NET封装的链接库,甚好!

项目地址:https://github.com/tesseract-ocr/tesseract
语言库:https://github.com/tesseract-ocr/langdata
OCR语言训练:https://github.com/tesseract-ocr/tessdata

下面开始撸示例:

新建C#控制台,版本选择.NET 4.5

Tesseract ocr = new Tesseract();
ocr.SetVariable("tessedit_char_whitelist", "0123456789");
ocr.Init(@"D:\测试\Ocr\tessdata", "eng", true);

第一句就不用说了,第二句是设置识别的字符,例如,如果你要识别的验证码是A-Z0-9你就都写进来就OK了
第三句就是初始化OCR的语言训练配置,里面很多文件,只要写文件名小数点前面的就OK了

List<Word> result = ocr.DoOCR(bmp, Rectangle.Empty);
if(result.Count<=)return;
string code = result[].Text;

最后的Code就是识别出来的验证码了,这里验证码图片一定要转换为Bitmap对象才行,记得用完了释放Bitmap对象!

下面是我测试截图:

上面是验证码,下面文件名是识别出来的结果命名保存的文件!当然验证码是经过处理的,原始的验证码图片是酱紫的:

验证码图片太小,OCR识别不了,而且默认情况下,要是白底,黑子才能识别,所以网上的验证码一定要先自己二值化处理并且清除掉背景色,再进行识别!
我这里的处理方式是二值化之后,把图片放大三倍,不要担心看着有锯齿,OCR可以识别的
当初我把图片放大两倍,发现有的时候8会被识别成3,所以我干脆又放大了一倍,发现不存在这个问题了,虽然看起来锯齿感很明显,但是OCR不管美丑

你是不是参照案例撸码了,运行了?然后你发现程序运行报错了?

这里要在程序的app.config的startup节点加上 useLegacyV2RuntimeActivationPolicy="true"节点,详细如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>

然后再运行,是不是可以识别出来了,就是这么简单!

最新文章

  1. Oracle数据库操作知道
  2. float4与half4数据类型
  3. 在C函数中保存状态:registry、reference和upvalues
  4. C# 最简单的递归
  5. sublimeText3中 less2css error: `lessc` is not available的解决办法
  6. windows下MongoDB的安装及配置
  7. php秒杀
  8. ps-色彩饱和度的设计
  9. Spring MVC的文件上传
  10. python小小面试题
  11. Java技术分享:如何编写servlet程序
  12. 设计模式のNullObjectPattern(空对象模式)----行为模式
  13. Luogu4726 【模板】多项式指数函数(NTT+多项式求逆)
  14. 最完整苹果IOS个人开发账号升级方法-个人开发账号升级为公司开发者账号常见误区
  15. 20165306 2017-2018-2《Java程序设计》课程总结
  16. OpenCV图像分割2
  17. 理解inode 以及 软链接和硬链接概念区分
  18. php laravel 多条件筛选
  19. 乘风破浪:LeetCode真题_025_Reverse Nodes in k-Group
  20. oauth2-server-php-docs 概念

热门文章

  1. JavaScript 对数据处理的5个API
  2. CRL快速开发框架系列教程十一(大数据分库分表解决方案)
  3. 【置顶】CoreCLR系列随笔
  4. [原] Cgroup CPU, Blkio 测试
  5. Visual Studio 2013 添加一般应用程序(.ashx)文件到SharePoint项目
  6. Hadoop 2.x 生态系统及技术架构图
  7. linux字符串url编码与解码
  8. 分布式中使用Redis实现Session共享(二)
  9. 为支持ASP.NET5跨平台,Jexus再添新举措
  10. 微软开源全新的文档生成工具DocFX