python 处理图片验证码

在做自动化测试的时候一般登录都有验证码,若验证码为图片验证码,则可以用python的Pillow对验证码图片进行操作

注:PIL 只支持到Python 2.7。PIL官方网站:http://www.pythonware.com/products/pil/,Pillow是PIL的一个派生分支

1. 安装Pillow

在命令行使用PIP安装:

pip install Pillow

或在命令行使用easy_install安装:

easy_install Pillow

安装完成后,使用from PIL import Image就引用使用库了。比如:

from PIL import Image

im = Image.open("a.jpg")

im.show()

因为我是windows7 64位的,按以上办法安装失败(PIL官网提供的下载包都是32位的

然后,有人提供了非官方的64位库:http://www.lfd.uci.edu/~gohlke/pythonlibs/

叫做Pillow,下载下来,是个 .whl 结尾的文件,这个其实就是python使用的一种压缩文件(后缀名改成zip,可以打开查看文件)

这个需要用 pip 安装:

pip install Pillow-2.7.0-cp27-none-win_amd64.whl  即可。

注:若是安装的Pillow ,在使用时需要 ‘ from PIL import Image' 代替 'import Image'

------------------------------------------------------------------------------------------------------------------------------------------

在安装 Pillow的时候,发现安装不上提示 pip的版本过低了需要升级:

输入指令

python -m pip install -U pip(要注意大小写,以免安装失败)

会自动卸载以前的旧版本,并下载安装新版本。

结果更新pip提示有问题,再次 输入 python -m pip install -U pip ,提示 文件已到达指定目录,根据提示的文件路径手动删除已下载pip文件(高版本pip文件)

再在 命令行 输入 python -m pip install -U pip 即可

相关文档:http://www.th7.cn/Program/Python/201602/768304.shtml

---------------------------------------------------------------------------------------------------------------

2.安装 pytesser 

pytesser下载地址:http://download.csdn.net/download/pyliang_2008/5564135

相关文档:http://blog.csdn.net/bone_ace/article/details/50436587

pytesser下载后解压到pytesser文件中,在把文件移动到python安装目录(如:C:/Python27/Lib/site-packages),然后在该目录下添加 pytesser.pth 文件内容已为pytesser

然后把pytesser文件中pytesser.py 的文件名改为__init__.py,在打开该文件把 import Image 改为 from PIL import Image,再把 tesseract_exe_name 的值改为

'C:/Python27/Lib/site-packages/pytesser/tesseract.exe'(对应python安装目录)

然后 添加环境,在我的电脑-属性-高级系统设置-环境变量-path 中添加 C:/Python27/Lib/site-packages;C:/Python27/Lib/site-packages/pytesser

3读取图片验证码

案例1:

from pytesser import *

from PIL import Image


def xx():

   # 打开图片

    image = Image.open('E:/TestPython/function/imgs/site.png')

    # 识别图片验证码

    print(image_to_string(image))


def xx1():

    image = Image.open('E:/TestPython/function/imgs/site.png')

    # 设定二值图像转换''L''表示灰度,''1''表示二值图模式

    out = image .convert('1')

    # 保存图像

    out.save('a.jpg')

    # 对图片进行截取crop(x1, y1, x2, y2)

    # x1:距离图片左边x1px,x2:距离图片左边x2px;

    # y1:距离图片顶部y1px,y2:距离图片顶部y2px;

    # crop 会截取图片(x2-x1)的宽度,(y2-y1)的高度,故x2>x1,y2>y1

    # 设置截取坐标

    box = (10, 2, 23, 40)

    croplmg = out.crop(box)

    croplmg.save('1.jpg')

    tx = []

    image1 = Image.open('1.jpg')

   # 识别图片验证码

    tx.append(image_to_string(image1))


if __name__ == '__main__':

    xx1()



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值