ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python 光学文字识别

2021-08-24 19:30:00  阅读:223  来源: 互联网

标签:登录 Python image 验证码 iframe 光学 识别 Image browser


Python 光学文字识别

easyocr

光学文字识别主要应用于文字验证码、滑块等类型的登录验证。

首先需要的是第三方库 easyocr(有点大1.5G左右)。

安装导入后使用:

reader = easyocr.Reader(['ch_sim','en'],gpu = False)
print(reader.readtext('file/IDcard.jpg',detail = 0))

列表中参数表示可识别文字语言种类。***‘ch_sim’ - 简体中文 ‘en’ - 英文***

页面抠图

导包

from PIL import Image as img
from PIL.Image import Image
# from PIL.ImageFilter import Filter   #使用滤镜处理图片
image = img.open('file/IDcard.jpg')   #type:Image  声明类型为了有代码提示
print(image.size)   #图片大小
head = image.crop((320,50,460,235))  #抠图裁剪位置
# head.show()  #显示图片
head.save('file/head.jpg')  #保存图片

抠图前:

韦小宝

抠图后:

head

阿里云邮箱登录验证

这个邮箱页面登录框嵌套了两次,所以需要获取两次iframe标签以切换到到登录框获取到输入框以及验证码。

切换到登录框

iframe = browser.find_element_by_css_selector('.login_panel_iframe')
browser.switch_to.frame(iframe)

切换到邮箱登录

iframe_mail = browser.find_element_by_css_selector('#ding-login-iframe')
browser.switch_to.frame(iframe_mail)

现在就可以获取到输入框了,解析现在的网页就可以拿到输入框了。输入用户名密码后才会显示验证码。验证码位置就是登录框、邮箱登录框、验证码框三者横纵坐标的和(因为他们之间都是相对位置)。通过location获取到的位置都是左上角的坐标。再通过size获取到验证码大小就可以对截到的整个图进行裁剪工作了。

屏幕截图:

存为文件:

browser.get_screenshot_as_file('file/aliyun.png')

截取整个窗口的图片获得二进制数据

image_data = browser.get_screenshot_as_png()
browser_image = Image.open(io.BytesIO(image_data))

最后裁剪就能得到完整的验证码了。值得注意的是,windows系统需要将电脑页面设置为100%(默认为125%),若不修改需要在裁剪坐标处乘1.25(125%)、或乘1.5(150%)。

标签:登录,Python,image,验证码,iframe,光学,识别,Image,browser
来源: https://blog.csdn.net/Lemon_Review/article/details/119897031

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有