标日中级上
标日中级上 → Anki 牌组生成规范
RULE
- 4对照表
- 12小节
本文件是生成规范,
00_PLAN.md是方案蓝图,两者配套。所有脚本/数据/产物必须遵守本 RULE。 定稿:2026-09-07
0. 铁律(不可违反)
- PDF 是唯一权威源:只从
三圆词汇表.pdf生成,绝不从 md 笔记生成(md 也是从 PDF 来的)。 - 每个字段带
src标记:src ∈ {pdf, ai, rule, tts},溯源可查。 - CardId 稳定不变:是反馈主键,重生成时绝不变化。
- 凭证不进任何文档/脚本/git:TTS API Key 等只放
config.local.json,加入.gitignore。
1. 数据流
Mermaid 图站内不渲染
flowchart LR
A["PDF 源<br/>(权威)"] -->|"pypdf 提取"| B["词汇数据.json<br/>(主数据·含 CardId/src/page)"] -->|"genanki"| C["标日中级上_词汇.apkg<br/>(产物)"]
B -->|"TTS"| D["音频/*.mp3"]
B -->|"导出"| E["卡片索引.tsv"]
C --> F["Anki 导入"]
D --> C2. CardId 规则
- 格式:
L{课号2位}-{圆数}-{序号3位} - 课号:
01~16(两位补零) - 圆数:
A1/A2/A3(对应 一圆/二圆/三圆) - 序号:该词在本课本圆数内的出现顺序(从 1 起,三位补零)
- 例:
L01-A3-012= 第 1 课三圆第 12 词 - 稳定性:序号基于 PDF 内出现顺序,只要 PDF 不变,重生成 ID 不变
3. 字段定义(完整清单)
| 字段 | 内容 | 来源 src | 必填 | 说明 |
|---|---|---|---|---|
Lesson | 课号 01~16 | pdf | ✅ | |
Tier | A1/A2/A3 | pdf | ✅ | 圆数 |
CardId | L01-A3-012 | 生成 | ✅ | 主键/反馈 ID |
Word | 見出し語(汉字优先,无汉字用假名) | pdf | ✅ | |
Kana | 读音(假名) | pdf | ✅ | |
Pitch | 声调(⓪~⑨) | pdf | ✅ | ◯ 归一化为 ⓪ |
Pos | 词性(标日体系) | pdf | ✅ | 见 §4 |
Def | 释义(简体中文) | pdf + ai | ✅ | A1 无释义时 AI 补 |
Example | 例句原文(多句用 ; 合并) | pdf + ai | ⚠️ | A1 无例句时 AI 补 |
ExampleFurigana | 例句振假名(漢字[かな]) | rule | ⚠️ | 见 §5 |
ExampleDef | 例句中文翻译 | ai | ⚠️ | 每条例句一条 |
Note | 关联词/反义词(関/対) | pdf | ⚠️ | 只保留日语部分 |
Audio | 单词音频文件名 {CardId}.mp3 | tts | ⚠️ | 见 §6 |
ExampleAudio | 例句音频文件名 {CardId}_ex.mp3 | tts | ⚠️ | 见 §6 |
src | 溯源标记(dict:字段→来源) | 生成 | ✅ | 见 §7 |
page | PDF 页码(该词所在页) | 生成 | ✅ | 溯源坐标 |
4. 词性体系(标日)
| 标日词性 | 说明 | github 对应 |
|---|---|---|
动1 | 五段动词 | [動1](1=五段) |
动2 | 一段动词 | [動2](2=一段) |
动3 | カ変・サ変动词 | [動3](3=カ変・サ変) |
形1 | 一类形容词(い形容词) | [形] |
形2 | 二类形容词(な形容词) | [形] |
名 | 名词 | [名] |
副 | 副词 | [副] |
连体 | 连体词 | [連体] |
连 | 接续词 | [接] |
专 | 专有名词 | [名] |
接辞 | 接头/接尾词 | [接] |
代 | 代词 | [代] |
惯用 | 惯用表达 | [補] |
接续 | 接续助词等 | [補] |
- 无词性标注的词条:用启发式填充(
def含~→接辞;短惯用 →惯用;代词 →代),仍无法判定标未标注,进抽查清单。
5. 例句振假名注音规则
- 注音范围:只对「常用漢字表」范围外的汉字注音;表内汉字(2136 字)不注。
- 判定标准:日本文化厅2010 改定版。
- 技术实现:sudachi(或 fugashi)形态素分析 → 取每词读音 → 对「表外汉字」生成注音。
- Anki 格式:字段内写
漢字[かな],Anki 原生渲染振假名(无需 HTML ruby)。 - 片假名词:不注音。
- 例句翻译:每条例句配一条中文翻译,写入
ExampleDef。
6. 音频规则
- 命名:单词
{CardId}.mp3,例句{CardId}_ex.mp3。 - 存放:
标日中级上/Anki牌组/音频/目录。 - 引擎(已定 ✅):Azure TTS,voice=
ja-JP-NanamiNeural,endpoint=https://eastasia.tts.speech.microsoft.com/cognitiveservices/v1,格式audio-24khz-48kbitrate-mono-mp3(与 github 音频策略一致:本地 mp3 打包进 apkg)。 - 合成文本:单词音频合成 Kana(假名读音) 而非汉字形式,保证发音准;例句音频合成 Example 整句,
;/;分隔的多例句替换为。读成多句。 - 凭证:只读
config.local.json,绝不硬编码进脚本。 - 重生成:音频文件名不变,换引擎只需重跑 P4,卡片无需重导。
- 断点续传:已存在且 >100 字节的文件跳过(幂等)。
- 并发/重试:6 线程 + 429/5xx 指数退避。
7. 溯源 src 标记规则
- 每条词记录一个
srcdict,例:
``json {"Word":"pdf","Kana":"pdf","Def":"ai","Example":"pdf","ExampleDef":"ai","ExampleFurigana":"rule","Audio":"tts"} ``
- 只有 PDF 直接抽出的字段标
pdf;AI 补的标ai;注音标rule;音频标tts。 - 卡片表面不显示 src,溯源信息只在 JSON +
卡片索引.tsv。
8. 反馈机制规则
- 卡片背面底部显示
📋 {CardId},用户直接复制。 - 反馈格式:
<ID> <问题类型> <具体内容> - 问题类型 ∈ {释义, 例句, 翻译, 词性, 声调, 关联词, 注音, 音频, 其他}
- 收到反馈 → 读 JSON 定位 → 改该条 → 重生成 .apkg(同 ID,Anki 自动更新)。
9. 分阶段执行规则(Phase gate)
| Phase | 内容 | 通过标准 |
|---|---|---|
| P1 | PDF → JSON(含 CardId/src/page) | 1612 条,抽查 3 课无误 |
| P2 | AI 补齐释义/例句/翻译 | A1 词全部补齐,抽查 |
| P3 | 例句注音 | 表外汉字全部注音,抽查 |
| P4 | 音频合成 | 音频文件数 = 单词数 + 例句数 |
| P5 | 生成 apkg + 抽查校对 | 词性/释义异常项清单清零 |
| P6 | README + 交付 | 反馈约定可跑通 |
- 每完成一个 Phase,停下来给用户看产出,确认后再进下一个。
10. github 参考卡片设计(对齐基准,2026-09-07 核对)
已逐行读
deck-source/templates/4 模板 + CSS(本地reference/)。核心结论:我方字段已覆盖其核心层,不必照搬重交互。
| 维度 | github 做法 | 我方对齐 |
|---|---|---|
| 正面 | 词+注音 ruby、音调、单词音频、例句列表 | Word/Kana/Pitch/Audio |
| 背面 | 全假名+音调、词性徽章、简繁释义、补充、例句注音/翻译/音频 | Kana/Pitch/Pos/Def/Note/Example…/双音频 |
| 音频 | 本地 mp3 [sound:] 打进去(词真人 / 例句 VOICEPEAK) | Azure TTS 本地 mp3(同思路) |
| 圆数标记 | 标签 N3高频/カタカナ語/オノマトペ/②/[他動1] | Tier 徽章(A3红/A2橙/A1灰)+ 词性 |
| 反馈 | JS 跳 GitHub Issues | CardId 直接复制(更轻量) |
| 注音 | 只标常用漢字表外难字 | 按用户要求全文注音(P3) |
| 重交互 | 简繁切换/词典跳转/关联高亮/版本检测 | 第一版不做,聚焦核心学习层 |
11. 抽查校验清单
- ☐ 词性异常项(如
なみだ(涙)①【①】应为【名】) - ☐ 多词联合行(
国際連合/国連)是否拆成 2 卡 - ☐ 乱码中文(
GARBLED_RE)是否截断干净 - ☐ 例句续行是否被误判为独立词条
- ☐ 圆数过渡切分是否准确(对比笔记
03_词汇.md圆数分布) - ☐ 注音只落在「常用漢字表外」汉字
- ☐ 音频文件名与 CardId 一一对应