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冒泡排序算法的实现代码
Nov 21 Python
python操作mysql数据库
Mar 05 Python
Python 正则表达式实现计算器功能
Apr 29 Python
Python实现的弹球小游戏示例
Aug 01 Python
Python自动化运维_文件内容差异对比分析
Dec 13 Python
Python  unittest单元测试框架的使用
Sep 08 Python
Python unittest单元测试框架总结
Sep 08 Python
使用selenium和pyquery爬取京东商品列表过程解析
Aug 15 Python
python爬虫模拟浏览器访问-User-Agent过程解析
Dec 28 Python
Django中modelform组件实例用法总结
Feb 10 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
Feb 25 Python
Python操作Elasticsearch处理timeout超时
Jul 17 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
深入了解php4(2)--重访过去
2006/10/09 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
Yii2使用$this-&gt;context获取当前的Module、Controller(控制器)、Action等
2017/03/29 PHP
PHP小白必须要知道的php基础知识(超实用)
2017/10/10 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
Js基础学习资料
2010/11/23 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
基于PHP和Mysql相结合使用jqGrid读取数据并显示
2015/12/02 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
详解js中==与===的区别
2017/01/08 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
使用Node.js搭建静态资源服务详细教程
2017/08/02 Javascript
基于Node.js模板引擎教程-jade速学与实战1
2017/09/17 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
vue-router命名路由和编程式路由传参讲解
2019/01/19 Javascript
[02:04]2020年夜魇暗潮预告片
2020/10/30 DOTA
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
Python logging日志模块 配置文件方式
2020/07/12 Python
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
英语专业毕业生自荐信范文
2013/12/31 职场文书
大学生求职自我评价
2014/01/16 职场文书
2014购房个人委托书范本
2014/10/12 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
单位考核聘任报告
2015/03/02 职场文书
教师教育心得体会
2016/01/19 职场文书
HTTP中的Content-type详解
2022/01/18 HTML / CSS