Skip to content

feat(ocr): add FRLG scene recognition to the tag editor - #57

Closed
axechaso wants to merge 1 commit into
EasyConNS:devfrom
axechaso:feat/frlg-ocr-labels
Closed

axechaso wants to merge 1 commit into
EasyConNS:devfrom
axechaso:feat/frlg-ocr-labels

Conversation

@axechaso

Copy link
Copy Markdown
Contributor

背景

FRLG 日版使用低分辨率像素字体。通用 Tesseract 在实机采集画面上经常会把假名、浊点和数字识别成外观相近的字符;即使原始候选中已经出现正确内容,通用置信度判定也可能拒绝输出。

本 PR 将已经过 FRLG 样本回归的场景化 OCR 接入 EasyCon,但仍沿用现有标签编辑器和现有 ECS OCR(x, y, width, height, "scene") 调用,不引入第二套独立工具界面。

改动范围

OCR 运行时

  • 新增 FRLG 场景 OCR 搜索方式,并支持以下 13 个场景键:
    • FRLG_JPN_TIDFRLG_EN_TID
    • FRLG_JPN_NAMEFRLG_JPN_WILD_LEVEL
    • FRLG_JPN_SUMMARY_NAMEFRLG_JPN_NATUREFRLG_JPN_LEVEL
    • FRLG_JPN_HPFRLG_JPN_ATTACKFRLG_JPN_DEFENSE
    • FRLG_JPN_SP_ATTACKFRLG_JPN_SP_DEFENSEFRLG_JPN_SPEED
  • TID、摘要等级、HP 和六项能力值使用内置数字模板、多阈值投票与字段规则,不依赖日文文本模型。
  • 日文名称、性格和野生等级使用 PaddleOCR/Tesseract 候选、字符归一化和词典纠错;名称可以用 FRLG_JPN_NAME:ミニリュウ|ハクリュー 缩小候选集,但候选不会强制制造结果。
  • 文本模型按进程缓存并复用,避免每次调用重复加载;已有非 FRLG OCR 仍走原 Tesseract 路径。

原标签编辑器接入

  • 在原有标签编辑器中选择 FRLG 场景 OCR 后,可以:
    • 选择场景;
    • 一键采用该场景的默认区域,或继续手动画框;
    • 通过原有“标签测试”直接查看识别结果/失败原因;
    • 复制对应 ECS OCR(...) 调用。
  • FRLG OCR 标签保存场景键和区域,不生成无意义的目标图片。

明确不包含的内容

  • 不包含 FRLG 独立 OCR 窗口或回放程序。
  • 不包含 FRLG 自动化 ECS 脚本、按键/抓捕/反查流程或业务配置。
  • 不包含用户本地标签、缓存截图或私人测试素材。
  • 不修改普通图片标签和现有非 FRLG OCR 的行为。

模型与资源

数字模板和词典体积较小,作为嵌入资源随程序集发布。约 120 MB 的 rec.onnxjpn.traineddata 没有提交到 Git;需要文本场景时执行:

python tools/FrlgOcr/fetch_resources.py --models-only

程序也支持通过 EASYCON_FRLG_MODELS 指定模型目录。docs/frlg-ocr-resources.lock.json 固定了全部 53 个资源的来源、大小和 SHA-256;许可证与来源说明位于 docs/licenses/docs/FRLG-OCR-SOURCES.md

使用示例

OCR(301, 127, 365, 77, "FRLG_JPN_NAME")
OCR(755, 129, 70, 66, "FRLG_JPN_WILD_LEVEL")
OCR(1516, 253, 198, 79, "FRLG_JPN_ATTACK")

验证

  • python tools/FrlgOcr/fetch_resources.py --verify
    • 53/53 个锁定资源通过 SHA-256 校验。
  • dotnet format EasyCon2.slnx --verify-no-changes --no-restore
    • 通过。
  • dotnet build src/EasyCon2.Avalonia/EasyCon2.Avalonia.csproj -c Release --no-restore
    • 通过,0 error。
  • 带锁定模型运行 FRLG 专项 Release 测试:20 passed / 0 failed / 0 skipped。
    • 覆盖 TID、摘要等级、HP、六项能力值、日文名称、性格、野生等级、性别符号、标签路由/持久化和旧 OCR 路由。
  • 不安装可选文本模型运行:15 passed / 0 failed / 5 skipped。
    • 只有需要 Paddle/Tesseract 模型的 5 项测试跳过,纯数字场景仍可用。
  • 全解决方案 Release 测试排除下述既有平台断言后:
    • EasyCon.Tests: 737 passed / 16 skipped / 0 failed
    • EasyCon.Lsp.Tests: 66 passed / 0 failed
    • WinInput.Tests: 11 passed / 0 failed

完整、不加过滤的 dotnet test EasyCon2.slnx -c Release 仍有 1 个与本 PR 无关的既有失败:PipelineUnificationTests.CsvTestExample_AutoLoadAndShadowUntilFfi 在 Windows 上仍断言 msvcrt.dll FFI 应失败;该测试自身注释说明预期失败条件是 non-Windows,本 PR 没有修改该测试或其执行路径。

建议审查重点

  • FRLG 场景键是否只在新路由中接管 OCR,旧 Tesseract 路由是否保持兼容。
  • 标签编辑器的场景、区域、测试和 ECS 调用生成是否符合现有工作流。
  • 资源锁定、许可证记录,以及大模型不入库的交付方式是否符合项目约定。

@axechaso axechaso closed this Sep 14, 2026
@axechaso

Copy link
Copy Markdown
Contributor Author

按维护者关于上游不能包含特定游戏内容的要求,这个实现不再继续。通用的 OpenCV 5 ONNX OCR 后端已经重新整理为 #58:不包含任何游戏脚本、模型、词典、标签、截图、坐标或独立 OCR 窗口,并补齐了原生 DNN 导出、通用 JSON 配置、脚本初始化入口、测试和文档。后续请在 #58 讨论。

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