当前位置: 首页 > news >正文

[Python进阶] 识别验证码

11.3 识别验证码

我们再开发某些项目的时候,如果遇到要登录某些网页,那么会经常遇到输入验证码的情况,而每次人工输入验证码的话,比较浪费时间。于是,可以通过调用某些接口进行识别。

11.3.1 调用百度文字识别接口

这里,我们详细的来介绍一下如何注册百度云、通过Python调用百度文字识别接口。

11.3.1.1 注册百度云

1、搜索百度智能云,进入到官方主页。
2、点击免费注册,注册百度智能云。
3、进入到应用管理:https://console.bce.baidu.com/ai/#/ai/ocr/overview/index
4、在服务列表中,找到通用场景OCR下的通用文字识别(高精度版),点击右边的开通。这个服务每个月会有1000次的免费试用。对于一般人而言也够了。
在这里插入图片描述

5、进去后按照要求填写相关信息,确认开通即可。
6、开通后,我们会得到3个重要信息:AppIDAPI KeySecret Key。妥善保管好着3个信息,后面会用到。

11.3.1.2 获取Access_token

访问示例代码中心:https://console.bce.baidu.com/tools/#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E9%89%B4%E6%9D%83%E8%AE%A4%E8%AF%81%E6%9C%BA%E5%88%B6&api=oauth%2F2.0%2Ftoken&method=post
快速调试接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
填入之前获取到的API KeySecret Key,点击调试,然后切换到响应数据中的Body页面,在下面我们可以看到access_token
在这里插入图片描述

11.3.1.3 调用接口

请求示例代码:

# encoding:utf-8
import requests
import base64'''
通用文字识别(高精度版)
'''request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
# 二进制方式打开图片文件
f = open('[本地文件]', 'rb')
img = base64.b64encode(f.read())params = {"image":img}
access_token = '[调用鉴权接口获取的token]'
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:print (response.json())

返回示例(JSON格式):

{
“log_id”: 1390582998516105216,
“words_result_num”: 2
“words_result”: [
{
“words”: " OCR"
},
{
“words”: “百度通用文字识别高精度版”
}
]
}

11.3.2 使用第三方库:ddddocr

这是一个十分强大的图文识别第三方库,相对于百度文字识别,优势如下:
1、不用在线注册,本地部署即可
2、没有次数限制
3、识别效果比百度的图文识别要更好
4、使用简单
老规矩,先下载安装:

pip install ddddocr

使用:

def ftOCRByddddocr(pmImgFilename: str):"""通过ddddocr库识别本地图片中的字符@param pmImgFilename: 图片名@return: {str:识别到的内容}"""import ddddocrocr = ddddocr.DdddOcr(show_ad=False)with open(pmImgFilename, 'rb') as f:img_bytes = f.read()return ocr.classification(img_bytes)

相关文章:

  • C#中implicit和explicit
  • 第一个 Angular 项目 - 静态页面
  • 在 MacOS M系列处理器上使用 Anaconda 开发 Oralce 的Python程序
  • 【Java】零基础蓝桥杯算法学习——二分查找
  • python从入门到精通(二十):python的exe程序打包制作
  • Sentinel 流控-关联模式
  • LeetCode:67.二进制求和
  • InternLM大模型实战-3.InternLM+Langchain搭建知识库
  • Map和Set(哈希表)
  • 【OpenHarmony硬件操作】风扇与温湿度模块
  • DarkSide针对VMware EXSI系统进行加密
  • CTR-----Click-Through Rate简单介绍
  • ClickHouse--04--数据库引擎、Log 系列表引擎、 Special 系列表引擎
  • 再说开源软件
  • 年假作业10
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [NodeJS] 关于Buffer
  • Redis 懒删除(lazy free)简史
  • Web Storage相关
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 记一次用 NodeJs 实现模拟登录的思路
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 每天一个设计模式之命令模式
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 设计模式 开闭原则
  • 设计模式走一遍---观察者模式
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • MPAndroidChart 教程:Y轴 YAxis
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ![CDATA[ ]] 是什么东东
  • $(selector).each()和$.each()的区别
  • (二)丶RabbitMQ的六大核心
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (四)图像的%2线性拉伸
  • (已解决)什么是vue导航守卫
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • ***测试-HTTP方法
  • .jks文件(JAVA KeyStore)
  • .Net环境下的缓存技术介绍
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • @Transactional类内部访问失效原因详解
  • []sim300 GPRS数据收发程序
  • [145] 二叉树的后序遍历 js
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution
  • [android] 练习PopupWindow实现对话框
  • [BetterExplained]书写是为了更好的思考(转载)
  • [BZOJ3223]文艺平衡树
  • [ccc3.0][数字钥匙] UWB配置和使用(二)
  • [CF482B]Interesting Array
  • [CTSC2014]企鹅QQ