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 26 Python
详解Python 数据库 (sqlite3)应用
Dec 07 Python
python实现黑客字幕雨效果
Jun 21 Python
浅谈Python的条件判断语句if/else语句
Mar 21 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
Jun 13 Python
python 随机生成10位数密码的实现代码
Jun 27 Python
Python中断多重循环的思路总结
Oct 04 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
Dec 04 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
Feb 11 Python
python实现图像拼接
Mar 05 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
May 22 Python
Python 按比例获取样本数据或执行任务的实现代码
Dec 03 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
改造一台复古桌面收音机
2021/03/02 无线电
用PHP的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
php url路由入门实例
2014/04/23 PHP
用js+xml自动生成表格的东西
2006/12/21 Javascript
一个无限级XML绑定跨框架菜单(For IE)
2007/01/27 Javascript
Javascript调用C#代码
2011/01/17 Javascript
Jquery异步请求数据实例代码
2011/12/28 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
解析Jquery的LigerUI如何实现文件上传
2013/07/09 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
2015/04/21 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
JavaScript基础语法之js表达式
2016/06/07 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
详解如何在angular2中获取节点
2017/11/23 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
Python中subprocess模块用法实例详解
2015/05/20 Python
不可错过的十本Python好书
2017/07/06 Python
使用python生成杨辉三角形的示例代码
2018/08/29 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
解决os.path.isdir() 判断文件夹却返回false的问题
2019/11/29 Python
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
C和C++经典笔试题附答案解析
2014/08/18 面试题
直接有效的自我评价
2014/01/11 职场文书
计算机求职信
2014/07/02 职场文书
租房安全协议书
2014/08/20 职场文书
2016大一新生军训心得体会
2016/01/11 职场文书
mysql事务隔离级别详情
2021/10/24 MySQL
python基础之类方法和静态方法
2021/10/24 Python
Python借助with语句实现代码段只执行有限次
2022/03/23 Python