HyperAIHyperAI

Command Palette

Search for a command to run...

融合 Core ML 与 dots.ocr:实现移动端当前最优 OCR 性能

在2025年,随着硬件性能持续提升、模型效率不断提高,将高性能AI模型直接运行在设备端已成为现实。RedNote推出的30亿参数OCR模型dots.ocr,在OmniDocBench评测中超越了Gemini 2.5 Pro,标志着OCR已真正实现“无妥协”的本地化部署。运行模型于设备端,意味着无需传输API密钥、零成本、无需联网,但必须面对计算与功耗的严格限制。 苹果自2017年起在所有设备中集成神经网络引擎(Neural Engine),专为高效运行AI任务而设计,其能效比CPU高出12倍,比GPU高出4倍。然而,Neural Engine仅可通过Apple的封闭框架Core ML访问。将PyTorch模型转换为Core ML仍面临挑战,尤其在模型结构复杂或使用非标准操作时。 为此,本文介绍了一种结合Core ML与MLX的混合方案:使用Core ML运行12亿参数的视觉编码器(基于NaViT架构),用MLX运行15亿参数的Qwen2.5语言模型骨干。整个流程分为三步。 首先,理解并简化模型结构。dots.ocr原支持视频与批量图像输入,但为适配设备端,我们仅保留单图处理。同时,移除所有非标准注意力机制,仅保留Core ML支持的scaled_dot_product_attention(sdpa),并修复了因arange输出类型不匹配导致的类型错误,通过添加显式类型转换解决。 其次,在转换过程中逐步排查问题。例如,repeat_interleave操作因动态输入报错,因我们仅处理单图,可直接移除该逻辑;_internal_op_tensor_inplace_fill_报错源于动态索引,我们改用全零浮点掩码替代布尔掩码,避免不支持的bool张量。此外,原代码中的循环遍历grid_thw因动态控制流被ML编译器拒绝,我们将其替换为固定单图处理,彻底消除动态逻辑。 最终,模型成功转换为Core ML格式,与原始PyTorch输出差异极小(最大误差0.006,平均误差约1.1e-5),验证了转换正确性。 但性能测试显示,模型大小超过5GB,单次前向传播耗时超1秒,仍无法满足设备端部署要求。后续章节将聚焦于Core ML与MLX的协同集成,以及通过量化、动态形状支持等优化手段,实现模型在Neural Engine上的高效运行,真正实现高性能、低延迟的本地OCR体验。

相关链接