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的Flask框架的简介和安装方法
Nov 13 Python
Python heapq使用详解及实例代码
Jan 25 Python
利用python的socket发送http(s)请求方法示例
May 07 Python
python实现点对点聊天程序
Jul 28 Python
python3实现名片管理系统
Nov 29 Python
Python Datetime模块和Calendar模块用法实例分析
Apr 15 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
Jul 04 Python
python Django中models进行模糊查询的示例
Jul 18 Python
如何为Python终端提供持久性历史记录
Sep 03 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
Nov 02 Python
python调试工具Birdseye的使用教程
May 25 Python
python库Tsmoothie模块数据平滑化异常点抓取
Jun 10 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中防止SQL注入攻击和XSS攻击的两个简单方法
2010/04/15 PHP
PHP优于Node.js的五大理由分享
2012/09/15 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
再Docker中架设完整的WordPress站点全攻略
2015/07/29 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
jQuery setTimeout()函数使用方法
2013/04/07 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
使用纯javascript实现经典扫雷游戏
2015/04/23 Javascript
JQuery插入DOM节点的方法
2015/06/11 Javascript
JavaScript数组各种常见用法实例分析
2015/08/04 Javascript
jQuery插件实现静态HTML验证码校验
2015/11/06 Javascript
详解AngularJS中module模块的导入导出
2015/12/10 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
关于Vue在ie10下空白页的debug小结
2018/05/02 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
Vue加载组件、动态加载组件的几种方式
2018/08/31 Javascript
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
2019/04/09 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
python 将字符串转换成字典dict
2013/03/24 Python
python数据结构之图的实现方法
2015/07/08 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
2019/04/15 Python
Python数据处理篇之Sympy系列(五)---解方程
2019/10/12 Python
python代码实现将列表中重复元素之间的内容全部滤除
2020/05/22 Python
节能环保家庭事迹材料
2014/08/27 职场文书
股东合作协议书
2014/09/12 职场文书
2014年政风行风自查自纠报告
2014/10/21 职场文书
房地产公司财务总监岗位职责
2015/04/03 职场文书
2015年依法治校工作总结
2015/07/27 职场文书
《称赞》教学反思
2016/02/17 职场文书
立秋之描写立秋的作文(五年级)
2019/08/08 职场文书
python基于tkinter制作无损音乐下载工具
2021/03/29 Python
详解Python中的进程和线程
2021/06/23 Python