31 Star 280 Fork 63

Monster / RapidOcr-Java

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
COMPILE_LIB.md 3.38 KB
一键复制 编辑 原始数据 按行查看 历史
Monster 提交于 2024-05-13 13:00 . docs: 更新传入二进制数据说明

如何自行编译JNI动态库?

环境准备

  • 编译使用的工具是CLion2023.1.5版本,工具链如下图,环境搭建请自行搜索解决

  • 系统版本为MacOS 14.0,芯片Apple M1

其他平台请参考编译说明,总体步骤是一样的,只是第4部分有区别

ONNX编译

1.下载项目

git clone https://github.com/RapidAI/RapidOcrOnnx

2.下载opencv

  • 下载地址

  • 按照自己的系统下载对应压缩包,windows平台分为mt和md版,mt代表静态链接CRT,md代表动态链接CRT

  • 把压缩包解压到opencv-static,目录结构如下所示

opencv-static
├── OpenCVWrapperConfig.cmake
├── linux
├── macos
├── windows-x64
└── windows-x86
  • 最后效果如下

3.下载onnxruntime

  • 下载地址

  • static为静态库,shared为动态库,一般情况下使用静态库即可

  • 把压缩包解压到onnxruntime-static,目录结构如下所示

onnxruntime-static
├── OnnxRuntimeWrapper.cmake
├── linux
├── macos
├── windows-x64
└── windows-x86
  • 最后效果如下

4.MacOS环境配置

  • macOS Catalina 10.15.x,安装Xcode>=12,并安装Xcode Command Line Tools, 终端运行xcode-select –install
  • 自行下载安装HomeBrew,cmake >=3.19下载地址
  • libomp: brew install libomp
  • 安装Java环境(自行搜索)

5.开始编译

  • 拉取的代码中,做出如下修改(Mac需要做出更改,如果你是其他系统,可能不需要,请根据实际报错信息仔细查看)
将下面的代码
#include <onnxruntime/core/session/onnxruntime_cxx_api.h>
改为
#include <onnxruntime/onnxruntime_cxx_api.h>
// 受影响的文件有: AngleNet.h  CrnnNet.h  DbNet.h  OcrLite.h. OcrUtils.h
  • 终端打开项目根目录,./build.sh并按照提示输入选项,最后选择'JNI动态库'
  • 测试:./run-test.sh(注意修改脚本内的目标图片路径)

编译结果如下图,其中libRapidOcrOnnx.dylib即为所需库文件

将其替换项目中的库文件即可(图片是旧版本,新版本的放到对应模块资源目录下)

NCNN编译

  • ncnn编译步骤同onnx编译类似,请参考编译说明,此处不再重复。

  • 编译结果如下:

去除动态库日志打印

在使用过程中,会发现会在控制台打印配置信息,而且没办法关闭

这是因为在RapidOnnx/RapidNcnn代码中添加了打印日志,所以需要修改源码,去除日志打印。

在CLion中,使用全局搜索:

例如搜索:printf("numThread=,找到相应代码注释掉,并重新打包即可

同理可搜索:printf("modelsDir= 等其他代码并注释掉

参考文章

Java
1
https://gitee.com/lc_monster/rapid-ocr-java.git
git@gitee.com:lc_monster/rapid-ocr-java.git
lc_monster
rapid-ocr-java
RapidOcr-Java
main

搜索帮助