修复病句过滤器误杀正常查询消息

- 分离'问'开头的消息处理逻辑
- '问一嘴'、'问一下'等正常查询消息不再被误判为病句
- 包含疑问词且长度>8的消息放行
- 保留其他缺主语碎片的过滤(其/将/把/被/认/帮/想/试开头)
This commit is contained in:
youpaishidifu
2026-08-15 22:56:24 +08:00
parent fcc873626a
commit e456320deb
+10 -1
View File
@@ -4036,7 +4036,16 @@ class MessageMonitor:
continue
# 病句3:句子缺少主语且无标点(如"将其修正后重三" "认管理员密码多少")
# OCR常把"默认"识别丢掉→"认管理员密码多少"、把"帮"识别丢掉→"查xx"
if re.match(r'^[其将把被认查问帮试想]', line) and not re.search(r'[。!?,,;;::?]$', line):
# 例外:以"问一嘴"、"问一下"开头的正常查询消息,或包含疑问词且长度>8的消息放行
if re.match(r'^[其将把被认查帮试想]', line) and not re.search(r'[。!?,,;;::?]$', line):
logger.debug(f"[{platform}] OCR 过滤: 病句(缺主语) line={line!r}")
continue
# "问"开头的消息单独处理:排除"问一嘴"、"问一下"等正常查询
if re.match(r'^问', line) and not re.search(r'[。!?,,;;::?]$', line):
# 如果包含疑问词且长度>8,视为正常查询放行
if len(line) > 8 and re.search(r'[在何哪什怎么哪]', line):
pass # 放行
else:
logger.debug(f"[{platform}] OCR 过滤: 病句(缺主语) line={line!r}")
continue
# 病句4:OCR 把用户消息和系统提示拼接的复合碎片