Python 代码实现验证码识别
今天咋们继续利用pillow和pytesseract来实现验证码的识别
一、环境配置
需要 pillow 和 pytesseract 这两个库,pip install 安装就好了。
pip install pillow -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install pytesseract -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
安装好Tesseract-OCR.exe
pytesseract 库的配置:搜索找到pytesseract.py,打开该.py文件,找到 tesseract_cmd,改变它的值为刚才安装 tesseract.exe 的路径。
二、验证码识别
识别验证码,需要先对图像进行预处理,去除会影响识别准确度的线条或噪点,提高识别准确度。
实例1
import cv2 as cv
import pytesseract
from PIL import Imagedef recognize_text(image):# 边缘保留滤波 去噪dst = cv.pyrMeanShiftFiltering(image, sp=10, sr=150)# 灰度图像gray = cv.cvtColor(dst, cv.COLOR_BGR2GRAY)# 二值化ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)# 形态学操作 腐蚀 膨胀erode = cv.erode(binary, None, iterations=2)dilate = cv.dilate(erode, None, iterations=1)cv.imshow('dilate', dilate)# 逻辑运算 让背景为白色 字体为黑 便于识别cv.bitwise_not(dilate, dilate)cv.imshow('binary-image', dilate)# 识别test_message = Image.fromarray(dilate)text = pytesseract.image_to_string(test_message)print(f'识别结果:{text}')src = cv.imread(r'./test/044.png')
cv.imshow('input image', src)
recognize_text(src)
cv.waitKey(0)
cv.destroyAllWindows()
运行效果如下:
识别结果:3n3DProcess finished with exit code 0
实例2
import cv2 as cv
import pytesseract
from PIL import Imagedef recognize_text(image):# 边缘保留滤波 去噪blur =cv.pyrMeanShiftFiltering(image, sp=8, sr=60)cv.imshow('dst', blur)# 灰度图像gray = cv.cvtColor(blur, cv.COLOR_BGR2GRAY)# 二值化ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)print(f'二值化自适应阈值:{ret}')cv.imshow('binary', binary)# 形态学操作 获取结构元素 开操作kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 2))bin1 = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)cv.imshow('bin1', bin1)kernel = cv.getStructuringElement(cv.MORPH_OPEN, (2, 3))bin2 = cv.morphologyEx(bin1, cv.MORPH_OPEN, kernel)cv.imshow('bin2', bin2)# 逻辑运算 让背景为白色 字体为黑 便于识别cv.bitwise_not(bin2, bin2)cv.imshow('binary-image', bin2)# 识别test_message = Image.fromarray(bin2)text = pytesseract.image_to_string(test_message)print(f'识别结果:{text}')src = cv.imread(r'./test/045.png')
cv.imshow('input image', src)
recognize_text(src)
cv.waitKey(0)
cv.destroyAllWindows()
运行效果如下:
二值化自适应阈值:181.0
识别结果:8A62N1Process finished with exit code 0
实例3
import cv2 as cv
import pytesseract
from PIL import Imagedef recognize_text(image):# 边缘保留滤波 去噪blur = cv.pyrMeanShiftFiltering(image, sp=8, sr=60)cv.imshow('dst', blur)# 灰度图像gray = cv.cvtColor(blur, cv.COLOR_BGR2GRAY)# 二值化 设置阈值 自适应阈值的话 黄色的4会提取不出来ret, binary = cv.threshold(gray, 185, 255, cv.THRESH_BINARY_INV)print(f'二值化设置的阈值:{ret}')cv.imshow('binary', binary)# 逻辑运算 让背景为白色 字体为黑 便于识别cv.bitwise_not(binary, binary)cv.imshow('bg_image', binary)# 识别test_message = Image.fromarray(binary)text = pytesseract.image_to_string(test_message)print(f'识别结果:{text}')src = cv.imread(r'./test/045.jpg')
cv.imshow('input image', src)
recognize_text(src)
cv.waitKey(0)
cv.destroyAllWindows()
运行效果如下:
二值化设置的阈值:185.0
识别结果:7364Process finished with exit code 0
结语
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小编的支持。
Python 代码实现验证码识别相关推荐
- Python 代码实现验证码识别,很稳
作者:叶庭云 源自:快学python 昨天十行代码实现文字识别,感觉怎样,是不是很爽 今天咋们继续利用pillow和pytesseract来实现验证码的识别 一.环境配置 需要 pillow 和 py ...
- python 验证码识别 开源_Python 代码实现验证码识别
Python 代码实现验证码识别 测试开发社区 1周前 源 / j_hao104 一.探讨 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域-- ...
- python好学吗 小木虫-25行Python代码完成人脸识别
以下是Shantnu Tiwari的客座文章,作者有着在底层编程和嵌入式领域十年的工作经验.在发现Python语言之前的几年时间里,Shantnu Tiwari一直忍受着C/C++语言编程的不便,但P ...
- Python代码使用easyocr识别身份证号码
Python代码使用easyocr识别身份证号码,直接上代码 import easyocr import os import re import pandas as pdclass card():de ...
- python免费的验证码识别OCR库
python免费的验证码识别OCR库 免费的验证码识别OCR项目已经打包成pypi包 1, 可以通过以下命令安装 pip install ddddocr -i https://pypi.org/sim ...
- 字符识别Python实现 图片验证码识别
字符型图片验证码识别完整过程及Python实现 1 摘要 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越 ...
- code block怎样实现图形界面_Python 代码实现验证码识别,很稳
作者:叶庭云 源自:快学python 昨天十行代码实现文字识别,感觉怎样,是不是很爽 今天咋们继续利用pillow和pytesseract来实现验证码的识别 一.环境配置 需要 pillow 和 py ...
- 基于Python的简单验证码识别
原文链接:有图有真相 摘要:验证码在网络安全方面发挥着关键作用,验证码的主要目的是区分人类和计算机,用来防止自动化脚本对网站的一些恶意行为.目前绝大多数网站都利用验证码来阻止恶意脚本程序的入侵.验证码 ...
- 使用Python+Selenium+图灵验证码识别平台,识别B站/bilibili的中文验证码,并自动登陆B站
一直想用python写一个程序帮我自动登陆B站,完成一些点击任务,懂的都懂 =v= 最近终于腾出时间来搞了,其实最难的部分就是中文验证码的识别.这个借助API接口也能轻松搞定.下面分享一下全部源码(前 ...
- 20行Python代码开发植物识别 app
这篇文章介绍如何用Python快速实现一个植物识别的app,家里养了几盆多肉还叫不上名字,正好拿来识别一下.实现这样一个app只需要20行左右的代码,先来看下效果: 文末点击阅读全文即可访问线上应用( ...
最新文章
- chrome 禁用恢复页面提示_有哪些很值得推荐的Chrome插件?精选7款实用插件
- WebHook 与jenkins
- android 布局设置背景的透明度
- 学习《apache源代码全景分析》之网络连接部分摘录
- 客服顾问的工具箱--走出软件作坊:三五个人十来条枪 如何成为开发正规军(六)[转]...
- [js] XML与JSON有什么的区别?
- 无线电波的入侵第1部分——无线电频率基础与理论
- python classmethod static_python @classmethod 和 @staticmethod
- 如何修改网络游戏服务器端的数据,网络游戏服务器端编程:数据操纵语句
- 虚幻引擎UE4编辑器介绍
- Wireshark TS | 丢包?不要轻易下结论续
- Twitter技术主管回怼马斯克!马斯克:He’s fired!
- Android 界面一键变灰/黑白
- android api 和版本对应表汇总
- 免费的云数据库平台Planetscale
- Recyclerview嵌套Recyclerview,条目显示不全和宽度不能铺满不能同时满足
- 深度学习论文阅读目标检测篇(三):Faster R-CNN《 Towards Real-Time Object Detection with Region Proposal Networks》
- hadoop2.2.0的编译(64位linux系统)
- 使用DNSCrypt来加密您与OpenDNS之间的通信
- access odbc oracle数据库,vb连接数据库(ODBC,oracle,sqlserver,access)
热门文章
- WinAPI双人贪吃蛇
- GPS之家论坛最新地图下载精选 汇集论坛精华 不断更新中(2013.3.30)
- 远程传输文件--java文件流
- db4o java教程_Db4o 社区版 8.1.1 发布,面向对象数据库
- 2012年3月份第1周51Aspx源码发布详情
- Android 权限清单大全
- 进军杀毒市场!百度杀毒软件2013正式发布
- 这是我的脚本原型。。比我的生成器的麻烦(这种最稳定,我做成的脱机刷毛实
- 【肌电信号】肌电信号处理系统含Matlab源码
- java list对象转json_java中List对象转换为JSON对象