fix(monitor): 修正偏旁合体映射解析逻辑
问题:解析 unicode_radicals.md 时列索引错误,导致映射表为空 修复: - 正确提取第5列(索引5)作为补充字符 - 修正 parts 数组索引:parts[4]=示例, parts[5]=补充字符 验证: - 构建 45 条合体映射(如 '讠吾'→'语', '亻尔'→'你') - 测试还原:'默讠人'→'默认人', '亻尔'→'你'
This commit is contained in:
+14
-5
@@ -102,16 +102,25 @@ def _load_radical_mapping() -> dict:
|
||||
|
||||
返回: {OCR识别的偏旁组合: 正确汉字}
|
||||
例如: {'讠吾': '语', '亻牛': '件', '彳亍': '行'}
|
||||
|
||||
文件格式:
|
||||
| 偏旁 | Unicode | 名称 | 示例 | 补充字符 |
|
||||
|------|---------|------|------|----------|
|
||||
| 亻 | U+4EBB | 单人旁 | 件→亻牛 | 件 |
|
||||
↑ 索引3 ↑ 索引4
|
||||
"""
|
||||
radical_map = {}
|
||||
try:
|
||||
with open(_RADICALS_MD, "r", encoding="utf-8") as f:
|
||||
for line in f:
|
||||
if line.startswith("|") and "→" in line:
|
||||
parts = line.split("|")
|
||||
if len(parts) >= 5:
|
||||
example = parts[3].strip() # 示例列: 件→亻牛
|
||||
corrected = parts[4].strip() # 补充字符列: 件
|
||||
if not line.startswith("|"):
|
||||
continue
|
||||
parts = [p.strip() for p in line.strip().split("|")]
|
||||
# parts[0] = 空, parts[1] = 偏旁, parts[2] = Unicode,
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user