关注我的公众号:【编程朝花夕拾】,可获取首发内容。
01 引言
你是否还在为 OCR 识别愁眉不展:商业 API 按量收费、隐私数据不敢上云、本地部署又要装一堆笨重依赖?
之前用过tess4j的依赖,效果不是太好。今天给大家推荐另一个完全开源、免费商用、支持离线、多平台通吃的 OCR 神器 —— RapidOCR。
02 简介
RapidOCR 是一个完全开源、免费的 OCR(光学字符识别)工具箱,由国内开发者团队 RapidAI 打造,基于多种推理引擎与多编程语言构建,主打快速离线部署与跨平台兼容。
它的诞生源于一个朴实的观察:百度开源的 PaddleOCR 模型效果优秀,但在工程化落地时仍有优化空间。于是 RapidAI 团队把 PaddleOCR 的模型转换成了兼容性极强的 ONNX 格式,让 OCR 模型可以在各种终端设备上"即插即用"地推理部署。
目前在GitHub已经斩获8.1K的star 。
核心优势:
- 完全开源免费,可商用:基于 Apache 2.0 许可证,源代码和模型均可免费用于商业项目,没有调用次数、没有水印、没有后门。对创业团队和中小企业极其友好。
- 极速识别:项目从设计之初就"不懈追求速度"。得益于
ONNX轻量化模型,即使在普通 CPU 上也能获得流畅的识别体验,无需昂贵的GPU也能跑得动。 - 离线部署:所有推理都在本地完成,无需联网。发票、身份证、合同这类敏感文件不必上传到任何第三方服务器,数据隐私牢牢掌握在自己手里。
- 多语言、多平台支持:提供 Python、C++、Java、C# 等多种接口,覆盖桌面、移动端、Web 与 Docker 容器化环境(官方提供 7 种引擎镜像)。
GitHub地址:github.com/RapidAI/Rap…
文档地址:rapidai.github.io/RapidOCRDoc…
03 安装
3.1 python环境安装
python安装非常简单。
pip install rapidocr onnxruntime
使用
from rapidocr import RapidOCR
engine = RapidOCR()
img_url = "https://www.modelscope.cn/models/RapidAI/RapidOCR/resolve/master/resources/test_files/ch_en_num.jpg"
result = engine(img_url)
print(result)
result.vis("vis_result.jpg")
3.2 桌面版安装
直接在下载ZIP包即可:
安装的文档:rapidai.github.io/RapidOCRDoc…
3.3 Java使用
Java的使用需要引入依赖即可。
<!-- 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>
官方还提供Docker等其他的安装方式。
04 使用案例
4.1 Web应用
无论是桌面还是docker部署,都可以通过Web可视化查看可视化界面。
直接拖进去一张图片看看效果:
可以看到Web应用是做了标记的,识别率还是可以的。
4.2 Java使用
依赖上面已经引入了,按需引入即可。代码编写也很简单:
String imagePath = "src/main/images/u1.jpeg";
@Test
void test01() {
InferenceEngine engine = InferenceEngine.getInstance(Model.ONNX_PPOCR_V4);
OcrResult ocrResult = engine.runOcr(imagePath);
String trim = ocrResult.getStrRes().trim();
System.out.println(">>>>>>识别结果:" + trim);
}
运行结果:
识别的结果是折行展示的,想要整个文本替换折行即可:
result.replace("\n", "")
05 小结
如果你正在寻找一个免费、离线、好用、能商用的 OCR 方案,RapidOCR 几乎是当下的最优解之一。它把"大模型"做成了"小工具",让文字识别真正回归工程本身——简单、快速、可靠。
感兴趣的老铁可以去试试!