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编程-将Python程序转化为可执行程序[整理]
Apr 09 Python
比较详细Python正则表达式操作指南(re使用)
Sep 06 Python
Python优化技巧之利用ctypes提高执行速度
Sep 11 Python
对Python闭包与延迟绑定的方法详解
Jan 07 Python
Python中整数的缓存机制讲解
Feb 16 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
Django认证系统实现的web页面实现代码
Aug 12 Python
PyQt+socket实现远程操作服务器的方法示例
Aug 22 Python
python3 requests库实现多图片爬取教程
Dec 18 Python
python微信公众号开发简单流程实现
Mar 09 Python
python新手学习使用库
Jun 11 Python
python不同系统中打开方法
Jun 23 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操作sqlserver关于时间日期读取的小小见解
2009/11/29 PHP
PHP的简易冒泡法代码分享
2012/08/28 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
htm调用JS代码
2007/03/15 Javascript
很酷的javascript loading效果代码
2008/06/18 Javascript
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
2011/04/27 Javascript
js字符编码函数区别分析
2011/12/28 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
获取中文字符串的实际长度代码
2014/06/05 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
JS实现的随机排序功能算法示例
2017/06/09 Javascript
angular json对象push到数组中的方法
2018/02/27 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
Python模仿POST提交HTTP数据及使用Cookie值的方法
2014/11/10 Python
python WindowsError的错误代码详解
2017/07/23 Python
Python实现一个简单的验证码程序
2017/11/03 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
英国在线花园中心:You Garden
2018/06/03 全球购物
英国在线药房:Chemist.co.uk
2019/03/26 全球购物
大学自主招生自荐信
2013/12/16 职场文书
社区端午节活动方案
2014/01/28 职场文书
2015年小学总务工作总结
2015/07/21 职场文书