当前位置:   article > 正文

百度智能云文字识别使用问题解决合集_百度ocr 车牌 sdk md5 需要32位的

百度ocr 车牌 sdk md5 需要32位的

1.创建试用程序时需要16位的签名MD5

解决方法:使用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')
  • 1

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;
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74

4、回调函数

public interface OCRServiceListener {
    void onResult(ArrayList<String> values);
    void onError(String result);
}
  • 1
  • 2
  • 3
  • 4

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);
                }
            });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/705230
推荐阅读
相关标签
  

闽ICP备14008679号