Skip to content

Conversation

@AzureG03
Copy link

@AzureG03 AzureG03 commented Jan 6, 2026

包含前置科技 #5388

实现原理

目前UI识别是直接通过模板匹配实现的,对于文字按钮,比如宿舍计划界面的”选择宿舍“、”宿舍商店“,大世界的”深渊海域“、”塞壬要塞“等识别,在1080p或更高分辨率的情况下效果不佳

利用OCR替换模板匹配,再小幅降低Button的匹配阈值,可以在尽可能复用已有的Assets的情况下,允许Alas在高分辨率下运行

button_extract.py看到有OCR的相关实现,但是似乎没有实际使用?
在修改尽可能小的前提下,目前的实现是为Button添加text属性

在Alas设置处开启高分辨率支持时,拥有text属性的Button在调用match方法时会优先使用OCR方法,若OCR结果在text属性中,则判断match成功。Button作为Resource没有config属性,为了使用Config.when注解,目前是在 alas.py:loop 方法内为Button注入config

单纯的textbutton实现在 AzureG03:textbutton

测试效果

挂了半个月,1080p情况下基本满足日常收菜,大概包括:委托、大世界、每日、演习、后宅、宿舍计划、商店、活动(自律)、主线(自律)、学院、舰队、科研、小游戏

其他功能如指挥猫、作战档案、开发船坞等,功能没开,不知道能不能用

更高分辨率如1440p简单试了下也能跑,不过超过1080p带来的提升太小,只是知道能跑,需要小白鼠

服务器适配

目前仅适配了CN服,理论上PPOCR支持多语言识别,国际服、日服、台服只需要为button对应的图片增加text属性即可,文件命名为${ButtonName}.TEXT.txt,可放在任意服务器目录下,最后会合并到一起,也可以像PRIVATE_QUARTERS_CHECK.TEXT.txt一样放在一起

使用注意事项

  1. 分辨率16:9,缩放使用cv2.resize实现,奇怪的屏幕比例可能导致奇怪的问题
  2. 注意截图耗时,mumu的nemu_ipc在1440p的截图耗时不到100ms,其他方法可能需要2s,太慢会认为游戏卡住
  3. 不支持OCR服务器,仅本地,因为前置科技没做,不过现在好像没看到这个设置,记得以前有
  4. 需要同时运行两个OCR模型,资源占用略微上涨,性能说明见前置科技
  5. 没测过docker,云手机等使用环境,不保证能用
  6. 实现较为hack且简陋,大概会一直为draft
  7. 目前只有自己在用,可能很多问题,自行取舍
image

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