fix(monitor): 修正偏旁合体映射方向

问题:映射方向错误,导致还原逻辑反向

原因分析:
- unicode_radicals.md 示例列格式:'件→亻牛'
- 意思是:正确汉字='件',OCR错误='亻牛'
- 合体映射应为:'亻牛' → '件'(OCR错误→正确)

修复:
- 正确解析示例列:left='件', right='亻牛'
- 建立映射:radical_map['亻牛'] = '件'

验证:
- '讠吾' → '语'(正确)
- '彳亍' → '行'(正确)
- '亻尔' → '你'(新增支持)
This commit is contained in:
youpaishidifu
2026-08-14 10:21:59 +08:00
parent 0c974d05a9
commit c992586f05
+12 -4
View File
@@ -108,6 +108,10 @@ def _load_radical_mapping() -> dict:
|------|---------|------|------|----------|
| 亻 | U+4EBB | 单人旁 | 件→亻牛 | 件 |
↑ 索引3 ↑ 索引4
示例列格式:'正确汉字→OCR识别的偏旁组合'
例如:'件→亻牛' 表示 OCR 把 '件' 识别成了 '亻牛'
合体映射应为:'亻牛' → '件'
"""
radical_map = {}
try:
@@ -120,10 +124,14 @@ def _load_radical_mapping() -> dict:
# parts[3] = 名称, parts[4] = 示例, parts[5] = 补充字符
if len(parts) >= 6 and "→" in parts[4]:
example = parts[4]
corrected = parts[5] if parts[5] else ""
if "→" in example and corrected:
ocr_form = example.split("→")[1].strip()
radical_map[ocr_form] = corrected
if "→" in example:
# 示例格式:'件→亻牛' 或 '乍→作'
# 意思是:正确汉字 → OCR识别的偏旁组合
left, right = example.split("→")
left = left.strip() # 正确汉字: '件'
right = right.strip() # OCR错误: '亻牛'
if right and left:
radical_map[right] = left
except Exception as e:
logger.warning(f"[ocr] 加载偏旁合体映射失败({e})")
logger.debug(f"[ocr] 偏旁合体映射: {len(radical_map)} 条")