← Blog / 博客列表

文章 · · 约 2 分钟

uniLens 日语助手:在屏幕上就近读懂日语发音

我的 Android 离线日语阅读辅助项目,通过屏幕 OCR、日语分词和悬浮标注,在原文附近显示按音节分隔的罗马音。

  • #uniLens
  • #Android
  • #日语学习
  • #OCR
  • #开源项目

uniLens 日语助手 是我做的一款 Android 离线日语屏幕扫描工具。它识别屏幕上的日语,在每行附近显示按音节分隔的罗马音,让原文与读音留在同一个阅读视野里。

项目面向 Android 8.0 及以上设备,优先适配 vivo / OriginOS 的侧载使用方式。对于阅读日语时需要确认发音的人来说,这样的辅助可以减少切换应用、复制文字和查读音的步骤。

从屏幕文字到罗马音

uniLens 的处理流程分为三步:

  1. 通过 Android 的 MediaProjection 获取用户授权的屏幕画面。
  2. 使用内置的 ML Kit 日语 OCR 识别文字,再由 Kuromoji 和 IPADIC 进行整行形态分析、获取读音。
  3. 将读音转换成罗马音,通过透明悬浮层显示在原文附近。

罗马音会按音节分隔。例如,日本語 显示为 ni·hon·go,東京 显示为 tou·kyou,学校 显示为 gak·kou。这种呈现方便对照发音,也保留了长音等阅读线索。

OCR 模型随安装包分发,文字识别与词典分析都在本机执行。应用移除了网络权限,屏幕帧也不会保存到本地。

把辅助信息放在需要的位置

使用时,先授予悬浮窗权限,再点击“开始扫描”,在系统对话框中授权整个屏幕。随后可以切换到需要阅读的应用。

扫描支持全屏和手动框选。只想关注对话框或某一段文字时,可以通过悬浮条框选区域;选定区域会保存,之后也能恢复全屏识别。首页提供罗马音字号设置,悬浮条支持拖动、暂停和结束扫描。

透明标注层允许点击穿透,让原应用继续接收操作。屏幕旋转时,标注位置会重新映射。识别流程还加入了画面变化检测、静止时降低扫描频率和读音缓存,减少重复处理。

当前进展与阅读边界

截至本文整理时,仓库提供 0.4.1 开发版,包含 ARM64 和通用架构安装包。Android 15 模拟器已完成扫描、框选、横竖屏、点击穿透和停止释放等验证。vivo 真机上的后台运行、触摸体验和功耗仍待验证。

当前采用行级邻近标注。专有名词、人名、地名及多音汉字的读音准确性取决于 OCR 和词典分析;竖排、艺术字体、低清画面及快速动画也会影响识别效果。遇到这些场景,仍需要结合上下文核对读音。

游戏、漫画和网页是项目希望覆盖的阅读场景,实际应用效果需要逐项测试。目前仓库展示了自制日语页面和独立测试 App 的运行截图。

查看项目与试用

源码、界面截图、使用步骤和开发版 APK 位置都整理在 uniLens GitHub 仓库 中。想了解实现,可以从屏幕采集的 CaptureService、读音处理的 ReadingEngine 和悬浮标注的 OverlayView 入手。

这个项目围绕一个具体需求展开:把日语发音提示放回正在阅读的画面,让阅读过程更连贯。