Python 图形验证码库 tesserocr | 臭大佬

臭大佬 2020-08-26 23:00:04 2307
Python 
简介 Python 图形验证码库 tesserocr

用途

对于验证码,我们可以使用OCR技术来将其转化为电子文本,然后爬虫将识别结果提交给服务器,便可以达到自动识别验证码的过程。

概念

OCR

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

tesseract

tesseract是google开源的OCR

安装

WIN10

tesserocr需要安装tessoract依赖库,所以安装tesserocr前需要安装tessoract。
tesseract下载地址:https://digi.bib.uni-mannheim.de/tesseract/,(可能需要爬墙哦)

然后安装到这一步注意要勾选这一项来安装OCR识别支持的语言包,这样OCR就可以识别多国语言,然后就可以一直点击下一步完成安装。

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

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

重启cmd控制台,再次输入tesseract;

安装 tesserocr

windows不能用pip install tesserocr所以我这里是安装.whl文件,下载地址:https://github.com/simonflueckiger/tesserocr-windows_build/releases

把下载好的xxx.whl文件放在python安装目录下的\Lib\site-packages文件夹里面,进入该目录下,然后在这里打开cmd,输入命令pip install xxx.whl

pip install tesserocr-2.4.0-cp36-cp36m-win_amd64.whl

在运行过程中,我们还需要更新pip

pip install --upgrade pip

运行代码

import tesserocr
from PIL import Image

# 新建Image对象
image = Image.open("./code_img/veriCode (1).do")
# 进行置灰处理
image = image.convert('L')
# 这个是二值化阈值
threshold = 150
table = []

for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)
# 通过表格转换成二进制图片,1的作用是白色,不然就全部黑色了
image = image.point(table, "1")
#image.show()
result = tesserocr.image_to_text(image)
print(result)

运行时有一个报错信息

RuntimeError: Failed to init API, possibly an invalid tessdata path: D:\Program Files\Anaconda3\envs\tensorflow\/tessdata/

只要把刚才安装的tesseract下面的tessdata文件夹复制到python的安装路径里(与lib文件夹同级),也就是报错报的地址处。

再次执行:

可以获取得到验证码内容了。