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将图片文件转换成base64编码的方法
Mar 14 Python
Python中super关键字用法实例分析
May 28 Python
Python的Tornado框架的异步任务与AsyncHTTPClient
Jun 27 Python
Python中%r和%s的详解及区别
Mar 16 Python
python 定义n个变量方法 (变量声明自动化)
Nov 10 Python
python使用matplotlib画柱状图、散点图
Mar 18 Python
python查找重复图片并删除(图片去重)
Jul 16 Python
python多线程案例之多任务copy文件完整实例
Oct 29 Python
Python连接SQLite数据库并进行增册改查操作方法详解
Feb 18 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
May 25 Python
python实现斗地主分牌洗牌
Jun 22 Python
django学习之ajax post传参的2种格式实例
May 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多线程抓取网页实现代码
2010/07/22 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
div层的移动及性能优化
2010/11/16 Javascript
jQuery调用WebService的实现代码
2011/06/19 Javascript
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
js简易版购物车功能
2017/06/17 Javascript
详解Angular4 路由设置相关
2017/08/26 Javascript
小程序实现锚点滑动效果
2019/09/23 Javascript
ant design的table组件实现全选功能以及自定义分页
2020/11/17 Javascript
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
如何用python整理附件
2018/05/13 Python
python使用requests.session模拟登录
2019/08/09 Python
python 实现list或string按指定分段
2019/12/25 Python
利用python在excel中画图的实现方法
2020/03/17 Python
Python动态强类型解释型语言原理解析
2020/03/25 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
JAVA招聘远程笔试题
2015/07/23 面试题
中学教师请假制度
2014/02/03 职场文书
三关爱志愿服务活动方案
2014/08/17 职场文书
县委务虚会发言材料
2014/10/20 职场文书
党的群众路线教育实践活动方案
2014/10/31 职场文书
2015年学校医务室工作总结
2015/07/20 职场文书
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python
Java服务调用RestTemplate与HttpClient的使用详解
2022/06/21 Java/Android