当前位置:   article > 正文

RapidOcr-Onnxruntime实现离线文字识别

rapidocr

最近新项目有个需求:要对机器上的机器码进行识别功能,而且准确率要高达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);
  1. private void detectResult(Bitmap img) {
  2. OcrEngine ocrEngine = MyApplication.getOcrEngine();
  3. Bitmap boxImg = Bitmap.createBitmap(
  4. img.getWidth(), img.getHeight(), Bitmap.Config.ARGB_8888
  5. );
  6. OcrResult detect = ocrEngine.detect(img, boxImg, 0);
  7. if (!TextUtils.isEmpty(detect.getStrRes())){
  8. code_str= detect.getStrRes();
  9. showCodetipDialog();
  10. }else {
  11. ToastUtils.showShort("无识别结果");
  12. }
  13. KLog.e("************识别结果******************"+detect.getStrRes());

通过拍照来获取:

  1. OcrEngine ocrEngine = MyApplication.getOcrEngine();
  2. Bitmap img = cameraLensView.cropCameraLensRectBitmap(viewFinder.getBitmap(), false);
  3. Bitmap boxImg = Bitmap.createBitmap(
  4. img.getWidth(), img.getHeight(), Bitmap.Config.ARGB_8888
  5. );
  6. 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

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号