python实现验证码识别功能


Posted in Python onJune 07, 2018

本文实例为大家分享了python实现验证码识别的具体代码,供大家参考,具体内容如下

1.通过二值化处理去掉干扰线

2.对黑白图片进行降噪,去掉那些单独的黑色像素点

3.消除边框上附着的黑色像素点

4.识别图像中的文字,去掉空格与'.'

python代码:

from PIL import Image 
from aip import AipOcr 
 
file='1-1-7' 
 
# 二值化处理,转化为黑白图片 
def two_value(): 
 for i in range(1, 5): 
 # 打开文件夹中的图片 
 image = Image.open(file+'.jpg') 
 # 灰度图 
 lim = image.convert('L') 
 # 灰度阈值设为165,低于这个值的点全部填白色 
 threshold = 165 
 table = [] 
 
 for j in range(256): 
  if j < threshold: 
  table.append(0) 
  else: 
  table.append(1) 
 
 bim = lim.point(table, '1') 
 bim.save(file+'.1.jpg') 
 
two_value() 
 
# 去除干扰线 
im = Image.open(file+'.1.jpg') 
# 图像二值化 
data = im.getdata() 
w, h = im.size 
black_point = 0 
 
for x in range(1, w - 1): 
 for y in range(1, h - 1): 
 mid_pixel = data[w * y + x] # 中央像素点像素值 
 if mid_pixel < 50: # 找出上下左右四个方向像素点像素值 
  top_pixel = data[w * (y - 1) + x] 
  left_pixel = data[w * y + (x - 1)] 
  down_pixel = data[w * (y + 1) + x] 
  right_pixel = data[w * y + (x + 1)] 
 
  # 判断上下左右的黑色像素点总个数 
  if top_pixel < 5: #小于5比小于10更精确 
  black_point += 1 
  if left_pixel < 5: 
  black_point += 1 
  if down_pixel < 5: 
  black_point += 1 
  if right_pixel < 5: 
  black_point += 1 
  if black_point < 1: 
  im.putpixel((x, y), 255) 
  # print(black_point) 
  black_point = 0 
 
im.save(file+'.2.jpg') 
 
# 去除干扰线 
im = Image.open(file+'.2.jpg') 
# 图像二值化 
data = im.getdata() 
w, h = im.size 
black_point = 0 
 
for x in range(1, w - 1): 
 for y in range(1, h - 1): 
 if x < 2 or y < 2: 
  im.putpixel((x - 1, y - 1), 255) 
 if x > w - 3 or y > h - 3: 
  im.putpixel((x + 1, y + 1), 255) 
 
im.save(file+'.3.jpg') 
 
# 定义常量 
APP_ID = '11352343' 
API_KEY = 'Nd5Z1NkGoLDvHwBnD2bFLpCE' 
SECRET_KEY = 'A9FsnnPj1Ys2Gof70SNgYo23hKOIK8Os' 
 
# 初始化AipFace对象 
aipOcr = AipOcr(APP_ID, API_KEY, SECRET_KEY) 
 
# 读取图片 
filePath=file+'.3.jpg' 
def get_file_content(filePath): 
 with open(filePath, 'rb') as fp: 
 return fp.read() 
 
# 定义参数变量 
options = { 
 'detect_direction': 'true', 
 'language_type': 'CHN_ENG', 
} 
 
# 调用通用文字识别接口 
result = aipOcr.basicGeneral(get_file_content(filePath), options) 
print(result) 
words_result=result['words_result'] 
for i in range(len(words_result)): 
 print(words_result[i]['words'].replace(' ','').replace('.','')) #去掉可能被识别的空格与.

python实现验证码识别功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python数组条件过滤filter函数使用示例
Jul 22 Python
Python中exit、return、sys.exit()等使用实例和区别
May 28 Python
python创建列表并给列表赋初始值的方法
Jul 28 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
Jul 11 Python
python高阶爬虫实战分析
Jul 29 Python
python实现简单tftp(基于udp协议)
Jul 30 Python
Python wxPython库使用wx.ListBox创建列表框示例
Sep 03 Python
python用plt画图时,cmp设置方法
Dec 13 Python
python单线程下实现多个socket并发过程详解
Jul 27 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
Feb 13 Python
基于python爬取有道翻译过程图解
Mar 31 Python
python爬取某网站原图作为壁纸
Jun 02 Python
通过Pandas读取大文件的实例
Jun 07 #Python
Pandas:DataFrame对象的基础操作方法
Jun 07 #Python
Python中偏函数用法示例
Jun 07 #Python
网红编程语言Python将纳入高考你怎么看?
Jun 07 #Python
python指定写入文件时的编码格式方法
Jun 07 #Python
Python实现的爬虫刷回复功能示例
Jun 07 #Python
异步任务队列Celery在Django中的使用方法
Jun 07 #Python
You might like
PHP中改变图片的尺寸大小的代码
2011/07/17 PHP
四个常见html网页乱码问题及解决办法
2015/09/08 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
js 自动播放的实例代码
2013/11/19 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
jquery仿搜索自动联想功能代码
2014/05/23 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
详解AngularJS中自定义过滤器
2015/12/28 Javascript
基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)
2016/01/05 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
jQuery查找dom的几种方法效率详解
2017/05/17 jQuery
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
2018/02/28 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
JS使用setInterval计时器实现挑战10秒
2020/11/08 Javascript
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
Python内存管理方式和垃圾回收算法解析
2017/11/11 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
2020/01/04 Python
对python中各个response的使用说明
2020/03/28 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
2020/06/02 Python
世界上最大的皮肤科医生拥有和经营的美容网站:LovelySkin
2021/01/03 全球购物
2014大四本科生自我鉴定总结
2014/10/04 职场文书
会计师事务所实习证明
2014/11/16 职场文书
计算机教师工作总结
2015/08/13 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android