众所周知,验证码在大部分的实际运用中是绕不开的问题,包括验证,爬虫,测试等等,而后解决验证码的方法也有很多,但大多数都会运用OCR。(这里说的验证码,是字符类型的验证码)html
目前要解决验证码,有如下几种方法:python
一、用OCR工具,好比tesseract-ocr;框架
二、利用各种语言编写的识别库;工具
三、想方法绕过验证码,这种测试中运用的多;测试
前些天看见腾讯和百度都在已经搞本身的 AI LAB(实际上他们很早就开始了,而且对开发者开放了很多接口,提供使用),AI LAB包含语音识别、文字识别、图像识别,人脸识别、内容审核、数据法分析等等,而后也看到文字识别能够用来识别(字符)验证码,就想着能不能用文字识别的接口来识别验证码,也称“在线OCR”。网站
说着就动手实现了,恰好公司的系统后台在登陆的时候有个验证码,因而就利用selenium框架写了一个自动登陆系统后台的python脚本,腾讯和百度的AI方法均可以实现了。htm
首先是利用腾讯 AI 的文字识别方法(腾讯 AI:https://ai.qq.com/),选择通用识别(https://ai.qq.com/product/ocr.shtml),查看技术文档(https://ai.qq.com/doc/ocrgeneralocr.shtml),下载SDK(https://ai.qq.com/doc/sdk.shtml)(SDK只支持Python2,须要支持Python3的下载文章后面连接的代码。),目前只支持PHP和Python。这里注意下,在使用接口以前,须要注册成为开发者,建立应用得到AppID、AppKey,后面会有用到。blog
实现方法和思路是截取当前的验证码,而后将截取下来的验证码传给OCR接口识别,待返回识别结果后,就将结果保存,显示在当前窗口。如下是实现方法和具体步骤:接口
1)、先访问后台网站,截取验证码;开发
验证码须要截取保存,不要点击,也不要刷新,否则每次请求登陆的验证码都会变化。
2)、截取验证码以后,传送给OCR接口;
3)、在输入框中输入验证码;
4)、这里须要用到的SDK,在后面的代码连接下载查看。
利用腾讯 AI 的文字识别方法就是这样了,以后就是用百度 AI 的文字识别方法了。
利用百度 AI 的文字识别方法(百度 AI:https://ai.baidu.com/),选择通用文字识别(https://ai.baidu.com/tech/ocr/general),查看技术文档(https://ai.baidu.com/docs#/OCR-API/top),下载SDK(https://ai.baidu.com/sdk#ocr),支持的语言要比腾讯多一些,这里选择用Python实现。使用以前同样要申请成为开发者,建立应用得到Access Token(APP_ID,API_KEY,SECRET_KEY)。
实现方法和前面利用腾讯 AI 同样,截取和保存都是同样的,不同的就是OCR接口传参和方法不同,区别比较大。
OCR验证码接口识别方法:
以上就是利用腾讯和百度 AI 的文字识别在线OCR识别验证码的方法了,实现过程和方法不复杂,比本地安装一些OCR软件简单多了,并且识别率和准确率也比本地化的OCR要高很多。
腾讯和百度的 AI 接口目前都是无偿使用的,不过在使用次数上,二者有区别,但仍是可以彻底保证平常使用的,下面的连接的是实现的代码,IP地址和开发者帐号已作了模糊化处理。
(PS.注意腾讯 Ai 提供的SDK只支持Python2,连接下的代码已修改成Python3实现。百度的SDK支持Python3,不须要修改。)
以上内容属于原创,转载需受权,有问题可留言。