前言:

春节期间,无法全身心投入地去写爬虫,那就玩玩验证码吧,应该比较有趣!

首次接触验证码识别,用pytesser接触一下最简单的验证码先,代码参照:使用python以及工具包进行简单的验证码识别。具体细节可以参见原文,里面安装和报错处理没有详细记录,我在此处主要记录一下自己的安装及处理过程。

效果:

可识别以下类型的验证码:

正文:

代码:

# encoding=utf-8

from PIL import Image

from pytesser import *

img = Image.open('验证码.jpg')

img_grey = img.convert('L')

threshold = 140

table = []

for i in range(256):

if i < threshold:

table.append(0)

else:

table.append(1)

img_out = img_grey.point(table, '1')

text = image_to_string(img_grey) # 将图片转成字符串

print text

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

安装包:

需要安装的包主要有两个: PIL 和 pytesser 。

我的环境:64位win8系统、python2.7

PIL模块的安装:

PIL 全称 “Python Imaging Library”。

下载地址:传送门

我下载了

运行报错:Python version 2.7 required, which was not found in the registry.

网上找出原因:这个 PIL 安装资源是给32位操作系统,32位和64位操作系统下的python在注册表中的路径是不一样的:

64位检查注册表的位置是: HKLM|HKCU\SOFTWARE\

32位检查注册表的位置是: HKLM|HKCU\SOFTWARE\wow6432node\

所以在64位系统中自然检查不出有Python。

解决方案:

官方没有提供64位的PIL库,但非官方有:传送门。

下载里面的pillow库:

然后在命令行安装该模块:

pip install G:/For_Life/360download/Pillow-3.1.1-cp27-none-win_amd64.whl

注意:在 pillow 下载页中有一行 “Use ‘from PIL import Image’ instead of ‘import Image’” ,所以一般方法安装的 PIL 要导入 Image 模块使用 “import Image” ,而此方法安装的 PIL 要使用 “from PIL import Image” 。

更多请见:Windows安装Python图像处理库:PIL模块。

pytesser模块的安装:

下载地址:传送门。(此网址有时候会加载失败,我将自己下载的放在微盘上了:传送门 密码:DPHE)

下载后得到 “pytesser_v0.0.1.zip”,是一个压缩文件,使用方法:

1、在 “D:\For_Software\others\Python_PyDev\Python\Lib\site-packages” 路径下新建一个文件夹,命名 “pytesser” 。把 “pytesser_v0.0.1.zip” 里的文件解压到该目录:

2、将 “pytesser.py” 改名为 “__init__.py”。

3、打开 “__init__.py” 文件,将 “tesseract_exe_name” 变量的值改为 “‘D:/For_Software/others/Python_PyDev/Python/Lib/site-packages/pytesser/tesseract’”(原值为 “‘tesseract’”)。

4、pytesser 模块依赖于 PIL 模块,如果是按照上面的方法安装 PIL 的话,需要把 “init.py” 文件里的 “import Image” 改成 “from PIL import Image” 。

(注意以上的路径要改成自己的路径,不要原搬照抄,应该不会这么笨吧)

如果报错:WindowsError: [Error 2]

可能的原因:python找不到 “tesseract.exe”,执行步骤3给python指定一个绝对路径就可以了。

如果报错:ImportError: No module named Image

可能的原因:在 pytesser 中的 “__init__.py” ,导入 Image 的方式不对,见步骤4。

总结:

其实这只是处理最简单的验证码而已,代码也很简单,主要做两个工作而已。第一个是将彩色图片转成灰度图片并除噪,第二个是使用 pytesser.image_to_string() 将图片中的字符提取出来。

处理的图片也是非常有限的图片上的数字或字母必须没有变形(即使是没有变形的情况下还会出现数字跟字母混淆的情况),验证码的背景不能太复杂,允许字体加上一些颜色。

这么简单的验证码估计很少见,不常用。所以这么简单的处理方法,我们看一看也就可以了,如果实际使用的话技术还有待深入。

python安装报错类型_Python处理验证码第一篇(pytesser初探及报错处理)相关推荐

  1. 88是python语言的整数类型_Python开发【第二篇】:Python基本数据类型

    class str(basestring): """str(object='') ->stringReturn a nice string representati ...

  2. python神奇的小海龟_Python笔记_第一篇_面向过程_第一部分_8.画图工具(小海龟turtle)...

    turtle 是一个简单的绘图工具. 提供一个小海龟,可以把它理解为一个机器人,只能听懂有限的命令,且绘图窗口的原点(0,0)在中间,默认海龟的方向是右侧 海龟的命令包括三类:运动命令.笔画控制命令. ...

  3. Python中的TCP的客户端UDP学习----第一篇博客

    Python中的TCP的客户端&UDP学习--第一篇博客 PS: 每日的怼人句子"我真想把我的脑子放到你的身体里,让你感受一下智慧的光芒" 先说UDP流程 发送: 创建套接 ...

  4. 如何查看python安装了哪些模块_Python模块如何安装 并确认模块已经安装好?

    看自己有没有安装好,最简单的办法在可以再控制台下: C:\Users\sony>python Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC ...

  5. python的元祖类型_python元组类型

    元组类型简介 使用括号包围的数据结构是元组(tuple).例如: >>> (1,2,3) (1, 2, 3) >>> T = (1,2,3,) >>&g ...

  6. python安装lxml库出错_python安装lxml出错的解决方法

    python安装lxml出错的解决方法 发布时间:2020-08-07 09:44:14 来源:亿速云 阅读:71 作者:小新 这篇文章给大家分享的是有关python安装lxml出错的解决方法的内容. ...

  7. python安装第三方库方法_Python安装第三方库的4种方法

    Python安装第三方库的4种方法 1.使用pip 大多数库都可以通过pip安装,安装方法为,在命令行窗口输入:pip install libName libName     -   为库名 某些库通 ...

  8. python安装后怎么打开_python软件怎么打开

    不能用.就不能算是安装成功.肯定是出错了.建议重新下载安装看看.1.选择installforallusers,然后一路点"Next",就会将python2.7.11默认安装至C盘下 ...

  9. python安装不上怎么办_python依赖安装失败怎么办

    Python是一种跨平台的计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断 更新和语言新功能的添加,越多被用于独立的.大型项目的开发.Pyt ...

最新文章

  1. linux文件系统的移植-制作JFFS2文件系统
  2. 【机器学习】 - 数据预处理之数据归一化(标准化)与实战分析,正则化
  3. 这所高校“起高楼”,绊倒两任“一把手”
  4. android 获取相机拍照保存到sqlite_OPPO助力谷歌CameraX计划,造福第三方相机应用用户...
  5. 上项线体表位置_体表定位
  6. CentOS7救援模式以及救援模式的网络配置
  7. 微软全力推广Silverlight 挑战Flash垄断地位
  8. 想测一下接口的并发数?手把手教你!
  9. js 正则中冒号代表什么_是否还在疑惑Vue.js中组件的data为什么是函数类型而不是对象类型...
  10. 用PHP写距离圣诞节还有多久,距离圣诞节还有多少天
  11. Java语句详解(图解java语句概念、快速掌握java基础知识点)——Java基础系列
  12. Effective minidump
  13. socket服务器主动下发消息,socket服务器主动发送消息给客户端
  14. 求mn的最大公约数和最小公倍数c语言,c语言如何求最大公约数和最小公倍数
  15. S3C64xx设备树支持
  16. 2021年刻骨铭心的总结
  17. 如何做到3个月吸粉10多万
  18. 代码文本对比-前端工具
  19. 初中计算机课师徒结对活动记录,师徒结对活动记录表10张(师傅尚积东徒弟丁明路)(备课6节听课4节).doc...
  20. pycharm软件中去掉竖线的方法

热门文章

  1. android 获取图片主色调
  2. 微信公众号开发 重要 access_token {errcode:40164,errmsg:invalid ip 114.221.159.11, not in whitelist hint:
  3. java sql 结果_Java中的SQL结果集
  4. C# CSV文件读取(带换行单元格中内容处理)
  5. 【Mail】telnet收发邮件过程
  6. sqoop操作之Oracle导入到HDFS
  7. java轻松实现无锁队列
  8. SQL Server-聚焦APPLY运算符(二十七)
  9. hdu 2222 Keywords Search(ac自动机)
  10. Hibernate一对一关联------主键关联(亲测成功)