Jichen

Back

Java内容识别RapidOCRBlur image

😺 项目起源#

line.png

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

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

👏 项目特点#

  • 纯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>
xml

⚠️ 如果你想体验最新功能,请拉取main分支代码,自己打包后进行使用!!!

2️⃣ 使用示例#

public class Main {
    public static void main(String[] args) {
        // 获取推理引擎实例, 配置模型为 ONNX_PPOCR_V4
        InferenceEngine engine = InferenceEngine.getInstance(Model.ONNX_PPOCR_V4);
        OcrResult ocrResult = engine.runOcr("C:\\Users\\86151\\Desktop\\test.png");

        // 处理OCR结果
        for (int i = 0; i < ocrResult.getTextBlocks().size(); i++) {
            System.out.println("第" + (i + 1) + "行: " + ocrResult.getTextBlocks().get(i).getText().trim());
        }
    }
}
java

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

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>
    <version>0.0.7</version>
    <exclusions>
        <exclusion>
            <artifactId>slf4j-api</artifactId>
            <groupId>org.slf4j</groupId>
        </exclusion>
    </exclusions>
</dependency>
xml

4⃣ 识别效果#

识别测试1:

test1.jpeg test1.png

识别测试2:

test2.jpegtest2.png

Java内容识别RapidOCR
https://shujichen.com/blog/javarapidocr
Author Jichen
Published at November 20, 2024
Comment seems to stuck. Try to refresh?✨