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制作简单的钢琴程序的教程
Apr 01 Python
python字符串对其居中显示的方法
Jul 11 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
Jul 30 Python
Python实现的计算器功能示例
Apr 26 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
Aug 01 Python
Django数据库连接丢失问题的解决方法
Dec 29 Python
python flask框架实现重定向功能示例
Jul 02 Python
在pytorch中查看可训练参数的例子
Aug 18 Python
使用pickle存储数据dump 和 load实例讲解
Dec 30 Python
Python 实现打印单词的菱形字符图案
Apr 12 Python
Django 解决由save方法引发的错误
May 21 Python
python产生模拟数据faker库的使用详解
Nov 04 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 代码规范小结
2012/03/08 PHP
php生成excel列序号代码实例
2013/12/24 PHP
thinkPHP中钩子的两种配置调用方法详解
2016/11/11 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
理清PHP在Linxu下执行时的文件权限方法
2017/06/07 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
PHP实现腾讯短网址生成api接口实例
2020/12/08 PHP
通过修改referer下载文件的方法
2008/05/11 Javascript
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
2009/04/10 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
js报$ is not a function 的问题的解决方法
2014/01/20 Javascript
如何解决ligerUI布局时Center中的Tab高度大小
2015/11/24 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
JS中sort函数排序用法实例分析
2016/06/16 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
巧用canvas
2017/01/21 Javascript
Angular.js中angular-ui-router的简单实践
2017/07/18 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
2017/08/04 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
一个Vue页面的内存泄露分析详解
2018/06/25 Javascript
谈谈IntersectionObserver懒加载的具体使用
2019/10/15 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
javascript中的with语句学习笔记及用法
2020/02/17 Javascript
python re正则表达式模块(Regular Expression)
2014/07/16 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
python3人脸识别的两种方法
2019/04/25 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
python retrying模块的使用方法详解
2019/09/25 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
CSS3弹性布局内容对齐(justify-content)属性使用详解
2017/07/31 HTML / CSS
竞争上岗演讲稿范文
2014/05/12 职场文书
政风行风评议个人心得体会
2014/10/29 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书