zibo-chen/ocr-rs

高性能OCR识别库,支持上百种语言,提供命令行、图形界面及C API多种调用方式,使用便捷高效。 High-performance OCR library powered by PaddleOCR v4/v5/v6 with MNN backend. Supports 10+ languages (Chinese, English, Japanese, Korean, Arabic, Cyrillic, Thai, etc). Provides Rust crate + C API + CLI tools. Fast, lightweight, easy-to-integrate.

解决的问题

ocr-rs 是一个轻量级的 Rust 库,提供光学字符识别(OCR)功能。它允许开发者从图像中提取文本,支持包括中文、英文、日文以及多种拉丁字母语言在内的广泛语言,同时通过使用 MNN 推理运行时保持高性能。

工作原理

该库作为 PaddleOCR 模型的封装,利用 MNN 推理运行时进行执行。支持多个模型版本(v4、v5 和 v6),在模型大小与精度之间提供不同权衡。系统主要由两个核心组件构成:文本检测模型(用于定位文本位置)和文本识别模型(用于将这些区域转换为字符)。

关键技术特性包括:

  • 模型转换:提供 Python 脚本,用于将 PaddlePaddle 模型转换为 MNN 格式(通常使用 FP16 以减小体积)。
  • 硬件加速:支持多种后端,包括 CPU、CUDA、Vulkan 和 Metal,可在可能的情况下自动选择预构建版本。
  • 鲁棒模式:一种可选模式,通过在图像的旋转副本上运行检测来处理水平与垂直文本混合的图像。
  • 字符对齐:提供 API,可获取检测到的文本中每个字符的精确坐标,基于 CTC 时间步推导,无需额外推理步骤。

适用人群

需要在应用程序中集成高性能、本地化 OCR 功能,但又不依赖外部云 API 的 Rust 开发者。

主要亮点

  • 多语言支持:支持 50 多种语言,涵盖不同模型版本,包括韩语、阿拉伯语和西里尔字母等专用脚本。
  • 灵活推理:提供端到端 OCR、仅检测或仅识别的引擎。
  • GPU 加速:原生支持 Metal、Vulkan 和 CUDA,以加速处理速度。
  • 内存优化:默认使用 OpenCL 缓冲内存,以处理极宽的文本区域,避免超出 GPU 图像宽度限制。
  • 性能保障:内置 Criterion 基准测试和 CI 风格的性能烟雾测试,防止性能退化。

相关

  • 项目
  • 项目
  • 项目
  • 项目