Python爬虫4.5 — tesseract[图片验证码识别]用法教程
综述
本系列文档用于对Python爬虫技术的学习进行简单的教程讲解,巩固自己技术知识的同时,万一一不小心又正好对你有用那就更好了。
Python 版本是3.7.4
阻碍我们爬虫的,有时候正式在登陆或者请求一些数据时候的图形验证码,因此这里我们讲解一种能将图片翻译成文字的技术。将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition),简写OCR
。实现OCR
的库不是很多,特别是开源的,因为这块存在一定的技术壁垒(需要大量的数据、算法、机器学习、深度学习等知识),并且如果做好了具有很高的商业价值,因此开源的比较少。这里介绍一个比较优秀的图像识别开源库:Tesseract
Tesseract
介绍
Tesseract是一个OCR库,目前由谷歌维护的。Tesseract是目前公认最优秀、最准确的开源OCR库。Tesseract具有很高的识别度,也具有很高的灵活性,它可以通过训练识别任何字体。
安装
Windows系统:
点击下面链接,下载可执行文件,然后进行安装即可(放在不需要权限的纯英文路径下):http://github.com/tesseract-ocr/ (或者使用这个链接:https://digi.bib.uni-mannheim.de/tesseract/)
Linux系统
可以从下面链接下载源码自行编译:http://github.com/tesseract-ocr/tesseract/wiki/Compiling ,或者在ubuntu
下通过以下命令进行安装:
sudo apt install tesseract-ocr
Mac系统
用Homebrew
即可方便安装:
brew install tesseract
设置环境变量
安装完成后,如果想要在命令行中使用Tesseract
,那么应该设置环境变量。Mac
和Linux
在安装的时候就默认已经设置好了,在Windows
下把tesseract.exe
所在的路径添加到PATH
环境变量中。
到这里,我们就算安装完成了,但是,我们的系统还是无法识别中文的,我们要去下载简体汉字、繁体汉字语言包(其他语言的识别包下载地址:https://github.com/tesseract-ocr/tesseract/wiki/Data-Files ),下载好之后放到安装目录的tessconfigs目录下即可。还有一个环境变量需要设置的是,要把训练的数据文件路径也放到环境变量中。在环境变量中,添加一个TESSDATA_PREFIX=D:\Python\Tesseract-OCR\tessdata
(需要根据你的安装路径进行相应的调整)。
简单使用
在命令行中使用tesseract识别图像
如果想要在cmd
下能够使用tesseract
命令,那么需要把tesseract.exe
所在的目录放到PATH
环境变量中(上文已经说过)。然后使用命令:
tesseract 图片路径地址 文件路径地址
例如命令:
tesseract a.png a
那么就会识别出a.png
中的图片,并且把文字写入到a.txt
中。如果不想写入文件,直接显示在终端,那么不要加文件名就可以了。
代码中使用tesseract识别图像
在Python代码中操作tesseract
需要安装一个库,叫做pytesseract
。通过pip
的方式即可安装:
pip install pytesseract
并且,需要读取图片,还需要借助一个第三方库叫做PIL
。可以先通过pip list
查看是否已经安装。要注意的是PIL
主要针对Python2,它并没有跟随python的进化而进化。有大师为此,专门写了一个针对python3的pillow模块。所以,如果需要安装python3对应的PIL,应该选择安装pillow。是同样是通过pip
的方式安装:
pip install PIL
pip install pillow
使用pytesseract
将图片上的文字转换为文本文字的示例代码如下:
# 导入所需库
import pytesseract
from PIL import Image
# 指定tesseract.exe路径
pytesseract.pytesseract.tesseract_cmd = r'D:\Python\Tesseract-OCR\tesseract.exe'
# 打开图片
image = Image.open('1.png')
# 调用image_to_string识别图片转为字符串
text = pytesseract.image_to_string(image)
print(text)
其他博文链接
- Python爬虫1.1 — urllib基础用法教程
- Python爬虫1.2 — urllib高级用法教程
- Python爬虫1.3 — requests基础用法教程
- Python爬虫1.4 — requests高级用法教程
- Python爬虫2.1 — BeautifulSoup用法教程
- Python爬虫2.2 — xpath用法教程
- Python爬虫3.1 — json用法教程
- Python爬虫3.2 — csv用法教程
- Python爬虫3.3 — txt用法教程
- Python爬虫4.1 — threading(多线程)用法教程
- Python爬虫4.2 — ajax(动态网页数据抓取)用法教程
- Python爬虫4.3 — selenium基础用法教程
- Python爬虫4.4 — selenium高级用法教程