修复EasyOCR超时导致消息丢失:增大外层超时到50s,混合消息检测改为提取最后一条消息

This commit is contained in:
youpaishidifu
2026-08-17 23:17:38 +08:00
parent f8366798f6
commit bd4a78dbf0
2 changed files with 47 additions and 5 deletions
+30 -1
View File
@@ -1043,6 +1043,29 @@ class MsgBotApp(ctk.CTk):
# 原来只选第一个通过的,导致 protect"温馨提示"(score高但内容浅)压过 sdf1_login"2.1下载"(score略低但内容深)
chosen = None
if self.ar.enabled:
# 提取query的核心词(复用auto_reply的逻辑)
q_tokens = AutoReply._meaningful_tokens(cleaned_msg)
# 非核心词(复制自auto_reply.py)
non_core_kw = {
'多少', '哪些', '哪个', '什么', '怎么', '如何', '吗', '呢', '吧',
'备用', '深险', '端的', '那', '这', '些', '个', '种', '类',
'最近', '近期', '刚才', '现在', '当前', '刚刚', '以前', '之后', '当天',
'第一', '最新', '全部', '所有', '一起', '各种', '各种各样',
'哪些', '哪个', '什么', '怎么', '如何', '多少',
'相关联', '相关', '有关', '以及', '以及',
'问问', '问一嘴', '打听一下', '能够', '可以到',
'有个', '问题', '常用', '他们', '各位', '大家', '小伙伴',
'知道', '想知道',
'下载', '下到', '哪下', '在哪下', '怎么下',
'信息', '内容', '详情', '情况', '介绍',
'一句', '问一句', '再问',
'有人',
'一嘴',
'那家', '那价',
}
core_kw = q_tokens - non_core_kw
# OCR碎片过滤
core_kw = {kw for kw in core_kw if not (kw.isascii() and len(kw) <= 2)}
# 收集所有通过相关性检查的候选
relevant_candidates = []
for idx, (doc, sc) in enumerate(results):
@@ -1078,7 +1101,13 @@ class MsgBotApp(ctk.CTk):
else:
quality_score = sc + body_len / 100.0
else:
quality_score = sc + body_len / 100.0 # 其他查询,body长度加权
# 计算heading核心词命中奖励
heading_text = (doc.get('heading') or '').lower()
heading_hits = sum(1 for kw in core_kw if kw in heading_text)
heading_bonus = heading_hits * 10.0 # 每个核心词命中heading加10分
# 表格body加分(非下载查询也适用)
table_bonus = 5.0 if is_table_body else 0.0
quality_score = sc + body_len / 100.0 + heading_bonus + table_bonus
relevant_candidates.append((quality_score, sc, doc))
if relevant_candidates: