PaddleOCR系列-训练模型并部署android手机

本文详细介绍了如何训练PaddleOCR模型,并将其部署到Android手机上。首先,文章讲解了训练模型的步骤,然后在Android环境中,通过Android Studio、NDK、cmake等工具,将模型封装为独立Library,实现OCR功能。内容涵盖opencv和onnxruntime的版本选择与下载,以及编译和运行示例。
摘要由CSDN通过智能技术生成

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

源码下载
源码下载

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GeekPlusA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值