最新要闻
- 荣耀“青海湖技术”揭晓:荣耀Magic5系列全球首发硅碳负极技术
- 国内专属!新款国产特斯拉Model Y升级悬架:终于不颠了
- 天天热门:功耗开放470W!影驰名人堂RTX 4080真是生猛
- 每日热讯!又一游戏成功“入奥”:育碧《舞力全开》入选2023年奥林匹克电子竞技项目
- 天天头条:女子幼儿园收童子尿煮鸡蛋 吃着香是浙江当地非遗:网友直呼酸爽
- 今日热闻!中国通才教育:已针对首次公开发售相关指控开展独立调查,将继续停牌
- 加点广告怎么了 爱奇艺新专利可在弹幕中显示广告
- 环球动态:狂飙8000MHz!朗科Z RGB DDR5-8000 16GB电镀银内存图赏
- 每日短讯:1:1复刻仿生人手 现实版《西部世界》公司众筹开启
- 全球头条:5G是高铁 6G就是飞机!工信部:全面推进6G技术研发
- 焦点热文:公司丢货要求全体员工均摊1万赔款:新员工拒赔反被怀疑偷东西
- 当前报道:纬德信息(688171)3月1日主力资金净买入105.72万元
- 旅俄大熊猫画风突变体重狂飙40公斤:摸爬滚打样样精通
- 百事通!特斯拉Model 2被曝成本大降37% 比丰田卡罗拉还低
- 世界短讯!打赢了!科比坠机照片泄露案其遗孀获赔2885万美元
- 天天热头条丨惊险一幕:女子用火车站自动扶梯运行李 把下面男子砸骨折
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
每日速递:Python识别图形验证码实战项目
一、前言
前几天有人问我的框架在登录时支不支持用户名、密码以及验证码。我回答是不支持,因为验证码是为了防爬虫的,自动化遇到有验证码可以叫开发去掉或者写个万能验证码,那同学给我的回答是开发不愿意,只能自己搞。哈哈哈,怎么说呢,工作中学会说服开发也是自己的一种能力呢。好的,下面开始研究识别图形码的案例了。
二、tesserocr
参考:https://juejin.cn/post/6844903618605219848
1、tesserocr介绍
tesserocr是Python的一个OCR识别库,是google开源的OCR,但其实是对tesseract做了一层Python Api的封装。
【资料图】
OCR,全称叫 Optical Character Recognition,中文翻译叫光学字符识别,是指通过扫描字符,通过其形状将其翻译成电子文本的过程;
举例:当有一个图形验证码,先使用OCR技术将其转化成电子文本,然后爬虫将识别的结果提交到服务器,便达到自动识别验证码的过程;
还有个疑问,之前有在图形识别领域,还有个opencv的玩意,那这两者有什么区别?
答:opencv专注机器视觉,tesseract专注字符识别
所以从领域来说,opencv更广,而图形验证码,opencv也可以做,但杀鸡焉用牛刀~
2、环境准备
本人电脑配置:win10,python3.8,下面讲述的是在windows下的安装
1)安装tesseract
在Windows下,要先下载tesseract,它为tesserocr提供了支持;tesseract下载地址:https://digi.bib.uni-mannheim.de/tesseract/其中文件名中带有dev的为开发版本,不带dev则为稳定版本,例如我这里是下载 tesseract-ocr-w64-setup-v5.3.0.20221214.exe;下载后双击,一路点击,直到出现下面这个页面,这里需要勾选红框里的Additional language data(download),这个选项是安装OCR识别支持的语言包,这样OCR就可以识别多国语言,然后再一路点击NEXT即可,因为要下载语言包,所以需要点时间,大概10-20分钟左右,跟网速有关,如果不需要支持多国语言的话,也可以不勾选,自由选择。默认包含英文字库的
如何验证tesseract是否安装成功?直接cmd下输入tesseract即可,成功会直接显示信息:如果提示"tesseract" 不是内部或外部命令,则是因为没有配置环境变量,手动把tesseract根目录配置到path参数下即可,这块不详细说明。
到此为止,tesseract安装成功啦~
2)安装tesserocr
接下来就安装tesserocr了
方式一(不建议,一般安装不成功),尝试pip安装:pip3 install tesserocr pillow
方式二:通过.whl文件安装
下载地址:Releases · simonflueckiger/tesserocr-windows_build (github.com)
找到与tesseract对于版本的tesserocr(本人安装的tesseract v5.3.0.20221214,所以选择tesserocr-2.5.2-cp38-cp38-win_amd64.whl)
下载后,把下载下来的.whl文件放在任意路径下 ,然后通过pip命令安装该文件,举例文件放在了D:\software\tesser。
安装命令:pip installD:\software\tesser\tesserocr-2.5.2-cp38-cp38-win_amd64.whl
(这里pip install后面跟着的是自己下载好的.whl文件即可,tips:可以把文件直接拖到cmd窗口去)
如果pycharm中导入后调用方法报错,比如tesserocr._tesserocr.image_to_text报错问题。
可以将Tesseract-OCR下的tessdata文件复制到你的Python安装路径下即可
最终就安装上tesserocr啦~
如何验证是否真的安装了?很简单,直接import tesserocr,不报错就说明安装好了;
3、使用举例
1)图形验证码图片如下:
2)代码如下:
import tesserocrfrom PIL import Image#新建Image对象image = Image.open("m.png")#进行置灰处理image = image.convert("L")#这个是二值化阈值 150threshold = 122table = []for i in range(256): if i < threshold: table.append(0) else: table.append(1)#通过表格转换成二进制图片,1的作用是白色,不然就全部黑色了image = image.point(table,"1")image.show()result = tesserocr.image_to_text(image)print("验证码:"+result)
3)执行效果如下:
三、ddddocr
1、ddddocr介绍
项目地址:https://github.com/sml2h3/ddddocr
2、环境准备
python版本>3.8
pip命令安装:方式一:pip install ddddocr方式二:pip install ddddocr
-
i https:
/
/
pypi.tuna.tsinghua.edu.cn
/
simple
/
3、使用举例
1)图形验证码图片如下:
2)代码如下:
import ddddocrocr = ddddocr.DdddOcr()with open("m.png", "rb") as f: img_bytes = f.read()res = ocr.classification(img_bytes)print("识别出的验证码为:" + res)
3)执行后效果如下:
四、pytesseract
1、pytesseract介绍
pytesseract是google的tesseract的一个python版本的接口库,想要真正使用,首先需要安装tesseract
2、环境准备
安装tesseract可以看第二大点,安装成功后再安装pytesseract,安装命令:pip install pytesseract
3、使用举例
1)图形验证码如下:
2)代码如下:
import pytesseractfrom PIL import Imagepic = Image.open("1.png")imgry = pic.convert("L")imgry.show()threshold = 150table = []for i in range(256): if i < threshold: table.append(0) else: table.append(1)out = imgry.point(table, "1")out.show()#pic 为打开的图片,lang指定识别转换的语言库text = pytesseract.image_to_string(pic,lang="chi_sim")print("验证码:"+text)
3)执行效果如下:
五、完整项目案例
1、网站地址https://www.qb5.tw/login.php
参考别人博客的,忘了博客地址了,这里主要实现登录时输入账号密码以及验证码的场景。
2、用ddddocr进行识别,完整代码如下
import requestsfrom lxml import etreefrom requests.packages import urllib3import ddddocrurllib3.disable_warnings()url = "https://www.qb5.tw/login.php"headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"}# 1.创建session对象session = requests.session()pag_text = session.get(url=url, headers=headers).text# 2.实例化一个etree对象,方便后面对页面进行数据解析tree = etree.HTML(pag_text)# 3.提取验证码下载地址img_path = "https://www.qb5.tw" + tree.xpath("//*[@id="main"]/div[1]/form/fieldset/p[3]/img/@src")[0]print(img_path)# 4.下载验证码,以二进制的方式进行保存img_content = session.get(img_path, headers=headers, verify=False).contentwith open("./img.png", "wb") as f: f.write(img_content) print("验证码图片下载成功")#img_code = input("请输入验证码:")ocr = ddddocr.DdddOcr()with open("img.png","rb") as f: img_bytes = f.read()code = ocr.classification(img_bytes)print("识别图形验证码为:"+code)# 5.进行登录,定义post的参数data = { "username": "test123", "password": "admin@123", "checkcode": code, "usecookie": "315360000", "action": "login", "submit": "立即登陆"}# 判断是否登录成功response = session.post(url=url, data=data, headers=headers, verify=False)response.encoding = "gbk" # 编码防止乱码response_text = response.textif "登录成功" in response_text: print("登陆成功")# 请求个人信息页ge = session.get(url="https://www.qb5.tw/userdetail.php", headers=headers, verify=False)with open("xs.html", "w", encoding="gbk") as f: f.write(ge.text)
3、执行效果如下
六、结束语
tesserocr也只是识别手段的一种,如果需要高精度的识别,可以尝试TensorFlow实现深度学习模型,通过训练模型来识别图形验证码。
案例中的执行效果截图都可以识别出验证码,那是因为需要演示成功例子,实际上尝试了3种开源的ocr,识别精度都很低,如果工作中实在有需要用到,建议用百度或阿里的ocr,不过需要收费额~
每日速递:Python识别图形验证码实战项目
全球播报:记一次CPU占用持续上升问题排查(Nacos动态路由引起)
iOS应用发布ITMS-90704错误解决
荣耀“青海湖技术”揭晓:荣耀Magic5系列全球首发硅碳负极技术
国内专属!新款国产特斯拉Model Y升级悬架:终于不颠了
天天热门:功耗开放470W!影驰名人堂RTX 4080真是生猛
每日热讯!又一游戏成功“入奥”:育碧《舞力全开》入选2023年奥林匹克电子竞技项目
天天头条:女子幼儿园收童子尿煮鸡蛋 吃着香是浙江当地非遗:网友直呼酸爽
今日热闻!中国通才教育:已针对首次公开发售相关指控开展独立调查,将继续停牌
全球百事通!为什么95%的Java程序员人,都是用不好Synchronized?
每日时讯!Python教程:类的派生
你有“ChatGPT综合征”吗:想搞钱,或是失业焦虑?
Python教程:类的继承,什么是继承
加点广告怎么了 爱奇艺新专利可在弹幕中显示广告
环球动态:狂飙8000MHz!朗科Z RGB DDR5-8000 16GB电镀银内存图赏
每日短讯:1:1复刻仿生人手 现实版《西部世界》公司众筹开启
全球头条:5G是高铁 6G就是飞机!工信部:全面推进6G技术研发
焦点热文:公司丢货要求全体员工均摊1万赔款:新员工拒赔反被怀疑偷东西
天天观察:如何在Ubuntu上安装Nextcloud(适用于树莓派上的Ubuntu)
每日播报!Pod 进阶
每日快看:Zabbix“专家坐诊”第183期问答汇总
Spring中Bean的加载方式~
什么是Markdown
当前报道:纬德信息(688171)3月1日主力资金净买入105.72万元
旅俄大熊猫画风突变体重狂飙40公斤:摸爬滚打样样精通
百事通!特斯拉Model 2被曝成本大降37% 比丰田卡罗拉还低
世界短讯!打赢了!科比坠机照片泄露案其遗孀获赔2885万美元
天天热头条丨惊险一幕:女子用火车站自动扶梯运行李 把下面男子砸骨折
【全球速看料】玩游戏需自备爆米花:《最终幻想16》主线过场动画超11小时
当前快看:1000亿数据、30W级qps如何架构?来一个天花板案例
3-Eureka注册中心
天天精选!【验证码逆向专栏】某验三代、四代一键通过模式逆向分析
当前信息:索泰RTX 4090月白深度测试:真孤独求败!A卡没得玩了
网友晒视频广州一特斯拉在停车场连撞多车 司机下车就跑:又踩错了吗
当前看点!设计时速100公里!上海苏州互通地铁今起试跑:苏州坐地铁直达
环球资讯:韦达定理
全球播报:轻松玩转Makefile | 基础用法
医院拍CT有位患者叫熊猫 结果竟是真熊猫:网友祝福“国宝”尽快好起来
丰田拆完一辆特斯拉Model Y后被震撼了 高管惊叹:我们远远落后
全球新动态:火爆全网的AI小姐姐模型重新上线 作者:画什么图后果自负
【全球热闻】大厂年薪30万95后女生转行卖快餐:直言脱离公司KPI太快乐了
当前观察:《暗黑破坏神4》玩家打怪时 不会出现天量伤害数值
世界今热点:通用电梯:目前产能在满足履行轨道交通项目合同需求的同时,不会影响公司履行其他客户订单或新接订单的生产需求
环球报道:电脑病毒的介绍与防护_电脑病毒与防护介绍
天天日报丨浅析大促备战过程中出现的fullGc,我们能做什么?
ChunJun 1.16 Release版本即将发布,bug 捉虫活动邀您参与!
一款超级给力的弱网测试神器—Qnet(附视频)
焦点要闻:Vue,小程序开发技术详解
环球即时看!关于React-Router6 (React 路由)
每日简讯:取代马斯克:新CEO接班人浮出水面
健身网红大容量运动杯:富光1.6L顿顿桶29元发车
每日热门:马力超百匹!春风NK800双缸街车发布:46890元起
热资讯!连续三年发现大油田 渤海又出亿吨级油田:1万辆车能跑30年
粽子米泡几个小时最佳?粽子米怎么调料?
职内是什么意思?职内的职能是什么?
天天快消息!【Spring基础补充】 注解补充(二)
塑料花盆能用几年?塑料花盆和陶瓷花盆哪个养花好?
url是什么意思?url地址如何获取?
COSPLAY图赏:俄妹COS《原神》八重神子 光腿狐狸媚眼如丝
《最终幻想16》PC版稳了:将于PS5版发售后开发
2299元 小米柔风空调1.5匹开启众筹:再不怕吹空调着凉了
夜空中“最亮”的两颗星星即将“浪漫相拥”:肉眼可见
世界热资讯!一夜3次地震 全球进入地震活跃期?专家回应:其实地震一直很多
江映蓉是哪一届的超女?江映蓉那届超女前十名都有谁?
榨汁机品牌排行榜前十名有哪些?榨汁机榨果汁食谱大全
chkdsk工具访问被拒绝怎么办?chkdsk工具怎么运行?
桌面的图标有阴影怎么去掉?桌面图标怎么设置随意摆放?
windows资源管理器已停止工作是怎么回事?windows资源管理器已停止工作怎么办?
输入法哪个好用?输入法被禁用如何恢复?
2023中南大学地球科学与信息物理学院科研助理招聘(非编制)
java反射机制
世界讯息:HTML+JSP+CSS实现表格布局的例子
环球头条:周鸿祎:打造中国版ChatGPT难度比研发光刻机低很多
快看点丨中国打造全球首艘大容量电池混合动力客滚船:能充8800度电
全球最大3D内容生态!努比亚推出首款裸眼3D平板nubia Pad 3D
视讯!爽脆有嚼劲/便携小包装 鱼泉榨菜7.9元 1.2斤大促
环球新消息丨魅族20系列首发Flyme 10无界生态系统 支持全链路防诈技术
推荐系统[四]:精排-详解排序算法LTR (Learning to Rank)_ poitwise, pairwise, listwise相关评价指标,超详细知
全球热资讯!使用unplugin-auto-import自动导入插件优化vite开发vue3应用
全球视讯!移动计算入门教程_编程入门自学教程_菜鸟教程-免费教程分享
【快播报】李瑞峰回答长城:我们究竟遇到了什么问题
12.98万起 新款长城欧拉好猫上市:小姐姐最爱
世界百事通!马斯克做出重大决定:特斯拉车主可能要难受了
代表建议春节假期至9天:取消调休制度 法定3天变5天
贵州一公司设立“临时哭泣点”引热议:you cry I cry no bb
焦点快看:早安!出行气象来了(2023年3月1日)
当前短讯!读Java性能权威指南(第2版)笔记05_数据库性能JDBC
korean doll likeness模型|Japanese-doll-likeness模型获取及使用
天天微速讯:一招搞定孩子不吃饭问题
实时焦点:python通过轮子安装第三方库(以Wordcloud为例)
全球动态:能否破40亿?《流浪地球2》成2月票房冠军 力压《满江红》
代表建议春节假期延至9天 取消调休!网友期待
天天快看:兼容友商Mesh组网!中兴小方糖路由器今日开售:到手仅99元
当前头条:《流浪地球3》何时出?导演郭帆:估计还要等四年
环球微速讯:3月24日公测!暴雪《暗黑破坏神4》PC配置要求公布
每日报道:MySQL的RR和RC事务隔离级别加锁类型验证
全球今热点:白马非马是什么学派_白马非马是哪家的学说
最完美iPhone要来了!消息称iPhone 16 Pro将采用屏下Face ID
焦点速看:《白夜追凶2》要来了!优酷独家悬疑剧:前作口碑爆火
每日热文:高三女生因百日誓师热血发言表情被网暴 官方回应已心里辅导:女孩未受影响