1. 训练paddleocr模型

,参考另一篇博客:PaddleOCR系列-基础知识

2. ocr模型部署安卓手机

总体说明

  1. 封装为独立的Library,可以编译为aar,作为模块来调用;
  2. Native层以C++编写;
  3. Demo App以Kotlin-JVM编写;
  4. Android版与其它版本不同,包含了几个应用场景,包括相册识别、摄像头识别、手机IMEI号识别、摄像头身份证识别这几个功能页面;
  5. opencv 3.4.15,使用了opencv-mobile的代码,编译脚本在script文件夹里;
  6. onnxruntime动态库 1.6.0(因为当前模型不支持高版本)
2.1 AndroidStudio 2021.2.1或以上;
2.2. NDK下载,在SDK Tools中下载,版本选最新版;
2.3. cmake 3.4.1或以上,最好是3.18.1,在SDK Tools中下载;
2.4. 使用模型

下载预训练模型:模型下载,请在这个文章中下载模型、项目、源代码
使用自己的模型:

  • det模型用于分割文字块,有两种模型(server和mobile),其中server体积大且较慢但效果好,mobile体积小且较快但效果差点。
  • cls模型用于检测文字方向,只有一种模型
  • rec模型用于文字识别,有两种模型(server和mobile),其中server体积大且较慢但效果好,mobile体积小且较快但效果差点。
ocr_success/OcrLibrary/src/main/assets
    ├── ch_ppocr_mobile_v2.0_cls_infer.onnx
    ├── ch_PP-OCRv2_det_infer.onnx det二选一,推荐
    ├── ch_ppocr_server_v2.0_det_infer.onnx det二选一
    ├── ch_ppocr_mobile_v2.0_rec_infer.onnx rec二选一,推荐
    ├── ch_ppocr_server_v2.0_rec_infer.onnx rec二选一
    └── ppocr_keys_v1.txt
  • 代码中配置使用哪个模型
    ocr/OcrLibrary/src/main/java/com/benjaminwan/ocrlibrary/OcrEngine.kt,在init方法中配置:
val ret = init(
            context.assets, numThread,
            "ch_PP-OCRv2_det_infer.onnx",
            "ch_ppocr_mobile_v2.0_cls_infer.onnx",
            "ch_ppocr_mobile_v2.0_rec_infer.onnx",
            "ppocr_keys_v1.txt"
        )
2.5. 下载opencv-mobile-3.4.15-android.7z

下载地址,请在这个文章中下载模型、项目、源代码, 解压后目录结构为

ocr_success/OcrLibrary/src/sdk
    └── native
        ├── jni
        └── staticlibs
2.6. 下载onnxruntime-1.6.0-android.7z

下载地址,请在这个文章中下载模型、项目、源代码

  • 解压后目录结构为
ocr_success/OcrLibrary/src/main/onnx
├── ONNXConfig.cmake
├── arm64-v8a
│   └── libonnxruntime.so
├── armeabi-v7a
│   └── libonnxruntime.so
├── include
├── x86
│   └── libonnxruntime.so
└── x86_64
    └── libonnxruntime.so
2.7. 编译
  • 编译Release包
  • mac/linux使用命令编译./gradlew assembleRelease
  • win使用命令编译gradlew.bat assembleRelease
  • 输出apk文件在app/build/outputs/apk
2.8. 重新编译

删除项目根目录下的如下缓存文件夹

.idea
build
app/build
OcrLibrary/.cxx
OcrLibrary/build
2.9. demo界面效果

main
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


下面为测试效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 源码下载

3.1. 项目源代码结构

在这里插入图片描述

ocr_success
    ├── app               # demo app
    ├── capture           # 截图
    ├── common-aar        # app引用的aar库
    ├── keystore          # app签名密钥文件
    ├── OcrLibrary        # Ocr引擎库,包含Jni和C++代码
    └── scripts           # 编译脚本

源码下载
下载:,请在这个文章中下载模型、项目、源代码

GitHub 加速计划 / pa / PaddleOCR
41.52 K
7.59 K
下载
Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)
最近提交(Master分支:2 个月前 )
169ff4f0 17 小时前
93824f07 * update docs for release * update 21 小时前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐