Skip to content

Fix translated bubble geometry and text alignment - #108

Merged
zyk1172 merged 12 commits into
mainfrom
fix/translation-bubble-geometry-alignment
Oct 1, 2026
Merged

zyk1172 merged 12 commits into
mainfrom
fix/translation-bubble-geometry-alignment

Conversation

@zyk1172

@zyk1172 zyk1172 commented Oct 1, 2026

Copy link
Copy Markdown
Owner

目标

修复实机截图中翻译后出现的几何错位:白色气泡背景与译文分离、可靠气泡被缩成小卡片、同一物理气泡被拆成多个翻译单元。

主要修改

  • 统一译文和背景的碰撞位移:

    • measured-text 卡片被 collision avoidance 移动时,背景与文字使用同一个 delta。
    • detected physical bubble 不再参与全页“找空位”式移动,译文保持在原气泡内。
  • 解耦 bubbleBox 与 bubblePolygon:

    • 只要 bubbleBox 已通过可靠性验证,surfaceRect 就始终使用真实气泡范围。
    • polygon 缺失或失效时仅退化为圆角矩形渲染,不再把整个气泡范围退化成译文字框。
  • 可靠气泡不再套 fallback-card 的 58% / 36% / 16% 尺寸上限:

    • 可靠 bubble 使用 contour-aware safe region;safe region 不完整时回到完整 bubbleBox。
    • 只有没有可靠气泡的 measured-text 卡片继续使用硬上限。
  • Manga Vision 气泡匹配改为两阶段:

    • 先按 containment / center evidence 给 OCR 行做临时分配。
    • 再使用“同一候选气泡内所有 OCR 行的 union”验证 bubble/text ratio、轴向膨胀与中心距离。
    • 避免拿大气泡和一个极小单词直接比较后把真实气泡误删。
    • 保留 page-area / confidence / center-distance 等 frame/panel false-positive 防护。
  • MangaTextSegmenter 增加 collective bubble identity:

    • 多个 OCR 行共享同一可靠 bubble geometry 时,以合并后的文字 union 做验证。
    • 同一行由多个小 OCR fragment 合并时,也保留已经集体验证过的 bubble identity。
    • measured-text fallback 可利用高度重合的 layoutSafeRegion 作为同段证据,同时继续受局部 union 尺寸限制。
  • TranslationLayoutStore revision 4 -> 5,避免复用旧错误布局缓存。

回归测试

新增覆盖:

  • 可靠大气泡不被 fallback-card cap 二次缩小。
  • measured card 移动后背景与文字保持同位移。
  • physical bubble 不随 collision 迁移。
  • bubbleBox 有效但没有 contour 时仍保留 bubble extent。
  • 多个极小 OCR 行属于一个较大物理气泡时只生成一个 translation unit。
  • 同一行的多个小 fragment 不会在 line merge 时丢失 bubble identity。
  • shared layoutSafeRegion 可恢复稍宽行距的 measured paragraph。

本 PR 不修改 OCR/模型输出协议,也不重新训练模型。

@zyk1172
zyk1172 merged commit 7fb882f into main Oct 1, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant