MENU

人生苦短,我用Python之验证码识别工具

• July 16, 2016 • Read: 2686 • 折腾

最近需要做一个小工具,里面比较关键的一个就是图像识别,也就是识别图片里面的数字或者字符,第一个想到的就是Python的验证码识别,下面就尝试了一下,简单有效。

一、下载安装依赖包

你需要下载安装以下两个依赖包:

Python Imaging Library (PIL)
PyTesser

解压后放到<python安装目录>\Lib\site-packages,并且运行setup.py
当然,也可以通过pip的方式安装,比较方便,详见下文四。

二、原代码


#coding=utf-8
import Image
import ImageEnhance
import ImageFilter
import sys
from pytesser import *
# 二值化
threshold = 140
table = []
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)
#由于都是数字
#对于识别成字母的 采用该表进行修正
rep={'O':'0',
    'I':'1','L':'1',
    'Z':'2',
    'S':'8'
    };
def  getverify1(name):
    
    #打开图片
    im = Image.open(name)
    #转化到亮度
    imgry = im.convert('L')
    imgry.save('g'+name)
    #二值化
    out = imgry.point(table,'1')
    out.save('b'+name)
    #识别
    text = image_to_string(out)
    #识别对吗
    text = text.strip()
    text = text.upper();
    for r in rep:
        text = text.replace(r,rep[r])
    #out.save(text+'.jpg')
    print text
    return text
getverify1('1.jpg')

三、问题解决

突然发现在64位的电脑上玩Python会出现各种各样的问题。在安装PyTesser依赖包的时候出现了以下错误:
error: Unable to find vcvarsall.bat
可以通过安装Vs2008来解决,需要勾选64位编译器和工具,之后无脑安装即可。如果你安装的是Vs2010.则还需要做如下修改

1、打开“<python安装目录>Libdistutilsmsvc9compiler.py”
2、找到 toolskey = “VS%0.f0COMNTOOLS” % version,直接修改为 toolskey = “VS100COMNTOOLS”

如果PyTesser你下载安装不了,可以直接下载文章的附件,运行ocr.py即可。

四、依赖包安装介绍

这里添加一下关于依赖包的几种安装方法。

1、单文件模块

直接把文件拷贝到 <python安装目录>/Lib

2、多文件模块,带setup.py

下载模块包,进行解压,进入模块文件夹,执行:
python setup.py install

3、easy_install 方式

先下载ez_setup.py,运行python ez_setup 进行easy_install工具的安装,之后就可以使用easy_install进行安装package了。
easy_install packageName
easy_install package.egg

4、pip 方式

先进行pip工具的安裝:easy_install pip(pip 可以通过easy_install 安裝,而且也会装到 Scripts 文件夹下。)

安裝:pip install PackageName

更新:pip install -U PackageName
移除:pip uninstall PackageName
搜索:pip search PackageName
列表:pip list
帮助:pip help

附件:Code

Last Modified: May 30, 2019
Leave a Comment