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垃圾回收机制
Feb 12 Python
解决Python出现_warn_unsafe_extraction问题的方法
Mar 24 Python
python的paramiko模块实现远程控制和传输示例
Oct 13 Python
numpy排序与集合运算用法示例
Dec 15 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
Jan 17 Python
python爬取哈尔滨天气信息
Jul 14 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
Apr 26 Python
python安装numpy和pandas的方法步骤
May 27 Python
使用Python中的reduce()函数求积的实例
Jun 28 Python
详解Python time库的使用
Oct 10 Python
详解Scrapy Redis入门实战
Nov 18 Python
教你如何使用Python开发一个钉钉群应答机器人
Jun 21 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数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
2011/11/02 PHP
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
2013/08/06 PHP
php防止伪造数据从地址栏URL提交的方法
2014/08/24 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
javascript实现的网页局布刷新效果
2008/12/01 Javascript
js弹出确认是否删除对话框
2014/03/27 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
简介AngularJS的HTML DOM支持情况
2015/06/17 Javascript
JS动态给对象添加属性和值的实现方法
2016/10/21 Javascript
SelecT下拉框选中和取值的解决方法
2016/11/22 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
2017/01/13 Javascript
jquery实现input框获取焦点的简单实例
2017/01/26 Javascript
Node.js+Express+MySql实现用户登录注册功能
2017/07/10 Javascript
详解tween.js的使用教程
2017/09/14 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
VUE前后端学习tab写法实例
2019/08/06 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
[06:07]辉夜杯现场观众互动 “比谁远送显示器”
2015/12/26 DOTA
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
python 把列表转化为字符串的方法
2018/10/23 Python
浅谈Python的list中的选取范围
2018/11/12 Python
TensorFlow梯度求解tf.gradients实例
2020/02/04 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
python3实现名片管理系统(控制台版)
2020/11/29 Python
python tqdm库的使用
2020/11/30 Python
会计专业应届生求职信
2013/11/24 职场文书
校园之声广播稿
2014/01/31 职场文书
放飞梦想演讲稿
2014/05/05 职场文书
珍惜资源的建议书
2014/08/26 职场文书
私人房屋买卖协议书
2014/10/04 职场文书
先进工作者申报材料
2014/12/23 职场文书
大学生创业计划书
2019/06/24 职场文书
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA