3 Star 13 Fork 4

很冒险的梦我陪你去做 / RapidOcr-Java

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

RapidOcr-Java

😺 项目起源

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

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

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

👏 项目特点

  • 纯Java代码调用RapidOcr
  • 集成ncnn和onnx推理引擎方式,默认使用Onnx推理方式
  • 均使用CPU版本,GPU版本请自行编译

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

🎉 快速开始

项目提供了JavaEESpringBoot 的使用Demo,仅作参考

1️⃣ 添加依赖

目前支持的系统请查看版本说明

<!--  一般只需要引入一个,CPU端建议使用onnx,移动端建议使用ncnn     -->
<dependency>
    <groupId>io.github.mymonstercat</groupId>
    <artifactId>rapidocr-ncnn-platform</artifactId>
  	<!--  可前往maven中央仓库https://repo1.maven.org/maven2/io/github/mymonstercat/rapidocr/,查看版本      -->
    <version>0.0.6</version>
</dependency>
<dependency>
    <groupId>io.github.mymonstercat</groupId>
    <artifactId>rapidocr-onnx-platform</artifactId>
  	<!--  可前往maven中央仓库https://repo1.maven.org/maven2/io/github/mymonstercat/rapidocr/,查看版本      -->
    <version>0.0.6</version>
</dependency>

2️⃣ 使用示例

public class Main {
    public static void main(String[] args) {
        ParamConfig paramConfig = ParamConfig.getDefaultConfig();
        paramConfig.setDoAngle(true);
        paramConfig.setMostAngle(true);
        InferenceEngine engine = InferenceEngine.getInstance(Model.ONNX_PPOCR_V3);
        // 开始识别
        OcrResult ocrResult = engine.runOcr(getResourcePath("/images/test.png"), paramConfig);
        System.out.println(ocrResult.getStrRes().trim());
    }

    private static String getResourcePath(String path) {
        return new File(Main.class.getResource(path).getFile()).toString();
    }
}

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

3️⃣ 添加打印日志

  • 项目中添加了日志打印,方便打印OCR日志
  • 常见的日志配置请前往查看日志配置(仅供参考),可将其放入到项目resources目录下,名为log4j2.xml

  • 如果想去除最底下numThread=4等控制台打印需要在编译库文件的时候进行控制,可以在如何自行编译动态库查看教程。
  • 后续有时间会将所有库的控制台打印去掉,目前仅去掉了Mac-arm64的,望理解。

🔝 进阶使用

📌 TODO

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

🤔 FAQ

Q1:无法运行相应的动态库?

Mac-Arm64、Mac-Intel、Win10、Win11、CentOS-8均经过测试,项目resources目录下的的动态库文件均可成功加载,如果您的系统无法运行相应的动态库,请在该系统下尝试自行编译动态库

Q2:CentOS7无法运行?

先提供思路:由于centos7使用的gcc、glibc等工具太老了,而提供的so文件所需的最低依赖版本 远远大于 centos7的最高版本,因此需要将centos7对应的gcc、glibc等工具进行升级。

具体教程还未整理。

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

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

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

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

Q4: 不支持我的系统?

  • 参考Q3,使用0.0.4-light,参考Q1、Q2 自行编译
  • 如果您成功编译了相应平台的库文件,希望您能提供issue供更多人使用

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

鸣谢

开源许可

使用 Apache License 2.0

空文件

简介

Java代码实现调用RapidOCR(基于PaddleOCR),适配Mac、Win、Linux,支持最新PP-OCRv4 原作者地址:https://github.com/MyMonsterCat/RapidOcr-Java 仅仅方便国内用户访问,特地搬运过来。 展开 收起
Java
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/hongzai/RapidOcr-Java.git
git@gitee.com:hongzai/RapidOcr-Java.git
hongzai
RapidOcr-Java
RapidOcr-Java
main

搜索帮助