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类参数self使用示例
Feb 17 Python
python实现神经网络感知器算法
Dec 20 Python
python版opencv摄像头人脸实时检测方法
Aug 03 Python
Python3 读、写Excel文件的操作方法
Oct 20 Python
基于python实现名片管理系统
Nov 30 Python
Python不同目录间进行模块调用的实现方法
Jan 29 Python
对python生成业务报表的实例详解
Feb 03 Python
详解如何用TensorFlow训练和识别/分类自定义图片
Aug 05 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
Aug 06 Python
Django 实现外键去除自动添加的后缀‘_id’
Nov 15 Python
Python中 Global和Nonlocal的用法详解
Jan 20 Python
python实现图像高斯金字塔的示例代码
Dec 11 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学习之 数组声明
2011/06/09 PHP
PHP生成二维码的两个方法和实例
2014/07/01 PHP
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
PHP+Mysql无刷新问答评论系统(源码)
2016/12/20 PHP
PHP+JavaScript实现无刷新上传图片
2017/02/21 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
javascript 写类方式之二
2009/07/05 Javascript
Extjs学习过程中新手容易碰到的低级错误积累
2010/02/11 Javascript
jQuery源码中的chunker 正则过滤符分析
2012/07/31 Javascript
javascript常用对话框小集
2013/09/13 Javascript
浅析Javascript使用include/require
2013/11/13 Javascript
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
document.write的几点使用心得
2014/05/14 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
Vue组件间的通信pubsub-js实现步骤解析
2020/03/11 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
python内存管理分析
2015/04/08 Python
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
Python qqbot 实现qq机器人的示例代码
2019/07/11 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
Python如何省略括号方法详解
2020/03/21 Python
python中的unittest框架实例详解
2021/02/05 Python
Cocopanda波兰:购买化妆品、护肤品、护发和香水
2020/05/25 全球购物
全民健身日活动方案
2014/01/29 职场文书
销售经理竞聘书
2014/03/31 职场文书
租房合同协议书
2014/04/09 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
乡镇党员群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
小学新课改心得体会
2016/01/22 职场文书
Java org.w3c.dom.Document 类方法引用报错
2021/08/07 Java/Android