用图像识别做爬虫

举报
倪平宇 发表于 2019/08/21 11:29:01 2019/08/21
【摘要】 最近闲来无事为了提高自己,到查试图抓取一些企业信息,可是发现在抓取其企业列表页时,看到的企业名称和实际抓到的不一样,网站对其进行了加密(今天又正常了),同样例如猫眼电影的电影票房信息也进行了加密处理。结合之前处理验证码的经验我在想能不能利用图像识别的方法抓取这些内容,因为一般网页上的内容都很规整,据我目前的测试Tesseract对规整数字的识别率已经达到95%以上,走通这个流程后不但可以实现...

最近闲来无事为了提高自己,到查试图抓取一些企业信息,可是发现在抓取其企业列表页时,看到的企业名称和实际抓到的不一样,网站对其进行了加密(今天又正常了),同样例如猫眼电影的电影票房信息也进行了加密处理。结合之前处理验证码的经验我在想能不能利用图像识别的方法抓取这些内容,因为一般网页上的内容都很规整,据我目前的测试Tesseract对规整数字的识别率已经达到95%以上,走通这个流程后不但可以实现对简单验证码的自动识别,而且爬取不同的网站不用去分析其加密函数了岂不快哉!本次分享是我的初步尝试,目前用的工具为:Python+Selenium+chrome+PIL+Tesseract-OCR**。

webp

image

01 THE THINKING 思路介绍

这里采用了selenium驱动浏览器的方法进行数据采集,因为需要把对应标签保存为图片进行识别,所以只能采用模拟登陆的办法。这里用chrome浏览器后面会介绍为什么不采用phantomJS,PIL是用来进行图片预处理的,一般首相会进行二值化处理,进而进行锐化处理增强其对比度,这样对于字体颜色不深的图像识别可以提高其识别精度。这里的图像识别采用的是Tesseract-OCR这个软件,Tesseract的OCR引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。然而,HP不久便决定放弃OCR业务,Tesseract也从此尘封。数年以后,HP意识到,与其将Tesseract束之高阁,不如贡献给开源软件业,让其重焕新生–2005年,Tesseract由美国内华达州信息技术研究所获得,并求诸于Google对 Tesseract进行改进、消除Bug、优化工作。

Tesseract目前已作为开源项目发布在Google Project,其项目主页在这里(https://code.google.com/p/tesseract-ocr/)查看。

02 THE INSTALL AND CONFIGURATION
Tesseract安装配置

以下是Windows环境下的安装配置过程:

第一步:下载安装包

根据https://github.com/tesseract-ocr/tesseract/wiki,找到64位的非官方安装包http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-4.00.00dev.exe,下载后直接安装即可,但是要记得你的安装目录,我们等会配置环境变量要用。

如果不是做英文的图文识别,还需要下载其他语言的识别包https://github.com/tesseract-ocr/tesseract/wiki/Data-Files

简体字识别包:https://raw.githubusercontent.com/tesseract-ocr/tessdata/4.00/chi_sim.traineddata

繁体字识别包:https://github.com/tesseract-ocr/tessdata/raw/4.0/chi_tra.traineddata

数字识别包:https://raw.githubusercontent.com/tesseract-ocr/tessdata/4.00/num.traineddata



下好的识别包需要放到安装目录Tesseract-OCR下的tessdata文件夹下,如下图所示:

webp


第二步:安装

直接执行下载好的tesseract-ocr-setup-4.00.00dev.exe,下一步、下一步安装。

第三步:配置环境变量

注意:我的系统是win8.1,其他系统应该差不多,跟配置java变量一样



复制你的安装地址,我的是安装在E:\Program Files (x86)\Tesseract-OCR,界面如下:

webp


复制安装路径“E:\Program Files (x86)\Tesseract-OCR”,进入“控制面板\系统和安全\系统”,点击“高级系统设置”进入系统属性,点击“环境变量”,然后新建两个环境变量,分别命名为:Tesseract-OCR和TESSDATA_PREFIX,值分别是:E:\Program Files (x86)\Tesseract-OCR ,E:\Program Files (x86)\Tesseract-OCR\tessdata;配置好了点击保存。新添加环境变量一般需要重启电脑后才能生效。

webp


打开命令终端,输入:tesseract -v,可以看到版本信息,如下图:

webp


如果报错可能是配置问题,请仔细检查,如不能解决请留言。安装配置完成可以在命令行中测试tesseract是否能识别成功,具体流程如下:

  1. 先将需要识别的图片保存到一个文件夹中,例如网页上的内容可以通过截图将需要分别的内容保存为图片;

  2. 可在命令行窗口中打开存储图片的文件夹;

  3. 在命令行中输入:

tesseract  <图片名称如:1.png>  <保存文件名称如:1(此时识别出的内容会保存在1.txt文件内)>  -l  <识别包名称如:num/eng/chi_sim,若干识别的内容中存在数字和英文可以用:num+eng,其他情况与此相似>,举例如下:

webp


解析的图片识别结果如下图所示:

webp

&

webp


通过这个案例我们发现我们能准确识别其内容!!


来源:哈希大数据

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。