Skip to content

[Feature] Support Google ML Kit (Text Recognition v2) as an alternative OCR backend #1

@longipinnatus

Description

@longipinnatus

描述

目前项目只支持基于 ONNX Runtime 的 PaddleOCR 模型进行文字识别。为了提供更多样化的选择以及在某些语言上获得更稳定的识别率,计划在未来引入 Google ML Kit (Text Recognition v2) 作为可选的 OCR 引擎。

理由

目前 PaddleOCR 移动端模型的缺点:

  1. 对竖排日文文本识别效果一般,移动端模型识别时经常漏掉舍假名;
  2. PaddleOCR 将横竖文本混在一起训练,例如偶尔将「い」认成「二」;
  3. 对 Emoji 识别效果差,颜文字等特殊符号也同样如此;

添加新模型的好处:

  1. 不占用太多体积:在 Android 设备上可以通过 Google Play Services 动态加载;
  2. 多语言支持:v2 版本对中、日、韩、拉丁语系的识别精度不错,支持自动语言检测;
  3. 更好的布局分析:提供 Text -> TextBlock -> Line -> Element 层级结构,有助于优化目前的排版逻辑;

计划

为了支持 ML Kit,需要在未来的开发中考虑以下几点:

数据结构适配:

  • 保留目前的颜色提取逻辑,因为 ML Kit 本身不提供背景色/前景色识别;
  • 只定义一个 TextBlock 不够了,需要将 ML Kit 的 Text.TextBlock 以及 Text.Line 映射到我们自定义的结构中;
  • 考虑将 OCR 部分抽象一层,现有的 ONNX 实现和未来的 ML Kit 实现分别作为子类,通过 PreferenceManager 进行动态切换;
  • 新的坐标系统,利用好 ML Kit 返回的旋转角度 (Rotation) 和四个顶点坐标 (CornerPoints) 信息;

GPL 兼容性声明:

  • 采用 Google Play Services 版本的 ML Kit,并确保主程序代码保持 GPLv3 开源,在 README 中明确相关依赖的授权说明;

相关资源

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions