fix(monitor): 过滤单字符映射避免误还原

问题:
- '儿' → '凵' 单字符映射导致误还原
- 输入 '亻尔个事儿' 被错误还原成 '亻凵个事儿'

修复:
- _restore_radical_text() 只匹配长度 ≥ 2 的偏旁组合
- 避免单字符误匹配导致的错误还原

效果:
- '亻尔个事儿' → '你个事儿' ✅
- '儿' 不再被还原成 '凵' ✅
This commit is contained in:
youpaishidifu
2026-08-14 10:26:28 +08:00
parent 7932617d0a
commit 268301c60d
+7 -3
View File
@@ -160,12 +160,16 @@ def _restore_radical_text(text: str) -> str:
例如:
- '讠吾' → '语'
- '亻尔' → '你'
- '默讠人' → '默认人' (部分还原)
- '彳亍' → '行'
策略:按长度降序匹配,避免短模式误匹配。
策略:
- 只匹配长度 ≥ 2 的偏旁组合(避免单字符误匹配)
- 按长度降序匹配,避免短模式误匹配长模式
"""
restored = text
for ocr_form, correct in sorted(_RADICAL_RESTORE_MAP.items(), key=lambda x: -len(x[0])):
# ⭐ 过滤掉单字符映射,避免误还原(如 '儿' → '凵')
multi_char_map = {k: v for k, v in _RADICAL_RESTORE_MAP.items() if len(k) >= 2}
for ocr_form, correct in sorted(multi_char_map.items(), key=lambda x: -len(x[0])):
restored = restored.replace(ocr_form, correct)
return restored