赞
踩
最近新项目有个需求:要对机器上的机器码进行识别功能,而且准确率要高达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'
感谢
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。