24 November 2015

数据抓取过程中,验证码是一个必须面对的坎。总体来说验证码识别分两种,机器识别和人工识别,随着现在验证码越来越变态,要想机器识别验证码已经越来越难了,典型的入12306那种已经更改为图像识别,而不是简单文字识别了。 验证码识别技术有很多,这里仅总结自己在项目中用的的两种方式:

  • 基于开源的Tesseract-OCR的技术
  • 商业的验证码识别服务,这里就不说服务商的名字了,不广告,有需要的可以邮件联系,(其实是反正也没有钱拿,干嘛给别人打广告)

##开源的Tesseract-OCR图片识别引擎

  • 关于Tesseract-OCR,这里简单介绍下:开源的OCR识别引擎,初期Tesseract引擎由HP实验室研发,后来贡献给了开源软件业,后经由Google进行改进,消除bug,优化,重新发布。

  • 下载地址在这里,http://code.google.com/p/tesseract-ocr 需翻墙,更多详细介绍,自行搜索。

  • 这个软件windows和linux版本都有,linux系统中下载的时候主要要下载相关依赖。

  • 下载完毕后直接通过命令行可以测试使用。详细不解释,自行搜索。

  • 这里说明一点,我在项目中并没有直接使用这个引擎,而是使用了一个国人封装的一个库,这里广告以下,叫做EasyOCR ,开源软件,用了就帮人家喊一嗓子。具体用法自行看文档,文档很清楚了:http://www.easyproject.cn/easyocr/zh-cn/index.jsp

##商业的验证码识别服务

  • 商业的验证码识别服务有很多,自行搜索。
  • 这里说明一点,很多商业的验证码识别服务,其实后台实现上也是使用一些商业或者开源的验证码识别软件,而复杂的验证码,比如计算题成语题之类的,基本都是采用人工打码的方式,所以用着些服务的时候延迟比较厉害,可能会3到5秒,有时候甚至十多秒,想了解的可以自行搜索人工打码




Fork me on GitHub