相机 OCR:指向、拍摄、翻译

Last updated: 2026-09-03

相机 OCR 使用本地分叉的 vision_text_recognition 包运行 OCR,支持拉丁文、中文(简体和繁体)、日文和韩文脚本。识别过程无需上传任何内容。OCR 引擎返回的每个文本块都带有自己的边界框和识别文本;结果页将翻译绘制回同一坐标,从而保留原始布局。

拍摄流程

  1. 相机初始化。 相机控制器以显式的 initializing / ready / failed 状态进行异步初始化。失败时会显示重试按钮,可在不重新进入 initializing 守卫的情况下重新运行初始化。
  2. 真实方向。 当应用锁定为竖屏时,iOS 的 DeviceOrientation 和 EXIF 不可靠。应用通过 sensors_plus 读取原始加速度计,并缓存最近一帧,因此即使 UI 被锁定,快门也能以真实的握持方向拍摄。然后将 EXIF 方向与此真实情况协调一致。
  3. 快门。 点击以当前预览宽高比拍摄。拍摄后帧在 OCR 前会下采样到可配置的最大边长——大多数页面需要在长边 1500–2000 像素才能让引擎读取细小文字而不占用过多内存。
  4. 闪光灯。 取景器中提供四种模式——自动、关、开和手电筒——切换绑定到系统闪光 API。

OCR 返回的内容

为什么在设备本地处理

提高 OCR 准确性的最佳实践

  1. 均匀的间接光。 窗光优于头顶聚光灯。穿过页面的阴影是字符误读的最常见原因。
  2. 点击对焦。 如果自动对焦选择了错误对象(桌面、手指、页边),请在拍摄前点击文本中心。
  3. 平整的页面。 向书脊弯曲的页面会在装订线附近丢失字符。尽可能用另一只手将页面压平。
  4. 每次拍摄一种语言。 混合脚本的页面可在一次扫描中处理,但混排拉丁文与竖排日文的页面最好分成两次拍摄。