如何处理 Android OCR 中的竖排日文文本

发布: (2026年2月21日 GMT+8 10:40)
3 分钟阅读
原文: Dev.to

Source: Dev.to

问题

大多数 OCR 引擎都针对水平从左到右的文本进行优化。当你把一页垂直日文的漫画喂给它们时,会出现:

  • 字符顺序混乱
  • 相邻列的文本合并
  • 列边界处字符缺失
  • 完全错误的阅读方向

检测策略

长宽比分析

垂直文本块往往高于宽。如果检测到的文本区域的高宽比 > 2:1,则很可能是垂直文本。

字符间距模式

在垂直文本中,字符以一致的垂直间距堆叠。分析检测到的字符的空间分布——如果它们沿垂直轴聚集,则在 OCR 前将该区域旋转 90°。

ML Kit 的内置支持

Google 的 ML Kit(许多 Android OCR 应用使用)在最近的版本中提升了对垂直文本的支持。使用带有日文脚本识别器的 TextRecognition API,开箱即能相当好地处理垂直文本。

实际解决方案:Screen Translator 的方法

Screen Translator 中,我们通过多步骤流水线处理垂直日文文本:

  1. 捕获 – MediaProjection API 捕获屏幕
  2. 预处理 – 检测文本区域并分析方向
  3. 如有必要旋转 – 垂直区域顺时针旋转 90°
  4. OCR – 在归一化图像上运行文字识别
  5. 后处理 – 重新排序字符以纠正阅读顺序
  6. 翻译 – 将正确排序的文本发送至翻译 API

开发者提示

  • 始终使用真实的漫画页面进行测试,而不仅是合成测试图像。
  • 游戏中的日文文本常使用自定义字体,导致 OCR 准确率下降。
  • 注音假名(位于汉字上方的小型阅读辅助)会干扰 OCR——可考虑按文字大小进行过滤。
  • 混合水平/垂直布局(漫画中常见)需要对每个区域进行方向检测。

结果

使用适当的垂直文本处理,漫画页面的 OCR 准确率从约 40 % 提升至约 85 %+(针对干净的数字扫描)。关键洞察是文本方向检测必须在 OCR 之前进行,而不是之后。

Screen Translator 是一款适用于 Android 的免费悬浮覆盖翻译器,支持垂直日文文本、漫画、游戏等功能: Google Play

0 浏览
Back to Blog

相关文章

阅读更多 »