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

前言:

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

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

效果:

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

f69a87c64c43344b1b137c8e04aef32f.png 

6f1b45dc8ab9f8ecc8f4d4555c770ffe.png 

fc2e74e1d9109f75e95427063b8cb8b2.png 

52bc3a1b48be5ecb48b419daf47418c7.png

正文:

代码:

# 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”。

下载地址:传送门

我下载了

54d956712c38b7079104dc7fc7b579b5.png

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

5753a8d81a4a7a4585dcc76383dad314.png

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

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

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

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

解决方案:

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

下载里面的pillow库:

f63acf3efd11015191d93bd16b68e168.png

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

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” 里的文件解压到该目录:

2f795234b4cc12b69bfec44520c46dbf.png

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]

a5f346c83345e1f58d91d7c637fd9107.png 

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

如果报错:ImportError: No module named Image

fe3211c5829964a95f13500f2c63aa41.png 

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

总结:

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431083.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

debian添加删除用户

debian添加删除用户增加普通用户命令&#xff1a;#adduser abc#passwd abc#exit用abc登录/etc/passwd中保存了用户信息LINUX创建用户的命令useradd -g test -d /home/test1 -s /etc/bash -m test1注解&#xff1a;-g 所属组 -d 家目录 -s 所用的SHELL删除用户命令userdel -r te…

bin文件怎么转换成文本文档_怎么把pdf文件转换成word文档?这样转很简单

在日常的学习、工作生活中&#xff0c;小伙伴们总少不了要对文件格式进行转换操作&#xff0c;例如把pdf文件转换成word文档。对于职场老手来说&#xff0c;这当然不算一个难度操作&#xff0c;甚至还很简单。但对于职场新人而言&#xff0c;找不对方法&#xff0c;可能操作起来…

python私有属性怎么定义_Python中定义私有属性的方法是()。

【判断题】请假条带有请求的性质,所以一般来说篇幅要尽量长一些,以示郑重;更多要用煽情性语句,以打动对方。( )【单选题】关于类和对象的关系,下列描述正确的是()。【选择】Трудоспособный возраст в России у женщин считается _…

GIT撤销相关命令

刚开始正式使用git不久&#xff0c;很多使用方法不是很了解&#xff0c;提交文件什么的总是提心吊胆的&#xff0c;生怕项目代码给自己弄乱&#xff0c;一开始为了保险还傻傻的copy一份放起来再做git提交。 今天学习了git撤销的一些命令。发现git作为一个版本控制系统&#xff…

delphi if多个条件_Python从入门到精通——一文读懂if语句用法

1、if语句概述if语句能够进行条件测试&#xff0c;并依据一定的条件进行具体的操作2、if语句条件测试if语句的核心是一个值为True或False的表达式&#xff0c;这种表达式称为条件测试。Python根据条件测试的值为True或False来决定是否执行if语句中的代码。2.1 条件测试是否相等…

mysql 实时性能_Mysql 实时查看性能

今天陪DBA 加班 又学会个新玩具mysqladmin -P3306 -uasd -pasdasd -hmysql.com -r -i 1 ext |\awk -F"|" \"BEGIN{ count0; }"\{ if($2 ~ /Variable_name/ && ((count)%20 1)){\print "----------|---------|--- MySQL Command Status --|--…

计算机网络——零碎知识点

1. T1载波&#xff1a;是专用电话连接、时分多路数字传输设施&#xff0c;其支持的数据传输速度为 1.544M 比特/秒。T1 线路实际上是由24个单独的通道组成的&#xff0c;每个通道支持 56K 比特/秒的传输速度。大多数的电话公司只允许用户购买这些被称为部分 T1 接入的单独通道的…

jquery交换数组元素位置_跟我一起学jQuery——第一集

《锋利的JQuery》第二版阅读笔记-第一章jQuery对象和DOM对象想学习jQuery&#xff0c;首先要学会区分jQuery对象和DOM对象。1)jQuery对象是用jQuery类库的选择器获得的对象。2)DOM对象是用传统(javascript)获得的对象。举个栗子//DOM对象var domO document.getElementById(&qu…

maya怎么贴膜_maya怎么渲染成白膜?

回答&#xff1a;打开render setting里设置你的动画格式avi或tga等等avi是视频 tga一般为单帧的图像序列然后设置从第几帧开始渲染 start frame 和渲染到第几帧结束 end frame;然后再选择你需要渲染的摄影机如果你有自己创建的摄影机的话&#xff01;否则则使用默认的透视图摄影…

Gitlab的develop角色的人没有权限无法提交的问题解决方案

问题 事情是这样的&#xff0c;最近跟几位同事搞一些东西&#xff0c;打算在Gitlab上建一个仓库&#xff0c;然后协同开发。 我建好仓库&#xff0c;将其他几位同事添加进来&#xff0c;角色分配为Develop。 之后提交初始代码到master分支后&#xff0c;他们用sourceTree拉取代…

macbook不能进系统 备份数据_不基于备份和表,生产系统数据误删就能完全恢复?!...

作者介绍刘宝珍&#xff0c;架构师&#xff0c;目前就职于大型资产管理公司的科技子公司&#xff0c;拥有多年的大型私有云的规划和设计工作经验&#xff0c;熟悉软件的开发流程&#xff0c;目前醉心于研究基于DDD和敏捷的软件的开发模式&#xff0c;对分布式架构有深入的理解&…

padding 后尺寸变化 设置_padding margin border 和元素大小

元素占用宽度 元素宽度paddingbordermargin注意margin只是隔开元素&#xff0c;不会使得元素变大&#xff0c;而padding会使得元素变大&#xff0c;也就是说元素真实宽度元素宽度paddingborderborder 在元素的外层一、关于Padding1、设置对象四边的内边距。默认值是0。2、如果…

新加入“扫码阅读”功能

今天看到一个用户发了个话题&#xff0c;“PC端的URL在移动端上打开要一个个敲好麻烦&#xff0c;有什么好的办法&#xff1f;”。 确实现在已经是移动时代了&#xff0c;在移动设备上阅读慢慢会成为主流&#xff0c;网站如果没有便捷的方式让用户在移动设备阅读的话还真有点落…

arduino代码_arduino智能小车项目——01、配件介绍及代码部分教程

各位小伙伴大家好&#xff1a;本期我们开始制作智能小车项目&#xff0c;这因该是资源包里面难度相对较大的项目。所以我们从易到难把项目进行分解&#xff0c;先从实现较为简单的功能开始。本期我们的目标是实现小车的自主运动&#xff0c;代码部分也相对比较简单&#xff0c;…

python+mysql库+json_用python写爬虫-5.1json用pandas入mysql库

pandas是一个数据处理模块&#xff0c;前面也已经提到了好些&#xff0c;用python写爬虫--4.5pandas存入excel.这次来统一说一说&#xff0c;使用感想。pandas主要是Seriers和Dataframe&#xff0c;Seriers相当于list&#xff0c;dataframe相当于excel表格&#xff0c;有行也有…

使用jquery时一些小技巧的总结

使用 each 遍历 var nodes Ztree.getCheckedNodes(true); //获取所有勾选的节点 $.each(nodes,function(i,value){alert(value.name); }) js对象的声明和二维数组的创建 var ids_str {};$.each(nodes,function(i,value){ids_str[i] {}; //这一步不可或缺&#xff0c;声明…

python爬虫网络请求超时_Python网络爬虫编写5-使用代理,处理异常和超时

# codingutf-8 ”’ 从同一个地址发出的http请求过多过频繁&#xff0c;都可能被网站给封掉 要解决这个问题&#xff0c;就需要不停地更换代理 同时&#xff0c;如果在用urllib2访问url的时候出现错误 可以用python的异常处理机制获取错误内容 最后&#xff0c;urlopen可以指定…

uilabel 自行撑开高度_IOS UILabel自適應里面的文字,自動調整寬度和高度的

UILabel *label [[UILabel alloc] initWithFrame:CGRectMake(0,0,0,0)];//后面還會重新設置其size。[label setNumberOfLines:0];NSString *s "string......";UIFont *font [UIFont fontWithName:"Arial" size:12];CGSize size CGSizeMake(320,2000);C…

pdf温度记录仪开发_蔬菜、鲜果、奶制品冷链温度监控系统监控食品让客户放心...

冷链温度监控系统对于蔬菜鲜果奶制品的冷藏&#xff0c;不仅有助于减慢它们的腐坏速度&#xff0c;保持新鲜&#xff0c;而且对全国物品的运输和合理配置有极大的影响。选择GPS冷链温度监控食品传输过程让客户不再担心质量问题&#xff0c;人们也吃的放心。在多年自主开发GPS物…

基于MLlib的机器学习--协同过滤与推荐

《Spark快速大数据分析》11.5.4 协同过滤与推荐协同过滤是一种根据用户对各种产品的交互与评分来推荐新产品的推荐系统技术。协同过滤引入的地方就在于它只需要输入一系列用户/产品的交互记录&#xff1b;无论是显式的交互(例如在购物网站上进行评分)还是隐式的(例如用户访问了…