V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Maxwin
V2EX  ›  分享创造

做了一个 iOS 全局屏幕翻译 App,基于 ReplayKit + PiP 技术

  •  
  •   Maxwin · 2 天前 · 506 次点击

    各位好,最近做了一个 iOS App ,功能是全局屏幕实时翻译。简单来说就是:开启录屏 → OCR 识别屏幕文字 → 翻译 → 以画中画悬浮窗显示结果。任何 App 里都能用,不需要 root 、不需要辅助功能权限。

    核心技术栈

    • ReplayKit Broadcast Extension — 捕获屏幕帧
    • Vision framework — OCR 文字识别
    • Apple Translation framework — 离线翻译
    • AVPictureInPictureVideoCallViewController — 画中画悬浮窗
    • 纯 SwiftUI,零第三方依赖

    工作流程

    屏幕录制 (ReplayKit)
      → 帧捕获 (CMSampleBuffer)
      → PiP 区域检测 & 排除
      → OCR 区域图像存入 App Group 容器
      → Darwin Notification 通知主 App
      → OCR (Vision) → 文本拼接 → 翻译 (Translation)
      → 文本排版引擎 → PiP 覆盖层更新
    

    为什么做这个

    市面上的翻译 App 要么只能翻译截图,要么需要复制粘贴文字。我想要的是:打开任何 App (游戏、Twitter 、网页),屏幕上的外语直接变中文,实时更新。

    技术上最大的挑战是 PiP 自检测——画中画窗口本身也在屏幕上,OCR 不能把自己显示的翻译结果再识别一遍。这个问题花了不少时间,后面单独写一篇讲。

    目前支持的语言

    源语言:英、日、韩、法、德、西、葡(巴西)、俄、泰、越 目标语言:简中、繁中、英、日、韩、法、德、西

    完全离线运行,翻译资源首次使用时下载,之后不需要网络。

    App Store 搜 TransPeek 就能找到,免费有 30 分钟体验额度。有什么问题欢迎交流。

    4 条回复    2026-03-25 14:01:46 +08:00
    McGrady222
        1
    McGrady222  
       2 天前
    不错的想法
    Maxwin
        2
    Maxwin  
    OP
       2 天前
    @McGrady222 已经上线初始版本了 :)
    337136897
        3
    337136897  
       1 天前
    刚试了,这个翻译的画中画窗口自己会消失的,并且不能全屏识别啥的,要移动哪,再往上一点才是翻译的区域。 不太好用
    aero99
        4
    aero99  
       1 天前
    有点意思,我是通过快捷指令,截图发送给 AI 来处理的
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   970 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:52 · PVG 03:52 · LAX 12:52 · JFK 15:52
    ♥ Do have faith in what you're doing.