在爬取网站的时候都遇到过验证码,那么我们有什么方法让程序自动的识别验证码呢?其实网上已有很多打码平台,但是这些都是需要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 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 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/ipProxyPool

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

如何利用百度orc实现验证码自动识别

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

python爬虫&lowbar;简单使用百度OCR解析验证码

百度技术文档 首先要注册百度云账号: 在首页,找到图像识别,创建应用,选择相应的功能,创建 安装接口模块: pip install baidu-aip 简单识别一: 简单图形验证码: 图片: from ...

第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码

第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码 打码接口文件 # -*- coding: cp936 -*- import sys import os ...

利用百度文字识别API识别图像中的文字

本文将会介绍如何使用百度AI开放平台中的文字识别服务来识别图片中的文字.百度AI开放平台的访问网址为:http://ai.baidu.com/ ,为了能够使用该平台提供的AI服务,你需要事先注册一 ...

利用htmlunit登陆带验证码图片的网站

http://htsoft.org/html/y2011/822_using-htmlunit-landing-site-with-captcha-image.html 利用htmlunit登陆带验证 ...

Ocr答题辅助神器 OcrAnswerer4&period;x,通过百度OCR识别手机文字,支持屏幕窗口截图和ADB安卓截图,支持四十个直播App&comma;可保存题库

http://www.cnblogs.com/Charltsing/p/OcrAnswerer.html 联系qq:564955427 最新版为v4.1版,开放一定概率的八窗口体验功能,请截图体验(多 ...

百度OCR识别示例

文章地址:https://www.cnblogs.com/Charltsing/p/OcrAnswerer.html 最新版为v4.1版,开放一定概率的八窗口体验功能,请截图体验(多点几次图片).更新 ...

python截图&plus;百度ocr(图片识别)&plus; 百度翻译

一直想用python做一个截图并自动翻译的工具,恰好最近有时间就在网上找了资料,根据资料以及自己的理解做了一个简单的截图翻译工具.整理一下并把代码放在github给大家参考.界面用python自带的G ...

利用百度API Store接口进行火车票查询

火车票查询 项目源码下载链接: Github:https://github.com/VincentWYJ/TrainTicketQuery 博客文件:http://files.cnblogs.com/ ...

随机推荐

spring入门(一)

前面介绍了spring环境的搭建,在搭建spring环境的时候分为java环境和javaWeb环境,在javaWeb环境下通常会结合springMVC使用,在java项目中只需要把spring的包导入 ...

C语言进行面向对象编程

http://blog.csdn.net/dadalan/article/details/3983888 http://blog.163.com/zhqh43@126/blog/static/4043 ...

Linux进程基础

Linux进程基础   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 计算机实际上可以做的事情实质上非常简单,比如计算两个数的和 ...

combotree的加载方法

poj 3295 Tautology &lpar;构造&rpar;

题目:http://poj.org/problem?id=3295 题意:p,q,r,s,t,是五个二进制数. K,A,N,C,E,是五个运算符. K:&& A:||N:! C:(!w ...

ASP&period;NET中的FileUpload文件上传控件的使用

本篇文章教大家如何将客户端的图片或者文件上传到服务器: 无论是上传图片(.jpg .png .gif等等) 文档(word excel ppt 等等). 第一步:放入以下三个控件 Image控件,Fi ...

Asynchronous MQTT client library for C (MQTT异步客户端C语言库-paho)

原文:http://www.eclipse.org/paho/files/mqttdoc/MQTTAsync/html/index.html MQTT异步客户端C语言库   用于C的异步 MQTT 客 ...

Android 8&period;0系统的应用图标适配

版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 参考资料中已经讲得很清楚了,这里我只是简单总结下.详情的内容请阅 ...

初步接触ES6

Babel---ES6转码器 ES6 声明变量的六种方法 ES5 只有两种声明变量的方法:var命令和function命令. ES6除了添加let和const命令,另外两种声明变量的方法:import ...

POJO与PO、VO的区别

http://www.cnblogs.com/wangjunwei/p/3859360.html POCO的概念是从java的POJO借用而来,而两者的含义是一致的,不同的仅仅是使用的语言不一样.所以 ...

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

  1. 按键精灵使用百度文字识别(百度ocr)教程

    按键精灵通过实践,也可以接入百度的OCR,百度OCR免费额度为,每日50000次普通调用,对于日常应用已经足够,返回识别内容时间在1s以内(免费版有一秒内请求次数限制,不充钱也无法达到更短的时间).百 ...

  2. 按键精灵 百度文字识别(百度ocr)OCRSpace文字识别

    目录 1. 申请百度OCR服务 1.1. 百度OCR登录 1.2 创建新应用 1.3 免费领取次数 1.3 查看是否创建成功 2. 按键精灵运用百度OCR接口 2.1 通用文字识别(高精度版)文档 2 ...

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

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

  4. python代码示例百度云-python利用百度云接口实现车牌识别的示例

    一个小需求---实现车牌识别. 目前有两个想法 1. 调云在线的接口或者使用SDK做开发(配置环境和编译第三方库很麻烦,当然使用python可以避免这些问题) 2. 自己实现车牌识别算法(复杂) 一开 ...

  5. AI人工智能,OCR 识别技术图像处理 OCR文字识别软件

    清华文通th ocr是一款专业的文字识别软件.软件不仅在电脑上可以使用,还支持移动端iOS以及Andeoid系统,支持中英文拍照识别,但是,都是需要用户自行购买的. 文通TH-OCR SDK综合文字识 ...

  6. html验证码的原理,滑动验证码的原理并利用 Vue 实现滑动验证码

    做网络爬虫的同学肯定见过各种各样的验证码,比较高级的有滑动.点选等样式,看起来好像挺复杂的,但实际上它们的核心原理还是还是很清晰的,本文章大致说明下这些验证码的原理以及带大家实现一个滑动验证码. 我之 ...

  7. python3 ocr_python3 ocr 识别图片文字(CSDN验证码90%通过)

    [实例简介] 上次下载了个pytesser_v0.0.1,它是 python2的,我给改成python3的.并且做成子目录下的模块吧. 这样不显得目录乱. 放在开发目录下就能用了 ocr. impor ...

  8. java ocr 验证码_Ocrking图片识别之Java实现本地验证码的识别 | 学步园

    本实例代码为Java实现本地验证码的识别 依赖库为 httpclient-4.2 使用最新的库 需要修改部分代码 Author: niostars@gmail.com //构造一个httpclient ...

  9. php 开发百度聚合,php利用百度javascript API实现导航

    /** * 导航去门店 */ public function dpdh(){ // $userid = $this->init(); if ($_GET['id']) { $where['id' ...

最新文章

  1. python找人脚本_女朋友最近天天加班,用python写个定位脚本,直接抓到现场
  2. props写法_好程序员web前端培训React中事件的写法总结
  3. java为何是跨平台语言,以及java如何运行
  4. Lesson 13.4 Dead ReLU Problem与学习率优化
  5. oracle与raw device
  6. 漫步数学分析二——欧几里得空间
  7. 阿里云服务器18个数据中心测试IP地址以及测试方法
  8. linux下qemu共享文件夹,QEMU Windows来宾和Linux主机之间的共享文件夹
  9. Rob Pike:走进Go语言
  10. PowerShell Gallery .nupkg手动下载将.nupkg文件重命名为.zip,然后将内容提取到本地文件夹中
  11. 怎么利用电脑摄像头和上传图片读取扫描二维码内容
  12. 函数式编程对象Either
  13. java五子棋的报告_Java课程设计 - 五子棋(个人报告)
  14. 后端使用postman进行测试
  15. bilibili缓存文件在哪里_都9012了,听说你还不了解缓存?
  16. 【安卓】给ViewFlipper加指示器,类似ViewPagerIndicator库提供的那种、!
  17. 掩膜(mask)的学习总结
  18. AIGC发展路径思考:大模型工具化普及迎来新机遇
  19. 三菱PLC编程-MOV指令
  20. 视频异常行为检测网络

热门文章

  1. 我的Android进阶之旅------Android使用AlarmManager全局定时器实现定时更换壁纸
  2. 大众点评网站源码_与大众分享您的网站
  3. 2013 duilib入门简明教程 -- 完整的自绘标题栏(8)
  4. ubuntu找不到chkconfig命令
  5. 大连理工大学2021最优化方法大作业(3)
  6. C语言:用swich,case语句输出星期一到星期天的课表。
  7. 【甘道夫】MapReduce实现矩阵乘法--实现代码
  8. debug没问题,release有问题的情况
  9. keil4在C51中嵌入汇编语言,KEIL C51程序中如何嵌入汇编
  10. CF7C--Line翻译