# RapidOcr-Java
![](./docs/img/line.png)
## 😺 项目起源
- 现有的JavaOCR工具包识别效果差强人意,[PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)在实现前沿算法的基础上,考虑精度与速度的平衡,进行模型瘦身和深度优化,使其尽可能满足产业落地需求。
- PaddleOCR官方并未提供Java版本,而[RapidOcr](https://github.com/RapidAI/RapidOCR)解决了这个问题,其提供了Kotlin和Java混合版本的[Demo-onnx](https://github.com/RapidAI/RapidOcrOnnxJvm)和[Demo-ncnn](https://github.com/RapidAI/RapidOcrNcnnJvm)
- 而实际使用过程中 项目中并**不想再引入Kotlin、不想了解OCR相关知识,开箱即用、不想额外再部署OCR服务**
因此本项目将Kotlin部分移除,并在此基础上加以完善且提供了更友好的的调用方法,更方便java开发者直接进行使用。
> ✨如果该项目对您有帮助,您的star是我不断优化的动力!!!
>
> - [github点击前往](https://github.com/MyMonsterCat/RapidOcr-Java)
> - [gitee点击前往](https://gitee.com/lc_monster/rapid-ocr-java)
## 👏 项目特点
- 纯Java代码调用RapidOcr
- 集成ncnn和onnx推理引擎方式
- 均使用CPU版本,GPU版本请自行编译
- 支持Mac、Windows、Linux等多平台,详细支持的系统请查看[版本说明](./docs/ADVANCED.md)
## 🎉 快速开始
项目提供了[JavaEE](https://github.com/MyMonsterCat/rapidocr-demo/tree/main/java-ee) 和 [SpringBoot](https://github.com/MyMonsterCat/rapidocr-demo/tree/main/spring-boot) 的使用Demo,仅作参考(可以拉取下来运行试一下)
### 1️⃣ 添加依赖
此种方式会根据你使用的系统自动使用对应的jar包,目前支持的系统请查看[版本说明](./docs/ADVANCED.md)
```xml
<!-- rapidocr这个必须要引入 -->
<!-- 可前往maven中央仓库https://central.sonatype.com/artifact/io.github.mymonstercat/rapidocr/versions,查看版本 -->
<dependency>
<groupId>io.github.mymonstercat</groupId>
<artifactId>rapidocr</artifactId>
<version>0.0.7</version>
</dependency>
<!-- 一般只需要引入一个,CPU端建议使用onnx,移动端建议使用ncnn -->
<!-- 可前往maven中央仓库https://central.sonatype.com/artifact/io.github.mymonstercat/rapidocr-onnx-platform/versions,查看版本 -->
<dependency>
<groupId>io.github.mymonstercat</groupId>
<artifactId>rapidocr-onnx-platform</artifactId>
<version>0.0.7</version>
</dependency>
<dependency>
<groupId>io.github.mymonstercat</groupId>
<artifactId>rapidocr-ncnn-platform</artifactId>
<version>0.0.7</version>
</dependency>
```
### 2️⃣ 使用示例
```java
public class Main {
public static void main(String[] args) {
InferenceEngine engine = InferenceEngine.getInstance(Model.ONNX_PPOCR_V3);
OcrResult ocrResult = engine.runOcr("/images/test.png");
System.out.println(ocrResult.getStrRes().trim());
}
}
```
> 更多使用示例请参考[使用示例](https://github.com/MyMonsterCat/rapidocr-demo/blob/main/java-ee/src/main/java/io/github/mymonstercat/Main.java)
### 3️⃣ 添加打印日志(可选)
项目中添加了日志打印,方便打印OCR日志,请自行添加日志实现(springboot自带,可以不用添加)
```xml
<!-- 非SpringBoot项目:例如添加slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.3</version>
</dependency>
<!-- SpringBoot项目:去除依赖,防止冲突 -->
<dependency>
<groupId>io.github.mymonstercat</groupId>
<artifactId>rapidocr</artifactId>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
```
添加后效果如下:
![](./docs/img/run-result.png)
> ⚠️ 注意:当前JVM启动时**只能同时启动一种推理引擎**,以第一次调用runOcr方法时的引擎配置为准
## 🔝 进阶使用
- [参数调优、版本说明、分支说明](./docs/ADVANCED.md)
- [如何打包jar包在Linux系统上运行](./docs/COMPILE_JAR.md)
- [如何在CentOS7或其他低版本Linux系统上运行](./docs/CentOS7.md)
- [SpringBoot示例和普通Java程序示例](https://github.com/MyMonsterCat/rapidocr-demo)
- [JVM下不同PaddleOCR调用方式性能比对👍](./docs/COMPARE.md)
- [银河麒麟v10编译onnx-arm64👍](./docs/Build_Rapid_OCR_Onnx_Lib_on_Kylin_arm64.md)
## 📌 TODO
- [x] 根据系统版本自适应加载动态库
- [x] 动态库集成到jar中
- [x] 是否删除临时文件夹配置为可选项
- [x] jvm未退出场景连续调用识别结果集乱码[#1](https://github.com/MyMonsterCat/RapidOcr-Java/issues/1)
- [x] 集成ONNX[#2](https://github.com/MyMonsterCat/RapidOcr-Java/issues/2),感谢[nn200433](https://github.com/nn200433)及[tika-server](https://github.com/nn200433/tika-server)👏
- [x] 添加日志,规范日志打印
- [x] ONNX支持Mac-Arm64
- [ ] 支持Docker镜像
- [x] Maven仓库提供packages
- [ ] SpringBoot下,以配置文件方式改造
- [x] 多模块打包[#6](可以否将dll,所以还有onnx文件分别存放进jar)
- [x] 多线程情况下库和模型可能重复加载、编译目标jdk版本改为1.8,感谢[FlyInWind1](https://github.com/FlyInWind1)
- [x] CentOS7升级指引
- [x] 基于arm64的银河麒麟环境,提供linux-arm64下onnx运行库(编译过程详见进阶使用),感谢[sandywalker](https://github.com/sandywalker)
- [ ] 添加英语日志以及,感谢[litongjava](https://github.com/litongjava)
## 🤔 FAQ
#### Q1:CentOS7无法运行?
请参考[CentOS7升级GCC](./docs/CentOS7.md)
#### Q2:如何使用自己编译的动态库和模型?
自0.0.5版本开始,项目引入了多模块打包,如果不喜欢这种方式,请使用0.0.4-light
```xml
<dependency>
<groupId>io.github.mymonstercat</groupId>
<artifactId>rapidocr</artifactId>
<version>0.0.4-light</version>
</dependency>
```
代码位于`0.0.4-light分支`,但该分支后续不进行维护。在该分支代码下,你可能会需要以下帮助
- [如何更新模型](./docs/UPDATE_MODEL.md)
- [如何自行编译动态库](./docs/COMPILE_LIB.md)
> 如有其他问题请提issue,我会尽快解决。
## 鸣谢
- [RapidOCR](https://github.com/RapidAI/RapidOCR)
- [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)
## 开源许可
使用 [Apache License 2.0](https://github.com/MyMonsterCat/DeviceTouch/blob/main/LICENSE)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
linux Linux操作系统嵌入了TCP/IP协议栈,协议软件具有路由转发功能。路由转发依赖作为路由器的主机中安装多块网卡,当某一块网卡接收到数据包后,系统内核会根据数据包的目的IP地址,查询路由表,然后根据查询结果将数据包发送到另外一块网卡,最后通过此网卡把数据包发送出去。此主机的处理过程就是路由器完成的核心功能。 通过修改Linux系统内核参数ip_forward的方式实现路由功能,系统使用sysctl命令配置与显示在/proc/sys目录中的内核参数。首先在命令行输入:cat /proc/sys/net/ipv4/ip_forwad,检查Linux内核是不是开启IP转发功能。如果结果为1,表明路由转发功能已经开启;如果结果为0,表明没有开启。出于安全考虑,Linux内核默认是禁止数据包路由转发的。在linux系统中,有临时和永久两种方法启用转发功能。 [3] 临时启用:此种方法只对当前会话起作用,系统重启后不再启用。临时开启的命令格式:sysctl–wnet.ipv4.ip_forward=1。
资源推荐
资源详情
资源评论
收起资源包目录
Java代码实现调用RapidOCR(基于PaddleOCR),适配Mac、Win、Linux,支持最新PP-OCRv4.zip (97个子文件)
新建文本文档.txt 1KB
rapid-ocr-java-main
rapidocr-ncnn-platform
pom.xml 3KB
rapidocr-ncnn-linux-x86_64
pom.xml 980B
src
main
resources
lib
libRapidOcr.so 15.51MB
java
io
github
mymonstercat
NcnnLinuxX8664LibraryLoader.java 365B
pom.xml 8KB
rapidocr-common
pom.xml 1KB
src
main
java
io
github
mymonstercat
loader
ModelsLoader.java 221B
LibraryLoader.java 175B
JarFileUtil.java 3KB
Model.java 2KB
exception
LoadException.java 390B
rapidocr-ncnn-models
pom.xml 969B
src
main
resources
models
ch_ppocr_mobile_v2.0_cls_infer.bin 497KB
ch_PP-OCRv3_det_infer.param 24KB
ch_PP-OCRv3_rec_infer.param 13KB
ch_ppocr_mobile_v2.0_cls_infer.param 17KB
ppocr_keys_v1.txt 26KB
ch_PP-OCRv3_rec_infer.bin 10.05MB
ch_PP-OCRv3_det_infer.bin 2.19MB
java
io
github
mymonstercat
NcnnModelsLoader.java 334B
LICENSE 11KB
rapidocr-ncnn-macosx-x86_64
pom.xml 981B
src
main
resources
lib
libRapidOcr.dylib 16.87MB
java
io
github
mymonstercat
NcnnMacX8664LibraryLoader.java 366B
rapidocr-ncnn-windows-x86_64
pom.xml 982B
src
main
resources
lib
RapidOcr.dll 10.45MB
java
io
github
mymonstercat
NcnnWindowsX8664LibraryLoader.java 365B
rapidocr-onnx-macosx-x86_64
pom.xml 981B
src
main
resources
lib
libRapidOcr.dylib 30.3MB
java
io
github
mymonstercat
OnnxMacX8664LibraryLoader.java 366B
docs
UPDATE_MODEL.md 723B
CentOS7.md 5KB
COMPILE_LIB.md 3KB
ADVANCED.md 4KB
img
onnx-replace.png 43KB
compare.png 112KB
check-success.png 45KB
onnx-lib.png 57KB
txt.png 192KB
line.png 22KB
centos7-run-error.png 112KB
ncnn-replace.png 43KB
log.png 97KB
check-error.png 65KB
centos7-run-success.png 117KB
mac-opencv.png 24KB
log-remove.png 167KB
convert.png 79KB
run-result.png 183KB
mac-ort.png 30KB
tool.png 32KB
Build_Rapid_OCR_Onnx_Lib_on_Kylin_arm64.md 7KB
COMPARE.md 2KB
COMPILE_JAR.md 2KB
rapidocr-onnx-macosx-arm64
pom.xml 1011B
src
main
resources
lib
libRapidOcr.dylib 26.41MB
java
io
github
mymonstercat
OnnxMacArm64LibraryLoader.java 366B
rapidocr-onnx-linux-x86_64
pom.xml 980B
src
main
resources
lib
libRapidOcr.so 35.17MB
java
io
github
mymonstercat
OnnxLinuxX8664LibraryLoader.java 365B
rapidocr-onnx-models
pom.xml 1014B
src
main
resources
models
ch_PP-OCRv4_det_infer.onnx 4.53MB
ch_PP-OCRv3_det_infer.onnx 2.32MB
ch_ppocr_mobile_v2.0_cls_infer.onnx 572KB
readme.md 253B
ppocr_keys_v1.txt 26KB
ch_PP-OCRv4_rec_infer.onnx 10.35MB
ch_PP-OCRv3_rec_infer.onnx 10.2MB
java
io
github
mymonstercat
OnnxModelsLoader.java 334B
rapidocr-ncnn-macosx-arm64
pom.xml 980B
src
main
resources
lib
libRapidOcr.dylib 10.04MB
java
io
github
mymonstercat
NcnnMacArm64LibraryLoader.java 366B
rapidocr-onnx-windows-x86_64
pom.xml 1013B
src
main
resources
lib
RapidOcr.dll 15.98MB
java
io
github
mymonstercat
OnnxWindowsX8664LibraryLoader.java 365B
rapidocr-onnx-windows-x86
pom.xml 979B
src
main
resources
lib
RapidOcr.dll 13.36MB
java
io
github
mymonstercat
OnnxWindowsX86LibraryLoader.java 363B
rapidocr
pom.xml 1KB
src
main
resources
load
loaders.properties 786B
java
io
github
mymonstercat
ocr
InferenceEngine.java 5KB
LoadUtil.java 3KB
config
IOcrConfig.java 100B
HardwareConfig.java 798B
ParamConfig.java 1KB
com
benjaminwan
ocrlibrary
OcrEngine.java 3KB
TextBlock.java 3KB
Point.java 944B
OcrOutput.java 74B
OcrResult.java 1KB
rapidocr-onnx-linux-arm64
pom.xml 978B
src
main
resources
lib
libRapidOcr.so 32.01MB
java
io
github
mymonstercat
OnnxLinuxArm64LibraryLoader.java 388B
.gitignore 2KB
README.md 6KB
rapidocr-onnx-platform
pom.xml 4KB
共 97 条
- 1
资源评论
野生的狒狒
- 粉丝: 2776
- 资源: 2222
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功