您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

【技术】python+PIL+pytesser处理验证码环境搭建

5b51 2022/1/14 8:25:20 python 字数 9234 阅读 942 来源 www.jb51.cc/python

======================================= 【提示】本文中pyteser适用于python2.X。如果用的是pyhon3.X,需要下载pytesser3.

概述

=======================================

提示】本文中pyteser适用于python2.X。如果用的是pyhon3.X,需要下载PyTesser3.

一个坑: PyTesser3需要搭配tesseract-ocr使用,和下文操作不同。

第二个坑:  PyTesser3安装后居然需要你手动更改一个地址:__init__.py文件第11行的tesseract地址。

第三个坑:我在 下载tesseract-ocr,以为能使用。但是执行程序时候报错:[WinError 5] 拒绝访问。

我不知道哪里的问题,想来想去可能是windows问题,于是下载了windows版本的tesseract(用exe安装):。依然报错:[WinError 5] 拒绝访问。

综上,本问题本人没解决。能不用windows就别用windows。

???????=======================================

<h1 id="前言">前言:

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

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

<h1 id="效果"><a name="t1">效果

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

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

<h1 id="正文"><a name="t2">正文:

<h2 id="代码"><a name="t3">代码

<pre class="has">
# 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

<h2 id="安装包"><a name="t4">安装包:

需要安装的包主要有两个: PIL 和 pytesser 。 
我的环境:64位win8系统、python2.7

<h3 id="pil模块的安装"><a name="t5">PIL模块的安装:

PIL 全称 “ Imaging Library”。 
下载地址:

我下载了

这里写图片描述

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

Python version 2.7 required,which was not found in the registry.

网上找出原因:这个 PIL 安装资源是给32位@L_301_5@。 
下载里面的pillow库: 

64位PIL

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

<h3 id="pytesser模块的安装"><a name="t6">PyTesser模块的安装:

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

下载后得到 “PyTesser_v0.0.1.zip”,是一个压缩文件,使用方法: 
1、在 “D:\For_Software\others\Python_PyDev\Python\Lib\site-packages” 路径下新建一个文件夹,命名 “PyTesser” 。把 “PyTesser_v0.0.1.zip” 里的文件解压到该目录: 

pytesser模块的安装

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] 

pytesser WindowsError:[Error 2]

如果报错:ImportError: No module named Image 

pytesser ImportError: No module named Image

<h1 id="总结"><a name="t7">总结:

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

处理的图片也是非常有限的图片上的数字或字母必须没有变形(即使是没有变形的情况下还会出现数字跟字母混淆的情况),验证码的背景不能太复杂,允许字体加上一些颜色。 
这么简单的验证码估计很少见,不常用。所以这么简单的处理方法,我们看一看也就可以了,如果实际使用的话技术还有待深入。

转自: 

总结

以上是编程之家为你收集整理的【技术】python+PIL+pytesser处理验证码环境搭建全部内容,希望文章能够帮你解决【技术】python+PIL+pytesser处理验证码环境搭建所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶