在爬取网站的时候都遇到过验证码,那么我们有什么方法让程序自动的识别验证码呢?其实网上已有很多打码平台,但是这些都是需要money。但对于仅仅爬取点数据而接入打码平台实属浪费。所以百度免费ocr正好可以利用。(每天500次免费)

1、注册百度账号、百度云管理中心创建应用、生成AppKey、SecretKey(程序调用接口是要生成access_token)

2、利用AppKey、SecretKey生成access_token
向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST)并在URL中带上以下参数:
grant_type: 必须参数,固定为client_credentials;
client_id: 必须参数,应用的API Key;
client_secret: 必须参数,应用的Secret Key
代码如下:

/*** 获取AccessToken* 百度开发* AppId:* APIKey:* SecretKey:** @return*/public static String getAccessToken() {String accessToken = "";HttpRequestData httpRequestData = new HttpRequestData();HashMap<String, String> params = new HashMap<>();params.put("grant_type", "client_credentials");params.put("client_id", "xxxxxx");params.put("client_secret", "xxxxxx");httpRequestData.setRequestMethod("GET");httpRequestData.setParams(params);httpRequestData.setRequestUrl("https://aip.baidubce.com/oauth/2.0/token");HttpResponse response = HttpClientUtils.execute(httpRequestData);String json = "";try {json = IOUtils.toString(response.getEntity().getContent());} catch (IOException e) {e.printStackTrace();}if (response.getStatusLine().getStatusCode() == 200) {JSONObject jsonObject = JSONObject.parseObject(json);if (jsonObject != null && !jsonObject.isEmpty()) {accessToken = jsonObject.getString("access_token");}}return accessToken;}

3、请求百度ocr通用文字识别API(下面以百度通用识别api识别为例)
请求API的URL https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic
请求方法 POST
请求URL参数 access_token
请求头 (Header) Content-Type application/x-www-form-urlencoded
Body中放置请求参数,主要参数详情如下:

  • image : 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
  • url : 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
/*** 获取识别验证码* @param imageUrl* @return*/public static String OCRVCode(String imageUrl){String VCode = "";if (StringUtils.isBlank(ACCESS_TOKEN)) {logger.error("accessToken为空");return VCode;}OCRUrl = OCRUrl + "?access_token=" + ACCESS_TOKEN;HashMap<String, String> headers = new HashMap<>();headers.put("Content-Type", "application/x-www-form-urlencoded");HashMap<String, String> params = new HashMap<>();imageUrl = ImageBase64ToStringUtils.imageToStringByBase64(imageUrl);params.put("image", imageUrl);HttpRequestData httpRequestData = new HttpRequestData();httpRequestData.setHeaders(headers);httpRequestData.setRequestMethod("post");httpRequestData.setParams(params);httpRequestData.setRequestUrl(OCRUrl);HttpResponse response = HttpClientUtils.execute(httpRequestData);String json = "";if (response.getStatusLine().getStatusCode() == 200) {try {json = IOUtils.toString(response.getEntity().getContent());JSONObject jsonObject = JSONObject.parseObject(json);JSONArray wordsResult = jsonObject.getJSONArray("words_result");VCode = wordsResult.getJSONObject(0).getString("words");} catch (IOException e) {logger.error("请求识别失败!", e);}}return VCode;}

对图片进行base64编码字符

/*** 将本地图片进行Base64位编码* @param imageFile* @return*/public static String encodeImgageToBase64(String imageFile) {// 其进行Base64编码处理byte[] data = null;// 读取图片字节数组try {InputStream in = new FileInputStream(imageFile);data = new byte[in.available()];in.read(data);in.close();} catch (IOException e) {e.printStackTrace();}// 对字节数组Base64编码return Base64Util.encode(data);}

4、返回结果以json方式返回

{"log_id": 2471272194,"words_result_num": 2,"words_result": [{"words": " TSINGTAO"},{"words": "青島睥酒"}]
}

项目github地址:https://github.com/xwlmdd/ipProxyPool
注:ocr图片识别模块在这个项目里的一个工具类

转载于:https://www.cnblogs.com/tuyile006/p/9287906.html

利用百度OCR实现验证码自动识别相关推荐

  1. php验证码百度ocr识别,利用百度OCR实现验证码自动识别

    在爬取网站的时候都遇到过验证码,那么我们有什么方法让程序自动的识别验证码呢?其实网上已有很多打码平台,但是这些都是需要money.但对于仅仅爬取点数据而接入打码平台实属浪费.所以百度免费ocr正好可以 ...

  2. 如何利用百度ocr实现验证码自动识别

    在爬取网站的时候都遇到过验证码,那么我们有什么方法让程序自动的识别验证码呢?其实网上已有很多打码平台,但是这些都是需要money.但对于仅仅爬取点数据而接入打码平台实属浪费.所以百度免费ocr正好可以 ...

  3. 利用百度ocr识别验证码

    前言: tesserocr是很早的一款OCR文字识别技术,就现在来说可能有点老. CODE: from aip import AipOcr from PIL import Image import c ...

  4. Python 利用百度文字识别验证码、文字、图片并提取图片中文字或数字

    Python 利用百度文字识别验证码.文字.图片并提取图片中文字或数字 Python 利用百度文字识别验证码.文字.图片并提取图片中文字或数字 以下是代码实现, Python 利用百度文字识别验证码. ...

  5. AUTOJS利用百度OCR识别找字点击 详细代码

    //此段代码要先在百度智能云上注册并开通百度OCR文字识别,开通方法请自行百度 //https://login.bce.baidu.com/?account=&redirect=http%3A ...

  6. python使用百度OCR图片验证码

    在爬取网站的时候都遇到过验证码,有什么方法可以让程序帮我们识别验证码呢?其实网上已有很多打码平台,但是这些都是需要money,像阿里云平台的,以前大概是每分钱1次,现在价格有点小贵,但对于仅仅爬取点数 ...

  7. python(自动化)利用selenium+百度ocr文字识别验证码实现自动登陆登陆CET-四级报名系统

    操作步骤: 1:登陆打开CET-考试系统 2:填写相关登陆信息 3:调用百度ocr实现文字验证码识别 4:实现登陆 如何使用和调用百度ocr文字识别接口 1:进入百度AI开发平台:链接 2:在页面上选 ...

  8. python 百度ocr安装_Python利用百度文字识别(OCR)服务实现图片文字提取,准确率超高...

    最近和朋友聊天,聊到一个充满使命感但又略显心酸的话题--下班回家在网上给小朋友抄题...那么问题来了,除了大家所知的QQ文字识别功能之外,还有哪些方式可以做到文字识别呢. 作为一名热心的Python小 ...

  9. python—简单数据抓取四(利用超级鹰的ocr识别图片验证码模拟登录超级鹰网站、利用百度云的ocr识别自如租房网价格图片获取到自如网的价格)

    学习目标: python学习二十四 -简单数据抓取四 学习内容: 1.利用超级鹰的ocr识别图片验证码模拟登录超级鹰网站 2.利用百度云的ocr识别自如租房网的价格图片,获取到自如网的价格数据 1.利 ...

  10. 百度莱茨狗python自动抢狗,调用百度OCR或者人工识别验证码

    本项目是利用了selenium+chrome来自动抢狗,类似于爬虫,可以设置抢狗的金额范围.验证码识别是调用百度云端OCR识别,速度不算快,1到2秒左右,准确率50%吧,如果嫌不准也可以自己手敲验证码 ...

最新文章

  1. Python3 使用[]提取字符
  2. Android GooglePay 填坑录
  3. c#如何wmf图片转换成png图片_每日一学:如何将png图片转换为jpg图片
  4. 大家一起讨论一下朋友网的人脉关系算法是怎么实现的
  5. png格式的图片怎么变成jpg格式?png图片怎么转格式?
  6. python如何调整图片大小_Python实现图片尺寸缩放脚本
  7. java 端口流量统计_java—流量统计源码 | 学步园
  8. java 爬虫爬取糗事百科热图图片
  9. 【解决问题】修复虚拟机报错,写入文件时出错,请确认您有访问该目录的权限
  10. 详细说明register关键字
  11. iOS非越狱渠道运营必知的10条
  12. 中兴pon网络olt升级,更新,原理,实例
  13. Cert Prep: Certified SOLIDWORKS Professional Cert Prep:认证的SOLIDWORKS Professional Lynda课程中文字幕
  14. 浙大计算机学院研究生读书报告,浙江大学工程师学院研究生读书报告撰写要求与模板...
  15. 元件封装知识(转载)
  16. 根据身份证号计算年龄
  17. 一个小操作,预防U盘感染病毒问题
  18. c语言求函数的极限运算,计算极限 lim(1+a)(1+a^2)....(1+a^2n) x-0
  19. 分布计算系统学习随笔 第六章分布式系统中的死锁
  20. 进击的短视频 异构计算驱动AI落地

热门文章

  1. 音视频开发-websocket教程
  2. linux php执行ci框架,PHP CI框架学习之路径访问
  3. Win10下VB6.0开发之VB6.0的安装
  4. 小学计算机课教学工作总结,小学六年级信息技术教学工作总结
  5. php xml 怎么去掉头,PHP如何删除xml某条数据
  6. 我们该用什么分布式数据库?
  7. redis集群环境搭建入门
  8. CukeTest新版本公测邀请-Windows应用自动化
  9. Swift 弱引用与无主引用
  10. Fedora音视频解码的配置