常见问题

(1) 概念解释
身份证识别服务:自动定位并识别身份证中的文字信息,返回对身份证的识别结果,包含身份证中包含的姓名、民族和生日等主要信息。
(2) 说明
Hi,您好,欢迎使用有道智云身份证识别服务 Android SDK。如果您想快速体验服务,建议您前往体验中心或者搜索小程序(有道智云体验中心)进行试用。
本文档主要针对需要集成身份证识别服务 Android SDK的开发工程师,详细描述有道身份证识别服务的能力及集成过程。
如果您有与我们商务合作的需求,可以通过一下方式联系我们:
商务邮箱: AIcloud_Business@corp.youdao.com
如果您对文档内容有任何疑问,可以通过以下几种方式联系我们:
客服QQ:1906538062
智云OCR技术交流QQ 1群: 654064748
智云OCR技术交流QQ 2群: 471638046
联系邮箱: zhiyun@corp.youdao.com
温馨提示:
本文档主要针对开发人员,接入测试前需要在后台创建Android应用,并创建文字识别OCR中的身份证识别实例后,将应用和该实例进行绑定;如果您还没有,请按照新手指南操作。
平台向每个账户赠送50元的体验金,供用户集成前测试所用,具体资费规则详见身份证识别服务报价。
身份证识别 SDK是对有道身份证识别服务进行封装,支持对身份证的识别。提供快速的接入方式;同时提供数据统计能力,方便了解用户使用情况。
支持设备:运行了 Android 4.0.3以及以上系统的 Android 设备
开始集成SDK之前开发者需要登录有道智云平台 (http://ai.youdao.com),创建应用获取应用ID(或者通过运营人员获取应用ID),以便使用身份证识别服务。
(1) SDK包导入
请在工程文件根目录下创建一个名为 libs 的子目录(有的话则不需要创建),并将YoudaoBase.jar和YoudaoTableRecognize.jar以及 so 文件拷贝到 libs 目录下,并将以下代码添加到app的build.gradle中:
dependencies {
compile files('libs/YoudaoBase_v2.0.0.jar')
compile files('libs/YoudaoOCRStructure_v2.0.0.jar')
}
添加so文件:在模块的配置文件中增加jni配置
sourceSets.main.jniLibs.srcDirs = ['libs']
(2) AndroidManifest配置
<uses-permission android:name="android.permission.INTERNET" />
<!-- 获取WiFi状态 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 获取网络信息状态,如当前的网络连接是否有效 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 往SDCard读写数据权限 storage group -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
(3)代码混淆配置
代码混淆文件proguard-project.txt,添加如下内容:
-ignorewarnings
-libraryjars libs/YoudaoBase_v2.0.0.jar
-libraryjars libs/YoudaoOCRStructure_v2.0.0.jar
-keep class com.youdao.sdk.ydtranslate.** { ;}
-keep class com.youdao.yd_ocr_structure.* { *;}
(4) SDK初始化
使用之前请在程序的Application中调用SDK初始化代码,可以参考demo中DemoApplication。
YouDaoApplication.init(this, appkey);
说明:请参考 yd_ocr_structure_demo 中 OCRStructureActivity 的使用
(1) 参数说明
structureType:idcard 为身份证识别服务
输入图片格式支持:jpg/png
输入图片尺寸限制:3MB以下
输入图片数据:需要转换为Base64编码。
(2) 构造身份证识别参数对象
//识别对象
OCRStructure.getInstance(new OCRStructureParameters
.Builder()
.docType("json")
.type(OCRStructureParameters.TYPE_BASE64)
.structureType("idcard")
.build())
.recognize(base64Data, new OCRStructureListener()
(3) 设置回调和开始识别
通过ImageLatexRecognizer,设置上一步构造的参数对象,调用recognize方法传入图片base64编码的数据和回调接口开始查询
识别回调接口包含两个方法:onResult表示识别成功,结果将以String的形式将json数据返回,onError表示失败,失败信息以错误码的形式给用户。
注意:整个识别是异步的,回调在子线程进行,若涉及到界面操作,请切回主线程。
//开始识别
OCRStructure.getInstance(new OCRStructureParameters
.Builder()
.docType("json")
.type(OCRStructureParameters.TYPE_BASE64)
.structureType("idcard")
.build())
.recognize(base64Data, new OCRStructureListener() {
@Override
public void onError(final int errorCode) {
handler.post(new Runnable() {
@Override
public void run() {
resultText.setText("识别失败 " + OCRStructureErrorCode.getErrorString(errorCode));
YouDaoLog.w("TableRecognize onError,errorCode = " + errorCode);
}
});
}
@Override
public void onResult(final String resultJson, final String input) {
handler.post(new Runnable() {
@Override
public void run() {
resultText.setText("识别完成");
YouDaoLog.w("TableRecognize onResult,result = " + resultJson);
showResult(resultJson);
}
});
}
});
其中LatexResult是对json结果的封装。result中json字段如下所示:
{
"errorCode": "0",
"Result": {
"Store": "商店名称",
"Date": "20190725",
"Total_Amount": "100.00"
//“errormsg”: "" 识别失败原因,完成识别但是没有识别到指定内容时存在
}
}
错误码 | 含义 |
---|---|
101 | 缺少必填的参数 |
102 | 不支持的语言类型 |
103 | 请求文本过长 |
104 | 不支持的API类型 |
105 | 不支持的签名类型 |
106 | 不支持的响应类型 |
107 | 不支持的传输加密类型 |
108 | appKey无效 |
109 | batchLog格式不正确 |
110 | 无相关服务的有效实例 |
111 | 用户无效 |
112 | 请求服务无效 |
113 | 请求文本不能为空 |
114 | 不支持的图片传输方式 |
201 | 解密失败 |
202 | 签名检验失败 |
203 | 访问IP地址不在可访问IP列表 |
205 | 请求的接口与应用的平台类型不一致 |
206 | 时间戳无效 |
207 | 重放请求 |
301 | 词典查询失败 |
302 | 小语种翻译失败 |
303 | 服务的异常 |
401 | 账户已经欠费停止 |
402 | offlinesdk不可用 |
411 | 访问频率受限,请稍后访问 |
412 | 超过最大请求字符数 |
17001 | 需要图片 |
17002 | 图片过大(3M) |
17003 | 识别类型未找到 |
17004 | 不支持的识别类型 |
17005 | 服务调用失败 |
应用没有绑定服务实例,可以新建服务实例,绑定服务实例。
appKey无效,注册账号, 登录后台创建应用和实例并完成绑定, 可获得应用ID和密钥等信息,其中应用ID就是appKey( 注意不是应用密钥)。
首先确保必填参数齐全,然后,确认参数书写是否正确。
如果确认 appKey
和 appSecret
的正确性,仍返回202,一般是编码问题。请确保 q
为UTF-8编码。
上线日期 | 版本号 | 更新内容 |
---|---|---|
2019.08.19 | v1.0.0 | 有道身份证识别 Android SDK |
2019.11.07 | v2.0.0 | 兼容多个sdk同时使用 |