RapidOcr-Onnxruntime实现离线文字识别

最近新项目有个需求:要对机器上的机器码进行识别功能,而且准确率要高达95%以上,第一反应是利用百度或其它文字识别API,但是客户想要离线使用,最后敲定了RapidOcr来实现:

使用的开发工具:

AndroidStudio 2021

cmake 3.18.1

ndk 25 

opencv 3.4.15 

gradle:7.0.2

首先要删除 lib库下的缓存等文件

.idea
build
app/build
OcrLibrary/.cxx
OcrLibrary/build

在Studio的Terminal中完成lib的编译    

./gradlew assembleRelease

如果编译失败建议检查cmake,ndk等相关工具是否已经安装,而且jdk最好是11版本

贴一下使用代码:从图库中选择图片来解析

Bitmap selectedImg = decodeUri(uri);
private void detectResult(Bitmap img) {
        OcrEngine ocrEngine = MyApplication.getOcrEngine();
        Bitmap boxImg = Bitmap.createBitmap(
                img.getWidth(), img.getHeight(), Bitmap.Config.ARGB_8888
        );
        OcrResult detect = ocrEngine.detect(img, boxImg, 0);

        if (!TextUtils.isEmpty(detect.getStrRes())){
            code_str= detect.getStrRes();
            showCodetipDialog();
        }else {
            ToastUtils.showShort("无识别结果");
        }
        KLog.e("************识别结果******************"+detect.getStrRes());

通过拍照来获取:

OcrEngine ocrEngine = MyApplication.getOcrEngine();

                Bitmap img = cameraLensView.cropCameraLensRectBitmap(viewFinder.getBitmap(), false);
                Bitmap boxImg = Bitmap.createBitmap(
                        img.getWidth(), img.getHeight(), Bitmap.Config.ARGB_8888
                );
                OcrResult detect = ocrEngine.detect(img, boxImg, 0);

建议下载代码后,先删除缓存,再如上进行编译。

ext.compile_sdk_version = 31
ext.min_sdk_version = 26
ext.target_sdk_version = 31
classpath 'com.android.tools.build:gradle:7.2.0'

感谢

GitHub - microsoft/onnxruntime: ONNX Runtime: cross-platform, high performance ML inferencing and training accelerator

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值