python-使用内置库pytesseract实现图片验证码的识别

环境准备:

1、安装Tesseract模块

git文档地址:https://digi.bib.uni-mannheim.de/tesseract/

  百度网盘下载地址:

  链接:https://pan.baidu.com/s/16RoJ19WynWOKI4Zpr0bKzA
  提取码:5hst

下载后右击安装即可

2、配置环境变量:

  编辑 系统变量里面 path,添加下面的安装路径:D:\Program Files\Tesseract-OCR(填写自己的实际安装路径)

3、安装python的第三方库:  

  pip install pillow #一个python的图像处理库,pytesseract依赖
  pip install pytesseract

4、修改pytesseract.py文件,指定tesseract.exe安装路径

编辑pytesseract.py文件(此步骤必须做,否则运行代码时会报错):

tesseract_cmd = ‘D:\Program Files\Tesseract-OCR‘

代码实现

验证码识别方法之一,简单验证码,代码可直接使用

import requestsfrom PIL import Imageimport pytesseract

# 验证码地址url = "http://cloud.xxxx.com/checkCode?0.7337270680854053"response = requests.get(url).content#将图片写入文件with open(‘test.png‘,‘wb‘) as f:    f.write(response)#识别验证码#第一步:通过内置模块PIL打开文件image = Image.open(‘test.png‘)image = image.convert(‘L‘)  #转化为灰度图threshold = 160             #设定的二值化阈值table = []                  #table是设定的一个表,下面的for循环可以理解为一个规则,小于阈值的,就设定为0,大于阈值的,就设定为1for i in range(256):    if i < threshold:        table.append(0)    else:        table.append(1)

image = image.point(table,‘1‘)  #对灰度图进行二值化处理,按照table的规则(也就是上面的for循环)image.show()result = pytesseract.image_to_string(image) #对去噪后的图片进行识别print(‘图片内容为:‘,result)

原文地址:https://www.cnblogs.com/fppblog/p/11804196.html

时间: 2024-10-07 20:17:18

python-使用内置库pytesseract实现图片验证码的识别的相关文章

通过scrapy内置的ImagePipeline下载图片到本地

1.通过scrapy内置的ImagePipeline下载图片到本地 1.通过scrapy内置的ImagePipeline下载图片到本地 1)在settings.py中打开 ITEM_PIPELINES 的注释,在  ITEM_PIPELINES 中加入 ITEM_PIPELINES = { 'spider_first.pipelines.SpiderFirstPipeline': 300, 'scrapy.pipelines.images.ImagesPipeline':5, #后面的数字代表执

RF内置库-----内置库的学习过程总结

前段时间充忙的学习RF,系统学习完之后就开始动手做各种接口的测试,虽然各类的接口测试基本能跑通了,但是重复造车的问题存在太明显.RF本身内置库就已经比较丰富,比如不需要import直接就加载到内存的BuiltIn库,还有需要import的常用模块String,Collections,XML库.在前面的接口测试中,使用最多的就是这几个内置库,接口返回的数据基本都是xml格式的居多,然后自己也重复造车了,为此特地花了几天时间去学习了下内置库,主要还是学了下XML库,以下的分享都是基于XML库. 学习

使用python实现内置map,filter,reduce函数

map函数 # -*- coding: cp936 -*- def myselfmap(f,*args):     def urgymap(f,args):         if args==[]:             return []         else:             return [f(args[0])]+urgymap(f,args[1:])     if list(args)[0]==[]:             #*args有多个参数被传递时返回tuple  

Python的内置方法,abs,all,any,basestring,bin,bool,bytearray,callable,chr,cmp,complex,divmod

Python的内置方法 abs(X):返回一个数的绝对值,X可以是一个整数,长整型,或者浮点数,如果X是一个复数,此方法返回此复数的绝对值(此复数与它的共轭复数的乘积的平方根) >>> abs(3+2j) 3.605551275463989 >>> abs(3-2j) 3.605551275463989 all(iterable):如果迭代器的所有元素都是true,或者空迭代器,则此方法返回true. any(iterable):迭代器只要有一个元素为false,或者空

Python 常用内置函数

abs 取绝对值 print(abs(-1)) #结果1 all(...) all(iterable) -> bool Return True if bool(x) is True for all values x in the iterable. If the iterable is empty, return True. 如果iterable的所有元素不为0.''.False或者iterable为空,all(iterable)返回True,否则返回False:函数等价于: 1 def all

python D13 内置函数

# 1.内置函数# 什么是内置函数? 就是python给你提供的. 拿来直接?的函数, 比如print., input等等. 截?# 到python版本3.6.2 python?共提供了68个内置函数. 他们就是python直接提供给我们的. 有# ?些我们已经?过了. 有?些还没有?过. 还有?些需要学完了?向对象才能继续学习的. 今# 天我们就认识?下python的内置函数. # 不熟悉的函数:# eval() 执?字符串类型的代码. 并返回最终结果# print(eval("2+2&quo

Python 集合内置函数大全(非常全!)

Python集合内置函数操作大全 集合(s).方法名 等价符号 方法说明 s.issubset(t) s <= t 子集测试(允许不严格意义上的子集):s 中所有的元素都是 t 的成员   s < t 子集测试(严格意义上):s != t 而且 s 中所有的元素都是 t 的成员 s.issuperset(t) s >= t 超集测试(允许不严格意义上的超集):t 中所有的元素都是 s 的成员   s > t 超集测试(严格意义上):s != t 而且 t 中所有的元素都是 s 的成

3.24 python 常用内置对象 : 运算符、表达式、内置对象(没完待续)

---恢复内容开始--- 对象类型 类型名称 示例 简要说明 数字 int,float,complex 1234,3.14,1.3e5,3+4j 数字大小没有限制 字符串 str 'swd',"I'am a student",'''Python''' 使用单引号.双引号.三引号作为定界符 字节符 bytes b‘hello world’ 以字母b引导,可以使用单.双.三引号作为定界符 列表 list [1,2,3],['b','a',1,2,3] 所有元素放在一对方括号中,元素之间使用

python常用内置函数学习(持续更新...)

python常用内置函数学习 一.python常用内置函数有哪些 dir() 二.每个内置函数的作用及具体使用 1.dir()不带参数时返回当前范围内(全局.局部)的变量.方法和定义的类型列表:   带参数A时返回参数的属性.方法的列表,如何该参数A对象有__dir__(),该方法被调用,如果不含有该方法,该方法不会报错,而是尽可能多的收集参数对象A的信息   实例: 不带参数,在分别在文件全局调用和在函数中局部调用dir()   带参数   原文地址:https://www.cnblogs.c