注册
使用灵云的图像识别功能需要先在官网上进行注册应用。官网地址
注册比较简单,就不做过多介绍了,注册完应用以后,在后台创建自己的应用,创建完应用以后需要给应用开通对应的图像功能。
capKey说明:
- ocr.local.bankcard 本地银行卡识别功能
- ocr.local.template.v6 本地身份证识别功能
- ocr.local.bizcard.v6 本地名片识别功能
- ocr.local 本地文本图片识别功能
集成
下载灵云的Android版本图像识别功能,下载地址。
如果使用在线功能,下载对应的SDK,里面有jar包和so,就可以满足需求了。如果要使用离线的图像识别功能,还需要下载灵云资源文件
资源文件列表:
源码
灵云离线手写识别功能
需要加入的so和jar包有:
- libhci_curl.so
- libhci_sys.so
- libhci_sys_jni.so
- libhci_hwr.so
- libhci_hwr_hwr_jni.so
- libhci_hwr_local_recog.so
- libletter.conf.so
- libletter.dic.so
需要使用的权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
加载配置类
package com.miao.util;
/**
* 灵云配置信息
* Created by 10048 on 2016/12/3.
*/
public class ConfigUtil {
/**
* 灵云APP_KEY
*/
public static final String APP_KEY = "c85d54f1";
/**
* 开发者密钥
*/
public static final String DEVELOPER_KEY = "712ddd892cf9163e6383aa169e0454e3";
/**
* 灵云云服务的接口地址
*/
public static final String CLOUD_URL = "test.api.hcicloud.com:8888";
/**
* 需要运行的灵云能力
*/
//云端多字识别功能
public static final String CAP_KEY_HWR_CLOUD_FREETALK = "hwr.cloud.freetalk";
//云端单字识别功能
public static final String CAP_KEY_HWR_CLOUD_LETTER = "hwr.cloud.letter";
//离线单字识别功能
public static final String CAP_KEY_HWR_LOCAL_LETTER = "hwr.local.letter";
//离线多字识别功能
public static final String CAP_KEY_HWR_LOCAL_FREESTYLUS = "hwr.local.freestylus";
//离线联想功能
public static final String CAP_KEY_HWR_LOCAL_ASSOCIATE_WORD = "hwr.local.associateword";
//离线笔形功能
public static final String CAP_KEY_HWR_LOCAL_PENSCRIPT = "hwr.local.penscript";
}
封装灵云系统的初始化功能
package com.example.sinovoice.util;
import android.content.Context;
import android.os.Environment;
import android.util.Log;
import com.sinovoice.hcicloudsdk.api.HciCloudSys;
import com.sinovoice.hcicloudsdk.common.AuthExpireTime;
import com.sinovoice.hcicloudsdk.common.HciErrorCode;
import com.sinovoice.hcicloudsdk.common.InitParam;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
/**
* Created by miaochangchun on 2016/11/28.
*/
public class HciCloudSysHelper {
private static final String TAG = HciCloudSysHelper.class.getSimpleName();
private static HciCloudSysHelper mHciCloudSysHelper = null;
private HciCloudSysHelper(){
}
public static HciCloudSysHelper getInstance() {
if (mHciCloudSysHelper == null) {
return new HciCloudSysHelper();
}
return mHciCloudSysHelper;
}
/**
* 初始化函数
* @param context
* @return
*/
public int init(Context context){
//配置串参数
String strConfig = getInitParam(context);
int errCode = HciCloudSys.hciInit(strConfig, context);
if (errCode != HciErrorCode.HCI_ERR_NONE){
Log.e(TAG, "hciInit Failed and return errcode = " + errCode);
return errCode;
}
errCode = checkAuthAndUpdateAuth();
if (errCode != HciErrorCode.HCI_ERR_NONE) {
Log.e(TAG, "checkAuthAndUpdateAuth Failed and return errcode = " + errCode);
return errCode;
}
return HciErrorCode.HCI_ERR_NONE;
}
/**
* 获取授权
* @return
*/
private int checkAuthAndUpdateAuth() {
// 获取系统授权到期时间
AuthExpireTime objExpireTime = new AuthExpireTime();
int initResult = HciCloudSys.hciGetAuthExpireTime(objExpireTime);
if (initResult == HciErrorCode.HCI_ERR_NONE) {
// 显示授权日期,如用户不需要关注该值,此处代码可忽略