在做接口自动化以及爬虫的过程中,验证码一般是个很烦的存在,其实大厂们已经做好了一些 OCR 供使用,这里介绍一下百度 OCR 的使用方法。

注册并生成应用

1、注册一个百度智能云账号:http://ai.baidu.com/tech/ocr

2、创建一个自己的应用,分类随便选,名字随便起,重要的是需要这三个小东东:

App ID

Api Key

Secret Key

3、注册完成后,在“应用列表”内可以找到自己能使用的  API ,截止这篇博客时间为止,还是可以使用过的。高精度的版本是每天恶意免费使用 500 次,普通版本是 5000 次,对于做自动化来讲,是绝对够了。

使用 OCR

SDK 方式

代码其实不用自己写,百度提供好了技术文档,有 py,java,php 等等

地址:http://ai.baidu.com/docs#/OCR-Python-SDK/top

使用 sdk 的话,以 python 为例:直接 pip install baidu-aip 即可,就可以调用该模块

代码示例(图片在本地的形式):

#创建AipOcr
from aip import AipOcr """ 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key' client = AipOcr(APP_ID, API_KEY, SECRET_KEY) #文字识别高精度版本 """ 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read() image = get_file_content('example.jpg') """ 调用通用文字识别(高精度版) """
client.basicAccurate(image); """ 如果有可选参数 """
options = {}
options["detect_direction"] = "true"
options["probability"] = "true" """ 带参数调用通用文字识别(高精度版) """
client.basicAccurate(image, options)

代码示例(图片为 url 的形式):

#创建AipOcr
from aip import AipOcr """ 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key' client = AipOcr(APP_ID, API_KEY, SECRET_KEY) #文字识别高精度版本 """ 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read() image = get_file_content('example.jpg') """ 调用通用文字识别(含位置高精度版) """
client.accurate(image); """ 如果有可选参数 """
options = {}
options["recognize_granularity"] = "big"
options["detect_direction"] = "true"
options["vertexes_location"] = "true"
options["probability"] = "true" """ 带参数调用通用文字识别(含位置高精度版) """
client.accurate(image, options)

接口文档:https://ai.baidu.com/docs#/OCR-Python-SDK/top

API 方式

http://ai.baidu.com/docs#/OCR-API-AccurateBasic/top

如果你想在 jmeter/Postman 里面使用,当然也是可以的,这里的方式是将图片存到本地的方式,怎么通过 url 转还没发现。

主要是按通过鉴权,然后调用相关的 api 接口,就能返回验证码的数据,鉴权也是调用一个接口做关联即可。

接口文档如下:

接口描述

用户向服务请求识别某张图中的所有文字,相对于通用文字识别该产品精度更高,但是识别耗时会稍长。

请求说明

请求示例

HTTP 方法:POST

请求URL: https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic

URL参数:

参数
access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

Header如下:

参数
Content-Type application/x-www-form-urlencoded

Body中放置请求参数,参数详情如下:

请求参数

参数 是否必选 类型 可选值范围 说明
image true string - 图像数据,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/jpeg/png/bmp格式
detect_direction false string true、false 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:
- true:检测朝向;
- false:不检测朝向。
probability false string true、false 是否返回识别结果中每一行的置信度

请求代码示例

请参考通用文字识别(含位置信息版)的代码内容,并更换请求地址。

返回说明

返回参数

字段 是否必选 类型 说明
log_id uint64 唯一的log id,用于问题定位
direction int32 图像方向,当detect_direction=true时存在。
- -1:未定义,
- 0:正向,
- 1: 逆时针90度,
- 2:逆时针180度,
- 3:逆时针270度
words_result array() 识别结果数组
words_result_num uint32 识别结果数,表示words_result的元素个数
+words string 识别结果字符串
probability float 识别结果中每一行的置信度值,包含average:行置信度平均值,variance:行置信度方差,min:行置信度最小值

过程:

关于 api 的实现方式,我们用 jmeter 来举例子:

1、先调用鉴权接口,生成 access_token 关联到识别接口的 url 内;

2、识别接口的 header 要指定:

Content-Type=application/x-www-form-urlencoded

3、关于识别接口,需要的消息体的参数做以下转换:将图片转成 base 64 位编码;再将编码 urlencode

实现方式:

beansell 脚本——待补充

通过在线工具将图片上传(该步骤其实也可以 jmeter 实现,有时间找一个不坑的网站),生成 base64 位编码,如果生成的编码有头再将编码去掉头(有些网站在编码前面会加上 data:image/jpeg;base64, 这一部分是要去除的),再将剩余的部分放进 image 的 value 值里面,同时勾选上 "编码" ,这一步其实就是 urlencode 了,发送过去看返回结果:

{
"log_id": ,
"words_result": [
{
"words": "4F4T9"
}
],
"words_result_num":
}

发现确实返回了要的结果,大功告成

验证码识别的免费 OCR的更多相关文章

  1. ocr智能图文识别 tess4j 图文,验证码识别 分享及所遇到的问题

    自己对tess4j的使用总结 1,tess4j 封装了 tesseract-ocr 的操作 可以用很简洁的几行代码就实现原本tesseract-ocr 复杂的实现逻辑 如果你也想了解tesseract ...

  2. ocr智能图文识别 tess4j 图文,验证码识别

    最近写爬虫采集数据,遇到网站登录需要验证码校验,想了想有两种解决办法 1,利用htmlunit,将验证码输入到swing中,并弹出一个输入框,手动输入验证码,这种实现方式,如果网站需要登录一次可以使用 ...

  3. Mac python Tesseract 验证码识别

    Tesseract 简介 Tesseract(/'tesərækt/) 这个词的意思是"超立方体",指的是几何学里的四维标准方体,又称"正八胞体".不过这里要讲 ...

  4. windows下简单验证码识别——完美验证码识别系统

    此文已由作者徐迪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 讲到验证码识别,大家第一个可能想到tesseract.诚然,对于OCR而言,tesseract确实很强大,自带 ...

  5. 百度 验证码识别API 使用

    先到百度云申请文字识别API ,会给你一个API KEY和一个SECRET KEY,免费,一天最多500次请求. try: temp_url = 'https://aip.baidubce.com/o ...

  6. captcha-killer burp验证码识别插件体验

    0x01 使用背景 在渗透测试和src挖洞碰到验证码不可绕过时,就会需要对存在验证码的登录表单进行爆破,以前一直使用PKav HTTP Fuzzer和伏羲验证码识别来爆破,但是两者都有缺点PKav H ...

  7. 【爬虫系列】1. 无事,Python验证码识别入门

    最近在导入某站数据(正经需求),看到他们的登录需要验证码, 本来并不想折腾的,然而Cookie有效期只有一天. 已经收到了几次夜间报警推送之后,实在忍不住. 得嘞,还是得研究下模拟登录. 于是,秃头了 ...

  8. 字符型图片验证码识别完整过程及Python实现

    字符型图片验证码识别完整过程及Python实现 1   摘要 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越 ...

  9. 利用开源程序(ImageMagick+tesseract-ocr)实现图像验证码识别

    --------------------------------------------------低调的分割线-------------------------------------------- ...

随机推荐

  1. Mac地址转换成long长整型

    Mac地址转换成long长整型 using System;using System.Collections.Generic;using System.IO;using System.Text;usin ...

  2. VUE el-input正则验证

    ①只能输入大于0的整数 check(value) { let reg = /^[-]\d*$/; var _this = this; if (value) { if (new RegExp(reg). ...

  3. vue页面刷新重定向

    在App.vue中,添加如下代码: created(){ if(this.$router.path !== '/RealTimeMonitoring'){ this.$router.replace(' ...

  4. spring cloud+.net core搭建微服务架构

    http://www.cnblogs.com/longxianghui/p/7800316.html

  5. 123457123456#0#-----com.threeapp.ErTongPaint01-----儿童宝宝绘画涂鸦游戏02

    com.threeapp.ErTongPaint01-----儿童宝宝绘画涂鸦游戏02

  6. python基础之模块(一)

    概述 模块,用一砣代码实现了某个功能的代码集合.一个功能可能由 N 个函数来组成,这些函数写到一个py文件中,那么这个Py文件就是传说中的模块. 模块可将代码归类,让你的代码看着条理清晰,当然还需要你 ...

  7. centos6.8下配置vsftp

    几个小时的调试 终于OK了 以下配置就算开了selinux 也照样能正常上传 注意 默认的上传目录 在 /home/用户名目录 如果不能下载文件 设置下文件的权限 一.安装VSFTP # yum -y ...

  8. Linux - Linux命令行常用快捷键

    Common Shortcut Key 用途 快捷键 说明 光标移动 Ctrl + a 把光标移到行首 Ctrl + e 把光标移到行尾 Ctrl + x 在 EOL 和当前位置移动光标 输入编辑 C ...

  9. WordPress获取特色图像的链接地址

    为什么要获取WordPress的特色图像呢? 这主要是因为,我们已经写好了静态模板文件,只有获取WordPress特色图像地址插入进去就可以了,非常方便. 还有就是有的时候,我们需要设置图片的宽度为1 ...

  10. 【c# 学习笔记】所有类的父类:System.object

    在c#中,所有的类都派生自System.Object类.如果定义的类,没有直达任何基类,编译器就会自动把Object类当作它的基类.和其他类 一样,System.Object类也定义了一组共有的成员, ...