β

如何使用tesserocr破解图形验证码

程序师 13 阅读

,比如像某乎,如果不先登陆,连里面的内容数据都爬不到,而验证码就是网站进行发爬虫的一种措施,随着技术的发展,验证码越来越复杂,爬虫的工作越来越艰苦,所以这次就来讲解,怎么来识别验证码;(听上去口气很大的感觉)

先来看看,目前遇到的验证码种类有哪些?

1)图形验证码
图形验证码应该是最简单的一种验证码,这种验证码是最早出现,也是目前最常见的,一般组成规则是4个字母或数字或混合组成;

2)滑动验证码

3)点触验证码

Ok,上面这3种验证码方式,应该是目前PC上比较常见的验证码种类的,当然手机app上还会有手势验证,宫格验证,语音验证等等,这里就不介绍,主要针对上面常见的3种介绍;

1 图形验证码

某乎的验证码有2种,一种是图形验证码,一种是点触验证码,经过测试发现,一开始是显示图形验证码,但当登陆退出次数逐渐增多,就会变成点触验证码,这种验证码的切换机制,也算是防爬虫的一种手段,闲话不多说,先喵喵:

某乎链接:http://www.zhihu.com/signup?next=%2F
打开后默认是在注册页面,点击下登陆按钮,如果还是没有验证码,刷新几次网页就行了;

下面这种,下2篇文章会介绍;

2 信息介绍

识别图形验证码需要安装 tesserocr 这个库,下面介绍下tesserocr;
tesserocr是Python的一个OCR识别库,但其实是对tesseract做了一层Python Api的封装,
核心还是tesseract ,所以在安装tesserocr之前,需要先安装tesseract;

等下,懵逼中,tesserocr这个能看明白,是一个库,但OCR是什么?tesseract又是什么?

OCR
OCR,全称叫 Optical Character Recognition,中文翻译叫光学字符识别,是指通过扫描字符,通过其形状将其翻译成电子文本的过程;

举例:
当有一个图形验证码,先使用OCR技术将其转化成电子文本,然后爬虫将识别的结果提交到服务器,便达到自动识别验证码的过程;

tesseract
tesseract是google开源的OCR

OK,貌似对概念有所理解了,还有个疑问,之前有在图形识别领域,还有个opencv的玩意,那这两者有什么区别?
opencv专注机器视觉
tesseract专注字符识别

所以从领域来说,opencv更广,而图形验证码,opencv也可以做,但杀鸡焉用牛刀~

3 环境准备

windows下的安装

在Windows下,要先下载tesseract,它为tesserocr提供了支持;
tesseract下载地址:http://digi.bib.uni-mannheim.de/tesseract/
打开后,可以看到各种exe的列表,可以随便挑选;
其中文件名中带有dev的为开发版本,不带dev则为稳定版本,例如jb是下载 tesseract-ocr-setup-3.05.01.exe;

下载后双击,一路点击,直到出现下面这个页面

这里需要勾选红框里的Additional language data(download),这个选项是安装OCR识别支持的语言包,这样OCR就可以识别多国语言,然后再一路点击NEXT即可,因为要下载语言包,所以需要点时间,大概10-20分钟左右,跟网速有关,如果不需要支持多国语言的话,也可以不勾选,自由选择
需要说明:默认包含英文字库
如果,觉得一次下载那么多语言占空间,又或者觉得网速慢,也可以选择单独安装中文字库;
字库下载地址:http://github.com/tesseract-ocr/tessdata
打开后,直接搜索chi_sim.traineddata,这个代表的就是中文,下载下来;
然后找到刚刚tesseract安装目录,里面会有一个叫tessdata的目录,直接把刚下载的语言包放到这个目录下即可;

如何验证tesseract是否安装成功?直接cmd下输入tesseract即可;
成功会直接显示信息;

如果提示’tesseract’ 不是内部或外部命令,则是因为没有配置环境变量,手动把tesseract根目录配置到path参数下即可,这块不详细说明;

到此为止,tesseract安装成功啦~

接下来就 安装tesserocr ,直接pip命令即可:

pip3 install tesserocr install

但jb在安装的时候,直接报错:

试过很多种方式,就算使用conda install tesserocr,也一样报错。

经历千辛万苦,终于找到一条可行的命令:

conda install -c simonflueckiger tesserocr

最终就安装上tesserocr啦~

如何验证是否真的安装了?很简单,直接import tesserocr,不报错就说明安装好了;

对了,如果有同学不知道conda这条命令的话,请访问下面的链接,直接搜索scrapy安装,会有介绍conda:
http://juejin.im/post/5afcb91251882565bd257097|

OK,windows下的tesserocr跟tesseract的环境已经安装好了;

别着急,顺便介绍下Linux跟Mac,但以下方式均未经过jb验证,信息来源于网上,仅供参考:

Linux下的安装
对于Liunx来说,不同系统已经有了不同的发行包了,它可能叫做tesseract-ocr或者tesseract,直接用对应的命令安装即可;

作者:程序师
用程序师的眼光看世界
原文地址:如何使用tesserocr破解图形验证码, 感谢原作者分享。

发表评论