离线翻译如何在你的 iPhone 上工作
应用的翻译路径完全在设备本地执行。没有照片、没有 OCR 结果、没有任何翻译请求会离开 iPhone。本文解释"设备本地"的真正含义、模型存在的位置以及在本地运行翻译所带来的权衡。
在设备上运行的部分
相机翻译有三个独立的工作在手机上完成:
- OCR。 一个分叉的
vision_text_recognition包在本地运行文本识别。它支持拉丁文、中文(简体和繁体)、日文和韩文脚本。每个识别到的文本块都带有自己的边界框和识别到的文本。 - 翻译。 Google ML Kit 的设备本地翻译引擎将 OCR 输出作为输入并产生翻译文本。引擎作为可下载的语言模型按语言对对捆绑;应用按需下载模型并将其缓存在磁盘上。
- 渲染。 结果页将每个翻译后的块绘制回原始照片上,使用 OCR 引擎返回的边界框。无需往返服务器即可渲染叠加层 — 图像、源块和翻译都存在于设备的内存中。
为什么这很重要
- 隐私。 街牌、合同、医疗表格和个人通信的照片保留在设备上。管道中的任何地方都没有上传步骤,因此没有可泄露、传唤或出售的内容。
- 延迟。 没有网络往返。在最近的设备上,典型手机拍摄页面的 OCR 在远不到一秒内完成,而按块结果的翻译随着每个块完成而流式传输。
- 离线。 管道在飞机上、地下室、隧道里、火车上、没有覆盖的国家运行。OCR 引擎和翻译引擎被下载一次并无限重用;每个捕获都不需要获取任何内容。
- 成本。 应用不为翻译 API 的每个字符付费,因此该功能不需要基于使用的付费墙或每月字符上限来保持可持续性。免费层是同一管道。
模型存在的位置
ML Kit 为 19 种语言发布设备本地翻译模型。每个模型大约 10–50 MB。当你选择源或目标语言时,应用在首次使用时将相应模型下载到应用的本地沙盒中。该模型在应用重启之间持续存在;删除它会立即回收存储。
支持的语言完整列表:阿拉伯语、中文(简体)、捷克语、荷兰语、英语、法语、德语、克罗地亚语、匈牙利语、意大利语、日语、韩语、波兰语、葡萄牙语、罗马尼亚语、俄语、斯洛伐克语、斯洛文尼亚语和西班牙语。
上传的内容(以及不上传的内容)
- 不上传。 照片、OCR 文本、翻译文本、历史记录条目、语言模型状态。这些都不会离开设备。
- 上传。 匿名崩溃报告和聚合计数器(例如"每天的翻译请求数")。崩溃报告不包含用户内容;如果未来的报告曾经包含内容,那将是一个错误,应该报告。
本地运行的权衡
- 有限的语言列表。 仅支持 ML Kit 作为设备本地模型发布的语言。该列表经过精心策划,目前有 19 个条目。
- 需要下载模型。 首次翻译某种语言对会触发一次性下载。模型管理器页面显示状态,并允许你为离线旅行预下载。
- 质量。 对于短而格式良好的文本,设备本地翻译质量可与云翻译媲美。长段落或特定领域的术语可能与针对该领域调整的云引擎不同。
- 计算。 OCR 和翻译使用手机的 CPU 和神经引擎。单次捕获的电池影响很小,但对于批量工作流是可衡量的。
这对你意味着什么
如果你曾经因为照片最终会出现在别人的服务器上而犹豫是否要拍摄敏感文档,那么这种犹豫就是该应用存在的原因。管道的每个部分都在本地运行,应用的数据模型是围绕"除非用户明确选择共享结果,否则没有任何东西离开设备"的前提设计的。