fix(monitor): 过滤单字符映射避免误还原
问题: - '儿' → '凵' 单字符映射导致误还原 - 输入 '亻尔个事儿' 被错误还原成 '亻凵个事儿' 修复: - _restore_radical_text() 只匹配长度 ≥ 2 的偏旁组合 - 避免单字符误匹配导致的错误还原 效果: - '亻尔个事儿' → '你个事儿' ✅ - '儿' 不再被还原成 '凵' ✅
This commit is contained in:
+7
-3
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user