码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • PaddleOCR系列-训练模型并部署android手机


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

      • @[TOC](PaddleOCR系列-训练模型并部署android手机)
        • 1. 训练paddleocr模型
        • 2. ocr模型部署安卓手机
          • 2.1 AndroidStudio 2021.2.1或以上;
          • 2.2. NDK下载,在SDK Tools中下载,版本选最新版;
          • 2.3. cmake 3.4.1或以上,最好是3.18.1,在SDK Tools中下载;
          • 2.4. 使用模型
          • 2.5. 下载opencv-mobile-3.4.15-android.7z
          • 2.6. 下载onnxruntime-1.6.0-android.7z
          • 2.7. 编译
          • 2.8. 重新编译
          • 2.9. demo界面效果
        • 3. 源码下载
          • 3.1. 项目源代码结构

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 代码中配置使用哪个模型
      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"
            )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2.5. 下载opencv-mobile-3.4.15-android.7z

    下载地址 解压后目录结构为

    ocr_success/OcrLibrary/src/sdk
        └── native
            ├── jni
            └── staticlibs
    
    • 1
    • 2
    • 3
    • 4

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.9. demo界面效果

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


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

    3. 源码下载

    3.1. 项目源代码结构

    在这里插入图片描述

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

    源码下载
    源码下载

  • 相关阅读:
    前端新宠 Svelte,呜呜,卷不动了
    【斗破年番】火火抱彩鳞把她整害羞啦!女王解锁新造型,身形丰满超有料
    Pandas
    SpringBoot 打包发布
    Vue2源码学习笔记 - 15.响应式原理—nextTick
    08-高性能表结构及索引设计最佳实践-05
    electron.js入门-为生产环境构建应用程序
    JUC——并发编程—第四部分
    linux系统使用达梦数据库
    【虹科案例】​使用虹科数字化仪测量遥远恒星的直径
  • 原文地址:https://blog.csdn.net/qq122716072/article/details/126244000
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号