jzpOCR · 左手减字谱母图识别(PP-OCRv6 · strict-parent B 臂)
古琴减字谱左手走手音的识别模型。输入一整幅左手母框的裁图,输出读法串。
输入:一幅母图(左手走手音那一块,不是单个部件,也不是整页)
输出:上三三 ← 原样字符串
⚠️ 这不是生产版。 它是上一代系统 task-aligned 实验的选中 checkpoint(台账状态
recovered_not_production),本仓库把它原样打包发布,用来补上「左手识别」这一格的空缺。 详见「身份」一节。
⚠️ 先读这三条
- 输入是「整幅母图」,大小形状随原文,不是单字、不是整页。整页要先做版面检测切出左手框。
- 输出是原样字符串,还没有分段。
jzpOCR主仓库的lc_segment会把它加成LC|前缀并按槽位/语义角色分段(上九上八→LC|上:九;上:八)。本包不做那一步。 - 预处理必须照
inference.yml:BGR、高 48 定宽 320 补零、归一化到[-1, 1]、 字表就是包里的dict.txt(18,708 字)。换字表 = 下标错位。
用法
pip install -r requirements.txt
python infer.py 母图.png
# B0003.jpg 上三三 0.412
python infer.py 一批/*.png
模型是推理格式(inference.json + inference.pdiparams),只依赖 paddlepaddle,
不需要装 PaddleOCR 训练框架。
指标
同一批 239 幅母图上的对照(exact = 整串全对才计对):
| 模型 | exact |
|---|---|
| 本模型(strict-parent B) | 122/239 = 51.05% |
上一代的 B1(column-path CTC v2,主仓库 jzpocr 装的那个) | 63/239 = 26.36% |
| +24.69 个百分点(配对:只有本模型对 66 · 只有 B1 对 7 · 两个都错 110) |
评测批:lc_qjjc_ppocrv6_parent_sequence_dataset_v1_20260724 的 holdout_list.txt,
239 行;同批同金标、同一个任务形状(整幅母图进、整串出,不给任何框)。
这个数的边界
- n=239,母框级,不是页级。本模型没有页级端到端数字。
exact是整串严格相等,不是字级准确率 —— 串长的样本更难对。- 上面那两个数是同一批、同一口径,可以直接比。
与别处记的
acc 0.6698(本模型自己的 val 106 行)不是一批,不可混比。 - 本模型未走生产发布流程。
为什么是这一臂
04_模型资产 里左手还有几个权重,但任务形状不同,拉到同一批上不可比:
| 权重 | 任务形状 |
|---|---|
| 本模型(strict-parent B) | 整幅母图 → 整串(部署形状) |
B1 (column-path CTC v2) | 整幅母图 → 整串(同形状,但更弱) |
LC-task-aligned-strict-parent-A | 同任务,权重已删(只剩日志与数据) |
MODEL-LC-FINE-BS152-001、三臂 A/B/C | unit 级(给定框、逐部件)—— 要另配检测才谈得上部署 |
身份
| 资产 | LC-task-aligned-strict-parent-B |
| 训练 run | lc_task_aligned_parent_B_bs160_e100_20260724 |
| 来源目录 | 04_模型资产/02_读法识别模型/02_左手_LC/05_task_aligned_补齐_20260918/ |
| 台账状态 | recovered_not_production |
| 选中 | best_accuracy(规则:maximize val acc → norm_edit_dis → 取更早的 epoch) |
| 权重 sha256 | ac69d4bef09f7a6d4c88e51da605e78655afbd87dd71d979da0673ae988fa6c(best_accuracy.pdparams) |
| 字表 sha256 | b5f2bfe2bdd9448429e3e82b51c789775d9b42f2403d082b00662eb77e401c5d |
训练
| 底模 | PP-OCRv6_medium_rec 官方预训练 |
| 配方 | batch 160 · 100 epochs · lr 2e-4 · seed 1024 |
| 数据 | lc_qjjc_ppocrv6_parent_sequence_dataset_v1_20260724(当前母框 + 1,009 条旧整母串) |
| 与 A 的关系 | A/B 是匹配对照,fixed_recipe 完全相同,只差数据 |
⚠️ 训练图像清单没有随包提供,因此无法核实其谱本来源。同一体系的其它权重用的是 《琴曲集成》的谱页裁图,但这一点对本权重未经核实,不作为陈述。
文件
| 文件 | 是什么 |
|---|---|
inference.json + inference.pdiparams | 推理模型(Paddle Inference / PIR 格式,76 MB) |
inference.yml | 官方推理配置 —— 预处理规格的权威来源 |
dict.txt | 字表,18,708 字(PP-OCRv6 默认字表) |
infer.py | 最小推理示例 |
requirements.txt | 依赖 |
infer.py 第三列 ctc_conf 是本包自己定义的 CTC 置信度(保留步上所选字符概率的
几何平均)。上游记录里有个叫 score 的列,两者接近但不相同(同一批 239 条上
平均差 0.016),不确定是不是同一个公式,别当同一个量用。
inference.json / inference.pdiparams / inference.yml 三个件取自上游的
inference_selected_parent_val/,未做任何改动。
引用
jzpOCR — 古琴减字谱识别(左手 LC 母图模型 · strict-parent B 臂)
底模:PaddleOCR PP-OCRv6_medium_rec