python网络数据采集-图像识别与文字处理

第一部分:图像识别和文字处理概述

      本篇文章主要学习通过Python的库来是被和使用在线图片中的文字。当你不想让自己的文字被网络机器人采集时,把文字做成图片放在网页上是常用的办法。在一些联系人通讯录经常可以看到,一个邮箱地址部分或全部转换成图片。人们可能察觉不出明显的差异,但是机器人阅读这些图片时会非常困难,这种方法可以防止多数垃圾邮件发送器轻易地获取你的邮箱地址。

    利用这种人类用户可以正常读取但是大多数机器人都没法读取的图片,验证码(CAPTCHA)就出现了。验证码读取的难易程度也大不相同,有些验证码比其他的更加难度,后面我们会介绍这种问题。

    但是,验证码不是网络爬虫数据采集时需要进行图像转文字翻译工作的唯一对象。目前,有很多文档都是简单地扫描后直接放到网上,它们和互联网上的很多文档一样都是没法直接使用,尽管他们都“近在眼前”。如果无法图形转为文字,要想使用这些文档的内容,就只能人手工敲了。

    将图像翻译成文字一般被称为光学文字识别(Optical Character Recognition OCR)。可以实现OCR的底层库并不多,目前很多库都是使用共同的几个底层OCR库,或者在上面进行定制。这类OCR系统有时会变得非常复杂。

第二部分:OCR库概述

           在读取和处理图像,图像相关的机器学习以及创建图像等任务中,Python一直都是非常出色的语言。虽然很多库可以进行图像处理,有两个库:Pillow和Tesseract。每个库都可以从它们的网站上下载并安装(http://pillow.readthedocs,org/installation.html和http://pypi.python.org/pypi/pytesseract),或者用第三方管理器(pip)通过"pillow"和"pytesseract"进行安装。

2.1 Pillow

    尽管Pillow算不上是图像处理功能最全的库,但是它拥有你最需要使用的全部功能,除非你要用Python重写一个Photoshop或进行更复杂的研究。它就是一个文档健全且十分易用的库。Pillow是从Python 2.x版本的Python图像库(Python Imaging Library PIL)分出来的,支持Python3.x版本。和PIL一样,Pillow也可以轻松地导入代码,并通过大量的过滤,修正甚至像素级变换操作处理图片.

2.2 Tesseract

    Tesseract是一个OCR库,目前有Google赞助。Tesseract是目前公认最优秀最精确的开源OCR系统。除了极高的精确度,Tesseract也具有很高的灵活性。它可以通过训练识别出人格字体(只要这些字体的风格保持不变就可以),也可以识别出任何的Unicode字符。Tesseract是一个Python命令行工具,不是通过import语句导入的库,要用tesseract命令在Python的外面运行。

2.2.1 安装Tesseract

    在Window系统上,可以下载方便的可执行安装文件(http://code.google.com/p/tesseract-ocr/download/list)安装即可。Linux用户可以通过apt-get 安装:

sudo  apt-get tesseract-ocr
    要使用Tesseract的功能,比如后面的示例中训练程序识别字母,你需要现在系统中设置一下新的环境变量$TESSDATA_PREFIX,让Tesseract知道训练的数据文件存储在哪里。

    大多数Linux和MacOS系统上,可以这么设置:

$ export TESSDATA_PREFIX=/usr/local/share/

具体的安装过程请参考我的文章

2.3 NumPy

     虽然NumPy并非解决OCR问题时必须使用的库,但是如果你想训练Tesseract识别后续要用的字符或字体,那么就会用到它。NumPy是一个非常强大的库,具有大量线性代数以及大规模科学计算的方法。因为NumPy可以用数学方法把图片表示成巨大的像素数组,所以它可以流畅地配合Tesseract完成任务。

    NumPy和其他的Python库一样,可以通过第三方包管理器(pip等)来安装:

pip install numpy


你可能感兴趣的:(python网络爬虫)