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 相关文章推荐
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
Dec 04 Python
浅析python 中__name__ = '__main__' 的作用
Jul 05 Python
Python实现telnet服务器的方法
Jul 10 Python
Python 使用SMTP发送邮件的代码小结
Sep 21 Python
深入理解Python分布式爬虫原理
Nov 23 Python
python MySQLdb使用教程详解
Mar 20 Python
基于Python实现定时自动给微信好友发送天气预报
Oct 25 Python
Python3爬虫使用Fidder实现APP爬取示例
Nov 27 Python
对Python 多线程统计所有csv文件的行数方法详解
Feb 12 Python
Python测试线程应用程序过程解析
Dec 31 Python
Python Unittest原理及基本使用方法
Nov 06 Python
python中time、datetime模块的使用
Dec 14 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网站提速三大“软”招
2006/10/09 PHP
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
php mysql数据库操作类(实例讲解)
2017/08/06 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
Code:loadScript( )加载js的功能函数
2007/02/02 Javascript
用javascript获取textarea中的光标位置
2008/05/06 Javascript
使用js画图之饼图
2015/01/12 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
Windows下快速搭建NodeJS本地服务器的步骤
2017/08/09 NodeJs
JS中‘hello’与new String(‘hello’)引出的问题详解
2018/08/14 Javascript
对Vue.js之事件的绑定(v-on: 或者 @ )详解
2018/09/15 Javascript
Vue项目安装插件并保存
2019/01/28 Javascript
Layui 数据表格批量删除和多条件搜索的实例
2019/09/04 Javascript
python字符串替换示例
2014/04/24 Python
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
2014/06/25 Python
python实现12306抢票及自动邮件发送提醒付款功能
2018/03/08 Python
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
django搭建项目配置环境和创建表过程详解
2019/07/22 Python
Django框架安装方法图文详解
2019/11/04 Python
python3 动态模块导入与全局变量使用实例
2019/12/22 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
2020/01/10 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
Django+python服务器部署与环境部署教程详解
2020/03/30 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
video.js支持m3u8格式直播的实现示例
2020/05/20 HTML / CSS
猫途鹰英国网站:TripAdvisor英国(旅游社区和旅游评论)
2016/08/30 全球购物
欧洲最大的球衣网上商店:Kitbag
2017/11/11 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
SQL面试题
2013/12/09 面试题
工作能力自我评价2015
2015/03/05 职场文书
Python+腾讯云服务器实现每日自动健康打卡
2021/12/06 Python