修复: OCR 右裁剪边界 95%→78% 排除群成员侧栏 + 内容过滤二次防御

1. cap_right 从 win_w*0.95 收窄到 win_w*0.78,排除右栏群成员列表(~80%+ 区域)
   防止群成员列表混入聊天消息 OCR 导致"新消息"乱码触发 bot 回复
2. 加 "群成员"/"索群成员"/"搜索成员" 行级内容过滤,裁剪残余的二次防御
This commit is contained in:
youpaishidifu
2026-07-26 20:16:06 +08:00
parent fd077e343c
commit 953f1da797
4 changed files with 6 additions and 2 deletions
+6 -2
View File
@@ -677,10 +677,10 @@ class MessageMonitor:
time.sleep(0.3)
# TIM 窗口布局: ~5-30% 左栏, ~30-50% 会话列表(含文档预览), ~50-100% 消息面板
# 退回 c9acd7e 裁剪: 25% 覆盖消息面板两侧(对方+自己消息都可见)
# md 过滤负责拦截 bot 的 md 格式回复,裁剪不用太紧
# 右边界 78% 排除群成员侧栏(~80%+), md 过滤负责拦截 bot 的 md 格式回复
cap_left = int(left + win_w * 0.25)
cap_top = top + max(40, int(win_h * 0.04)) # 标题栏下方
cap_right = int(left + win_w * 0.95) # 跳过滚动条
cap_right = int(left + win_w * 0.78) # 跳过右栏群成员列表(~80%+) 和滚动条
cap_bottom = bottom - max(100, int(win_h * 0.10)) # 输入框上方
if cap_right <= cap_left or cap_bottom <= cap_top:
return []
@@ -786,6 +786,10 @@ class MessageMonitor:
continue
if self._is_system_message(line):
continue
# 群成员侧栏/搜索残留(QQ/TIM 右栏成员列表)
if re.search(r'群成员|索群成员|搜索成员', line):
logger.debug(f"[qq] OCR 过滤: 群成员侧栏 line={line[:60]!r}")
continue
# 纯中文短文本(1 字符)— UI 噪声碎片
if re.match(r'^[一-鿿]{1}$', line):
continue
Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB