#scanner #artifact #ocr #genshin-impact

bin+lib yas_scanner

原神物品扫描器

1 个不稳定版本

0.1.13 2023 年 5 月 20 日

#622 in 图像

GPL-2.0-or-later

4.5MB
3.5K SLoC

Yas

另一个原神扫描器
又一个原神圣遗物导出器

介绍

基于 SVTR(基本上是 MobileNetV3_Small + Transformer)字符识别模型,使用原神字体对原神中出现的字符串进行训练,达到更高的速度和更精确的结果。相比 CRNN,SVTR 可以达到更小的体积及更好的识别率
导出结果可以导入分析工具(例如 莫娜占卜铺 )进行配装或者其他计算
由于使用了 Rust 进行编写,运行效率和文件体积都得到了很大的提升

相关资料

识别模型

SVTR 原文使用了多个 Local/Global Mixing,其中 Global Mixing 就是 Transformer 层,而根据 PaddleOCR 的代码,其 SVTR 识别模型也并未完全遵照 SVTR 原模型,而是骨干网络 + Transformer 的结构
Yas 同样采用 PaddleOCR 的做法,即 MobileNetV3_Small + Global Mixing,相当于将原 RNN 替换为 Transformer。

使用

Windows

  • 打开原神,并切换到背包页面,将背包拉到最上面
  • 下载单 exe 可执行文件,右键以管理员运行
  • 扫描过程中,鼠标右键终止

Linux

  • 首先请确保自己在 x11 下或者 GNOME/Wayland 下(其他 wayland de 下 会有很坏的性能
  • 用 wine 窗口化运行原神(或者全屏+虚拟桌面),打开圣遗物界面,拉到最顶
  • 启动 yas
  • Alt+Tab 切换到原神窗口,并且在鼠标变为十字后点击一下(还没做窗口聚焦),注意保证原神窗口整体在屏幕内
  • 等待扫描结束。右键中止还没做

注意

  • 默认不扫描 4 星以下圣遗物
  • 不是所有窗口比例都支持,推荐 16:9 的分辨率(如 1600x900, 1920x1080, 3840x2160)
  • 扫描过程中不要对鼠标做任何操作
  • 当前仅支持中文环境,若默认系统为非中文,请前往游戏设置界面修改 Language 为“简体中文”,否则无法读取原神窗口

命令行使用

假设你知道如何使用命令行工具
查看选项

yas --help

只扫描五星圣遗物

yas --min-star=5

只扫描一行

yas --max-row=1

编译

在构建前,请确保安装 Git LFS,并运行 git lfs pull。否则 yas 在运行时会使用错误的模型

# Linux下需要首先安装rustup以及mingw-w64,然后再安装对应的rust target,
# 构建到Linux需要 `libxdo` 和 `libxcb`
rustup default stable
rustup target add x86_64-pc-windows-gnu
cargo build --release --locked --target=x86_64-pc-windows-gnu

训练

yas-train

反馈

  • 问题
  • QQ 群:801106595

依赖

~30–66MB
~1M SLoC