赞
踩
解决方法:使用Java8 201版本及以下的jdk创建签名
下载地址:http://www.codebaoku.com/jdk/jdk-oracle-jdk1-8.html#jdk8u201
生成签名代码:keytool -genkeypair -v -keystore D:\key.jks -storetype PKCS12 -keyalg RSA -keysize 2048 -validity 9125 -alias your_key_alias -storepass your_keystore_password -keypass your_key_password
“D:\key.jks”替换成你存储的位置
“your_keystore_password”和“your_key_password”替换成你自己的密码
查看签名文件查看代码:
keytool -list -v -keystore your_keystore_filename.jks -storepass your_keystore_password
“your_keystore_password”替换成你上面设置的密码
1、gradle引入库文件
implementation files('libs/ocrsdk.aar')
2、引入文件,不能改名字
3.封装的java类文件,可直接使用
public class BaiDuOCR { private static final String TAG = "BaiDuOCR"; /** * 自定义license的文件路径和文件名称,以license文件方式初始化 */ public static void initAccessTokenLicenseFile(Context context) { OCR.getInstance(context.getApplicationContext()).initAccessToken(new OnResultListener<AccessToken>() { @Override public void onResult(AccessToken accessToken) { String token = accessToken.getAccessToken(); //Log.d(TAG,"百度ocr:"+token); } @Override public void onError(OCRError ocrError) { ocrError.printStackTrace(); Log.e(TAG, "自定义文件路径licence方式获取token失败"+ocrError.getMessage()); } }, "aip-ocr.license", context.getApplicationContext()); } /** * 标准版文字识别方法 * @param ctx * @param bitmap * @param listener */ public static void recGeneralBasic(Context ctx, Bitmap bitmap, final OCRServiceListener listener) { File file = bitmapToFile(bitmap); GeneralBasicParams param = new GeneralBasicParams(); param.setDetectDirection(true); param.setImageFile(file); OCR.getInstance(ctx).recognizeGeneralBasic(param, new OnResultListener<GeneralResult>() { @Override public void onResult(GeneralResult result) { ArrayList<String> values = new ArrayList<>(); for (WordSimple wordSimple : result.getWordList()) { String word = wordSimple.getWords(); values.add(word); } listener.onResult(values); } @Override public void onError(OCRError error) { listener.onError(error.getMessage()); } }); } /** * 位图转临时文件 * @param bitmap * @return */ public static File bitmapToFile(Bitmap bitmap) { // 创建一个临时文件 File file = new File(Environment.getExternalStorageDirectory(), "temp_image.jpg"); try { // 创建输出流 FileOutputStream out = new FileOutputStream(file); // 将 Bitmap 压缩为 JPEG 格式,可以根据需要修改格式 bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); // 关闭输出流 out.flush(); out.close(); return file; } catch (IOException e) { e.printStackTrace(); return null; } } }
4、回调函数
public interface OCRServiceListener {
void onResult(ArrayList<String> values);
void onError(String result);
}
5、调用代码:
//在onCreate中初始化
BaiDuOCR.initAccessTokenLicenseFile(this);
//在合适的地方开始调用,不需要在子线程中调用,也可以在子线程中使用
BaiDuOCR.recGeneralBasic(this, bitmap, new OCRServiceListener() {
@Override
public void onResult(ArrayList<String> values) {
}
@Override
public void onError(String result) {
Log.e(TAG, "onError: "+ result);
}
});
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。