首先,想要使用ocr识别,是要成为百度云的开发者。

第一步:

java 图片朝向 检验身份证 java ocr身份证识别_java 图片朝向 检验身份证

 成为开发者之后,接下来去管理控制台找到文字识别。

java 图片朝向 检验身份证 java ocr身份证识别_java_02

 然后在应用列表创建应用:身份证识别获取到对应API Key与Secret Key(重要的一步)。

 

java 图片朝向 检验身份证 java ocr身份证识别_上传_03

 上面几步操作都是为以下获取Token做的铺垫。

  • 获取AccessToken

博主成功案例,图片下方附上url,参数介绍

java 图片朝向 检验身份证 java ocr身份证识别_java_04

 

接口说明

向授权服务地址 https://aip.baidubce.com/oauth/2.0/token 发送请求(推荐使用POST)。

请求URI

POST /oauth/2.0/token

参数名称

参数类型

是否必须

描述

示例值

参数位置

grant_type

String


client_credentials

Query

client_id

String


Va***********uXV4

Query

client_secret

String


0r******************pVw2

Query

 grant_type填写表格对应的示例值,client_id对应你刚才创建应用里的API Key,client_secret对应Secret Key。

到这里完成重要的一步,获取到自己的Access Token。

身份证识别接口描述:

支持对二代居民身份证正反面所有8个字段进行结构化识别,包括姓名、性别、民族、出生日期、住址、身份证号、签发机关、有效期限,识别准确率超过99%;同时支持身份证正面头像检测,并返回头像切片的base64编码及位置信息。

同时,支持对用户上传的身份证图片进行图像质量和风险检测,是否存在正反颠倒、模糊、欠曝、过曝等质量问题,可识别图片是否为复印件或临时身份证,是否被翻拍或编辑,是否存在四角不完整、头像或关键字段被遮挡。

请求URI

POST /rest/2.0/ocr/v1/idcard

参数名称

参数类型

是否必须

描述

示例值

参数位置

access_token

String


通过API Key和Secret Key获取的access_token。

24.6c5e1ff107f0e8bcef8c46d3424a0e78.2592000.1485516651.282335-8574074

Query

请求头参数

参数名称

参数类型

是否必须

描述

示例值

Content-Type

String


请求体的编码格式

application/x-www-form-urlencoded

 

package com.stx.controller;

/**
 * @Author author
 * @Date 2022/7/11/0011 15:04
 */
import com.baidubce.http.ApiExplorerClient;
import com.baidubce.http.HttpMethodName;
import com.baidubce.model.ApiExplorerRequest;
import com.baidubce.model.ApiExplorerResponse;

// 身份证识别 示例代码
public class IdCardDemo {
    public static void main(String[] args) {
        String path = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard";
        ApiExplorerRequest request = new ApiExplorerRequest(HttpMethodName.POST, path);

        // 设置header参数
        request.addHeaderParameter("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");

        // 设置query参数
        request.addQueryParameter("access_token", "上面获取到的Access Token");

        // 设置jsonBody参数
        String jsonBody = "url=https://baidu-ai.bj.bcebos.com/ocr/idcard.jpeg&id_card_side=front";
        request.setJsonBody(jsonBody);

        ApiExplorerClient client = new ApiExplorerClient();

        try {
            ApiExplorerResponse response = client.sendRequest(request);
            // 返回结果格式为Json字符串
            System.out.println(response.getResult());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 然后你会发现返回值是error_code:18,error_message:Open api qps request limit reached

 看到自己响应结果可以对照下面的错误码,来一一解决。

错误码

错误码

错误描述

HTTP状态码

中文解释

1

Unknown error

200

服务器内部错误,请再次请求,如果持续出现此类错误,请在控制台提交工单联系技术支持团队

2

Service temporarily unavailable

200

服务暂不可用,请再次请求,如果持续出现此类错误,请在控制台提交工单联系技术支持团队

3

Unsupported openapi method

200

调用的API不存在,请检查请求URL后重新尝试,一般为URL中有非英文字符,如"-",可手动输入重试

4

Open api request limit reached

200

集群超限额,请再次请求,如果持续出现此类错误,请在控制台提交工单联系技术支持团队

6

No permission to access data

200

无权限访问该用户数据,创建应用时未勾选相关文字识别接口,请登录百度云控制台,找到对应的应用,编辑应用,勾选上相关接口后重新调用

14

IAM Certification failed

200

IAM鉴权失败,建议用户参照文档自查生成sign的方式是否正确,或换用控制台中ak sk的方式调用

17

Open api daily request limit reached

200

免费测试资源使用完毕,每天请求量超限额,已支持计费的接口,您可以在控制台文字识别服务选择购买相关接口的次数包或开通按量后付费;邀测和未支持计费的接口,您可以在控制台提交工单申请提升限额

18

Open api qps request limit reached

200

QPS超限额,免费额度并发限制为2QPS,开通按量后付费或购买次数包后并发限制为10QPS,如您需要更多的并发量,可以选择购买QPS叠加包;邀测和未支持计费的接口,您可以在控制台提交工单申请提升限额

19

Open api total request limit reached

200

请求总量超限额,已支持计费的接口,您可以在控制台文字识别服务选择购买相关接口的次数包或开通按量后付费;邀测和未支持计费的接口,您可以在控制台提交工单申请提升限额

100

Invalid parameter

200

无效的access_token参数,token拉取失败,您可以参考“Access Token获取”文档重新获取

110

Access token invalid or no longer valid

200

access_token无效,token有效期为30天,请注意需要定期更换,也可以每次请求都拉取新token

111

Access token expired

200

access token过期,token有效期为30天,请注意需要定期更换,也可以每次请求都拉取新token

216100

invalid param

200

请求中包含非法参数,请检查后重新尝试

216101

not enough param

200

缺少必须的参数,请检查参数是否有遗漏

216102

service not support

200

请求了不支持的服务,请检查调用的url

216103

param too long

200

请求中某些参数过长,请检查后重新尝试

216110

appid not exist

200

appid不存在,请重新核对信息是否为后台应用列表中的appid

216200

empty image

200

图片为空,请检查后重新尝试

216201

image format error

200

上传的图片格式错误,现阶段我们支持的图片格式为:PNG、JPG、JPEG、BMP,请进行转码或更换图片

216202

image size error

200

上传的图片大小错误,现阶段我们支持的图片大小为:base64编码后小于4M,分辨率不高于4096*4096,请重新上传图片

216202

input oversize

200

上传的包体积过大,现阶段不支持 10M 或以上的数据包

216630

recognize error

200

识别错误,请再次请求,请确保图片中包含对应卡证票据

216631

recognize bank card error

200

识别银行卡错误,出现此问题的原因一般为:您上传的图片非银行卡正面,上传了异形卡的图片、上传的银行卡正面图片不完整或模糊

216633

recognize idcard error

200

识别身份证错误,出现此问题的原因一般为:您上传了非身份证图片、上传的身份证图片不完整或模糊

216634

detect error

200

检测错误,请再次请求,如果持续出现此类错误,请在控制台提交工单联系技术支持团队

282000

internal error

200

服务器内部错误,如果您使用的是高精度接口,报这个错误码的原因可能是您上传的图片中文字过多,识别超时导致的,建议您对图片进行切割后再识别,其他情况请再次请求, 如果持续出现此类错误,请在控制台提交工单联系技术支持团队

282003

missing parameters: {参数名}

200

请求参数缺失

282005

batch processing error

200

处理批量任务时发生部分或全部错误,请根据具体错误码排查

282006

batch task limit reached

200

批量任务处理数量超出限制,请将任务数量减少到10或10以下

282100

image transcode error

200

图片压缩转码错误

282102

target detect error

200

未检测到图片中识别目标,请确保图片中包含对应卡证票据,出现此问题的原因一般为:您上传了非卡证图片、图片不完整或模糊

282103

target recognize error

200

图片目标识别错误,请确保图片中包含对应卡证票据,出现此问题的原因一般为:您上传了非卡证图片、图片不完整或模糊

282110

urls not exit

200

URL参数不存在,请核对URL后再次提交

282111

url format illegal

200

URL格式非法,请检查url格式是否符合相应接口的入参要求

282112

url download timeout

200

url下载超时,请检查url对应的图床/图片无法下载或链路状况不好,或图片大小大于3M,或图片存在防盗链,您可以重新尝试一下,如果多次尝试后仍不行,建议更换图片地址

282113

url response invalid

200

URL返回无效参数

282114

url size error

200

URL长度超过1024字节或为0

282808

request id: xxxxx not exist

200

request id xxxxx 不存在

282809

result type error

200

返回结果请求错误(不属于excel或json)

282810

image recognize error

200

图像识别错误,请再次请求,如果持续出现此类错误,请在控制台提交工单联系技术支持团队

 我碰到的这个问题就是QPS值并发额度限制了,通俗来讲就是没交钱。

接下来 告诉你个白嫖办法,你就去刚才创建应用获取Key,那一块找到菜单上的概览。

java 图片朝向 检验身份证 java ocr身份证识别_上传_05

 这有一个领取免费资源,足够个人开发者测试用了,记得领完资源刷新一下接口网址,再次发送。 使用Java代码的不需要这步操作。

你会发现成功了,大功告成!完事。

java 图片朝向 检验身份证 java ocr身份证识别_java 图片朝向 检验身份证_06