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

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

2、利用AppKey、SecretKey生成access_token

向授权服务地址https://aip.baidubce.com/oaut...发送请求(推荐使用POST)并在URL中带上以下参数:

grant_type: 必须参数,固定为client_credentials;

client_id: 必须参数,应用的API Key;

client_secret: 必须参数,应用的Secret Key

代码如下:

/**

1. 获取AccessToken

2. APIKey:

3. SecretKey:

4. @return

*/

public static String getAccessToken() {

String accessToken = "";

HttpRequestData httpRequestData = new HttpRequestData();

HashMap params = new HashMap<>();

params.put("grant_type", "client_credentials");

params.put("client_id", "你的APIKey");

params.put("client_secret", "SecretKey");

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、请求百度orc通用文字识别API(下面以百度通用识别api识别为例)

请求API的URL https://aip.baidubce.com/rest...

请求方法 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 headers = new HashMap<>();

headers.put("Content-Type", "application/x-www-form-urlencoded");

HashMap 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/ipP...

注:orc图片识别模块在这个项目里的一个工具类

我的公众号,喜欢的朋友可以关注哦

php orc 验证码,百度图片识别orc实现普通验证码识别相关推荐

  1. php验证码背景图是数字,ThinkPHP5.0.20验证码背景图片

    tp5配置验证码相关问题 一.验证码背景图片及tp中文验证码 5.0.1及以上支持者在应用配置目录(application)下面 extra 子目录内配置captcha.php文件: 配置参数如下: ...

  2. 12306验证码识别初尝试(3)——tesseract的长处与短处,使用百度文字识别与百度图片自动识别验证码并自动抢票,识别成功率10%

    12306验证码识别是我人生中"抢购"这一重大环节的第一步,所以我一定会把此环节写好,现在12306已经小小成功,接下来,我打算使用keras来深度学习解决12306抢票的问题,当 ...

  3. python 图片文字识别orc

    先下载tesseract.exe,安装,并配置其两个环境变量, 安装包下载地址: http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-set ...

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

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

  5. Java实现百度云OCR接口识别图片文字信息(也包含身份证,银行卡识别,更新添加通用票据识别)

    参考: https://blog.csdn.net/weixin_40165004/article/details/82632229 1.需求背景 因项目需求,需要提取身份证.发票(9/16更新内容) ...

  6. 利用百度AI开放平台识别干部培训网登录验证码

    先说能干啥能干啥,看视频. MyVideo_2 个人测试,百度AI平台验证码识别率还是很高的.下面是视频程序的源代码,欢迎跟大家进行交流. import datetime import json fr ...

  7. c# imager让图片有圆角unity_C# 10分钟完成百度图片提取文字(文字识别)——入门篇...

    现在图片文字识别已经很成熟了,比如qq长按图片,点击图片识别就可以识别图片的文字,将不认识的.文字数量大的.或者不能赋值的值进行二次可复制功能. 我们现在就基于百度Ai开放平台进行个人文字识别,dem ...

  8. 百度 图片文字识别 Python版本

    百度图片文字识别文档:https://cloud.baidu.com/doc/OCR/s/Sk3h7xyad 1. 创建应用 登录百度智能云,在产品服务/文字识别-概览下创建应用 2. 查看应用列表, ...

  9. 易语言python识别图片验证码_图片识别-打码平台-打码网站-识别验证码-图鉴网络科技有限公司...

    Android脚本 Import "Cjson.lua" Import "ttddm.lua" Import "ShanHai.lua" / ...

  10. Java爬取百度图片人脸识别下载高颜值小姐姐图片

    前言: 最近想下载一些比较好看的妹子图片,但又不想去网上一张张的看,于是就想通过爬取图片进行人脸识别下载. 1.首先:在爬取图片时,通过Java请求时会遇到百度安全认证机制,在这里可以模拟浏览器的请求 ...

最新文章

  1. ios - Push远程通知代码设置 DeviceToken
  2. boost::hana::take_front_c用法的测试程序
  3. WPF触屏Touch事件在嵌套控件中的响应问题
  4. 8天玩转并行开发——第三天 plinq的使用
  5. LeetCode 1568. 使陆地分离的最少天数(DFS)
  6. Android解析SVG
  7. 域外计算机访问域内共享,域外用户如何拥有让其他电脑加域或退域的权限
  8. python基础编程语法-Python编程入门——基础语法详解
  9. 安装nginx之前的组件
  10. C# 遍历DLL导出函数
  11. mysql迁移到数据盘
  12. 【2017-2018 ACM-ICPC, Central Europe Regional Contest (CERC 17)】Justified Jungle【树上思维题】
  13. php图文编辑,ThinkPHP整合百度Ueditor编辑器的图文教程
  14. 基于微信小程序+Java+Vue+MySQL的菜谱分享小程序
  15. 计算今天是本学期第几周
  16. pm9screw php,PHP使用Screw把源代码加密
  17. MFC程序阻止别的软件隐藏窗口,或拦截WM_SHOWWINDOW消息
  18. 无心剑中译伊玛·拉扎罗斯《新巨人·自由女神》
  19. 【将门创投】图像搜索的前世今生,让你买买买停不下来的淘宝是如何做到所拍即所得的?...
  20. 【科创人独家】爱因互动洪强宁:参与创业≠创业,融到钱的那晚我失眠了

热门文章

  1. JAVA 使用DateUtils对日期进行格式转换
  2. 2017-2018-2 20179209《网络攻防》第八周作业
  3. 对一个list进行乱序处理
  4. 分享一些免费的网站速度测试工具
  5. 信呼协同办公系统-存储型XSS漏洞
  6. Adobe Dreamweaver CS5和Photoshop CS5序列号
  7. Android Q - 设置默认输入法
  8. CUDA中的Warp Shuffle
  9. jquery动画顺序执行_深入理解jquery自定义动画animate()
  10. wincap的学习总结01