Skip to content

sandywalker/RapidOcr-Java

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

98 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RapidOcr-Java

😺 项目起源

  • 现有的JavaOCR工具包识别效果差强人意,PaddleOCR在实现前沿算法的基础上,考虑精度与速度的平衡,进行模型瘦身和深度优化,使其尽可能满足产业落地需求。
  • PaddleOCR官方并未提供Java版本,而RapidOcr解决了这个问题,其提供了Kotlin和Java混合版本的Demo-onnxDemo-ncnn
  • 而实际使用过程中 项目中并不想再引入Kotlin、不想了解OCR相关知识,开箱即用、不想额外再部署OCR服务

因此本项目将Kotlin部分移除,并在此基础上加以完善且提供了更友好的的调用方法,更方便java开发者直接进行使用。

✨如果该项目对您有帮助,您的star是我不断优化的动力!!!

👏 项目特点

  • 纯Java代码调用RapidOcr
  • 集成ncnn和onnx推理引擎方式
  • 均使用CPU版本,GPU版本请自行编译
  • 支持Mac、Windows、Linux等多平台,详细支持的系统请查看版本说明

🎉 快速开始

项目提供了JavaEESpringBoot 的使用Demo,仅作参考(可以拉取下来运行试一下)

1️⃣ 添加依赖

此种方式会根据你使用的系统自动使用对应的jar包,目前支持的系统请查看版本说明

<!-- 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️⃣ 使用示例

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()); } }

更多使用示例请参考使用示例

3️⃣ 添加打印日志(可选)

项目中添加了日志打印,方便打印OCR日志,请自行添加日志实现(springboot自带,可以不用添加)

<!-- 非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>

添加后效果如下:

⚠️ 注意:当前JVM启动时只能同时启动一种推理引擎,以第一次调用runOcr方法时的引擎配置为准

🔝 进阶使用

📌 TODO

  • 根据系统版本自适应加载动态库
  • 动态库集成到jar中
  • 是否删除临时文件夹配置为可选项
  • jvm未退出场景连续调用识别结果集乱码#1
  • 集成ONNX#2,感谢nn200433tika-server👏
  • 添加日志,规范日志打印
  • ONNX支持Mac-Arm64
  • 支持Docker镜像
  • Maven仓库提供packages
  • SpringBoot下,以配置文件方式改造
  • 多模块打包#6
  • 多线程情况下库和模型可能重复加载、编译目标jdk版本改为1.8,感谢FlyInWind1
  • CentOS7升级指引

🤔 FAQ

Q1:CentOS7无法运行?

请参考CentOS7升级GCC

Q2:如何使用自己编译的动态库和模型?

自0.0.5版本开始,项目引入了多模块打包,如果不喜欢这种方式,请使用0.0.4-light

<dependency> <groupId>io.github.mymonstercat</groupId> <artifactId>rapidocr</artifactId> <version>0.0.4-light</version> </dependency>

代码位于0.0.4-light分支,但该分支后续不进行维护。在该分支代码下,你可能会需要以下帮助

如有其他问题请提issue,我会尽快解决。

鸣谢

开源许可

使用 Apache License 2.0

About

🔥🔥🔥Java代码实现调用RapidOCR(基于PaddleOCR),适配Mac、Win、Linux,支持最新PP-OCRv4

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 100.0%