端侧 OCR 实战:RapidOCR 与 Apple Vision 让应用离线读懂图片文字
目录
端侧 OCR 实战:RapidOCR 与 Apple Vision 让应用离线读懂图片文字
OCR(光学字符识别)是把图片里的文字变成可编辑文本的技术,证件识别、票据录入、截图翻译、扫码枪背后都是它。过去主流做法是调云端 API,但端侧 OCR 有三个硬优势:
- 隐私:身份证、合同、聊天截图不出设备
- 离线可用:飞机、地铁、弱网环境照常工作
- 零边际成本:云 API 按次计费,端侧一次部署永久免费,还省掉了网络往返延迟
开源方案怎么选
| 方案 | 模型体积 | 语言生态 | 适用场景 |
|---|---|---|---|
| RapidOCR | 约 20MB(INT8 量化后约 10MB) | Python / C++ / Android / iOS | 跨端统一逻辑,离线部署首选 |
| PaddleOCR | 30MB 起,可剪枝量化 | Python 为主 | 追求极致精度,接受较大体积 |
| Tesseract | 中文语言包约 40MB | C++ 生态 | 老牌方案,中文准确率一般 |
| Apple Vision | 系统内置,零体积 | Swift(iOS 13+) | iOS 原生 App 零集成成本 |
RapidOCR 实战:四行代码接入
RapidOCR 是百度 PP-OCR 模型的 ONNX 移植版(RapidAI 开源),检测(det)、方向分类(cls)、识别(rec)三个模型全部转成 ONNX,用 onnxruntime 推理,不依赖 Paddle 框架,体积小、跨端部署简单:
|
|
result 中每个元素是 [坐标框, 识别文本, 置信度],elapse 是本次推理耗时(秒)。把它包成 HTTP 服务给前端用,也就十几行:
|
|
Apple Vision 实战:iOS 端零依赖
如果只做 iOS 端,Apple 的 Vision framework 性价比最高——系统自带、跑在 Neural Engine 上,不需要集成任何第三方模型:
|
|
识别结果按从上到下、从左到右排序,topCandidates(1) 取置信度最高的候选文本。recognitionLanguages 在 iOS 15 之后支持任意语言组合,iOS 16 之后对中文的识别稳定性更好。
性能与体积数据
- RapidOCR:det 模型约 4.7MB、cls 约 1.4MB、rec 约 15MB(PP-OCRv4 官方 ONNX 导出),合计约 20MB;INT8 量化后 10MB 以内。CPU 上单张普通图片推理约 100-500ms(官方标注与社区实测,随分辨率和设备浮动)
- Apple Vision:系统级框架,单张 1080p 图片在 iPhone 上通常几十毫秒级(实测结论),不占 App 包体积
实战踩坑记录
- 超大图先缩放:长边超过 2000px 的截图先等比缩放,速度提升明显、精度几乎不降
- 竖排文字:RapidOCR 内置 cls 方向分类模型自动纠正旋转;Apple Vision 对横竖排混合场景建议分区域识别
- 清晰度优先于滤镜:端侧识别对低照度鲁棒,但运动模糊是杀手,拍摄类 App 建议加抖动检测
- 长文档分块:A4 整页识别容易漏字,按行高切块并行识别更稳
总结
端侧 OCR 的技术栈已经非常成熟:跨端统一逻辑选 RapidOCR(ONNX 运行时、约 20MB),iOS 原生选 Apple Vision(零成本、NPU 加速)。两者都支持中文、都能完全离线,配合端侧 INT8 量化技术,识别模型还能再瘦身一半。下一个版本,给你的 App 装上眼睛吧。