一直想研究验证码的识别技术,这个晚上终于闲下来,来好好研究下python验证码的识别!
首先我们需要找一个能够支持识别图像文字的python库文件,这里我使用的是pytesser,还有一款叫pytesseract,其实原理大致相同,利用OCR的识别技术,将图像文字读出来,然后再输出。
下面开始讲pytesser的安装~
首先我们需要安装PIL库,这是一个支持图片处理的python库,用pip命令即可~
1
|
pip install PIL
|
安装完PIL库后我们来进行pytesser的安装
这个官方代码在谷歌的代码库中,由于需要翻墙,这时候我们可以选择到csdn中去下载,传送门(还算良心,没要积分。。。)
下载之后我们将pytesser_v0.0.1.zip解压到pytesser的文件夹,这个文件夹是自己创立的,在后续有用~
之后我们将这个pytesser文件夹拖到C:Python27Libsite-packages目录下,这里安装目录因人而异!接下来我们进入这个文件夹将pytesser.py修改为__init__.py
这是为了在我们import时程序会首先调用这个初始化函数,也就为我们的调用及使用提供便利,然后我们需要修改这个__init__.py文件
1.将一开始的import Image修改为from PIL import Image
2.将tesseract_exe_name = ‘tesseract’修改为tesseract_exe_name = ‘C:\Python27\Lib\site-packages\pytesser\tesseract’
这里我们下载的pytesser文件夹中自带tesseract,注意这里我们使用双斜杠
到这里我们的安装配置就已经完成
下面我们开始我们的图像识别之旅(验证码识别)之旅~
我们先来分析下pytesser提供的函数
image_to_string和image_file_to_string这两个函数,这两个函数前一个是将调用了一次PIL库中的Image函数,而后者则是直接在函数里就调用了,其实本质是一样的,下面附代码:
1
2
3
4
5
6
7
8
|
#-*-coding:utf-8-*-
from pytesser import *
im=Image.open(‘fnord.tif’)
imtext=image_to_string(im)
print imtext
text=image_file_to_string(‘fnord.tif’)
print text
|
这里fnord.tif是自带的测试图像,经过编译的确可以识别,这里我需要强调的一点是import函数,这个出现了一个问题困扰了我很久,原先看网上的教程都是直接import pytesser,但是无论如何都不能调用其中的函数,在经过多次尝试,我写成这样,发现其中的函数就可以正常调用了~
后续我会去采集一些网站的验证码,并尝试提高验证码的识别效率,好像最终方法就是机器学习。。。噩梦般的开始啊。。。
偶然发现的一个CTF网站,好像是燕京理工学院的一个小比赛,题目不是很多,也不是很难,适合新人入门CTF,以下附上这个小型CTF的wp,题目地址:传送门 1.签到题 签到题总是很简单,可是这种简单程度第一次见。。。连动都不动的,直接告诉答案。。 …
请登录后发表评论
注册