# 专利通俗解读工具(`tools/patent_reader/`) 阅读模式专用脚本,与交底书主流程工具(`tools/shared/`、`tools/crawl/` 等)分离。 ## 目录结构 ``` tools/patent_reader/ ├── shared/ # 共享配置与路径 ├── extract/ # PDF / 全文 / 附图取证 ├── analyze/ # 权要树、线索包、校验与 lint └── vault/ # Obsidian 入库、Canvas、关联与库环境 ``` | 子目录 | 文件 | 作用 | |--------|------|------| | `shared/` | `common.py` | 领域路由、IPC 提示、路径与环境变量 | | `extract/` | `fetch_patent_pdf.py` | **按公开号下载全文 PDF**(源表 `references/patent_pdf_sources.yaml`;状态含自动判别的 `patent_type`) | | | `fetch_design_views.py` | **外观设计视图取证**(国知局会话 + 详情页 `/imgs` 序号探测;无 PDF CDN 时用) | | | `extract_patent_text.py` | 全文/PDF 取证 | | | `figure_extract.py` | caption+bbox 裁切 + 质量门 | | | `extract_patent_figures.py` | PDF 附图 CLI → manifest | | `analyze/` | `build_context_anchor.py` | 技术落地线索包 | | | `build_claim_mermaid.py` | 权利要求 mermaid | | | `validate_claim_tree.py` | 权项树校验/规范化 | | | `validate_public_clues.py` | 附录 B 线索校验 + 置信度筛选 | | | `lint_patent_note.py` | 笔记结构校验 | | `vault/` | `obsidian.py` | Frontmatter、Canvas、库 bootstrap、Mermaid | | | `schema_vault.py` | Structure/Appearance Schema 写入笔记/Canvas | | | `clue_vault.py` | `clues/` 落地、附录/旁注/Canvas | | | `desc_paragraphs.py` | 说明书 `[000N]` 解析与悬停 wikilink | | | `note_cites.py` | 笔记引用增强 | | | `patent_link.py` | 库内专利关联规则 | | | `write_patent_obsidian_note.py` | 入库主入口 | | | `build_patent_canvas.py` | JSON Canvas 图谱 | | | `link_patent_notes.py` | 交付后库内关联与全局 Canvas | | | `materialize_public_clues.py` | 对已有解读补跑线索落地 | | | `check_obsidian_env.py` | 探测/持久化库路径 | | | `setup_obsidian_vault.py` | 库初始化(开发/排障) | | 根 | `requirements.txt` | 可选依赖(`pymupdf`) | 库内模板:`assets/obsidian/`(CSS、`*.base.yaml` 源稿、索引页;拷库时写成 `.base`)。 流程见 **`prompts/reader/patent_plain_reader.md`**。 ## 快速开始 ```bash pip install -r tools/patent_reader/requirements.txt # 先探测库路径(强烈推荐已装 Obsidian 并开库) python tools/patent_reader/vault/check_obsidian_env.py --auto-accept # 仅公开号:先下载 PDF(Google Patents 页 → CDN;见 patent_pdf_sources.yaml) python tools/patent_reader/extract/fetch_patent_pdf.py \ --pub CN119961390A -o tmp/patent_reader/demo python tools/patent_reader/extract/extract_patent_text.py \ -i tmp/patent_reader/demo/source/CN119961390A.pdf \ -o tmp/patent_reader/demo --pub-number CN119961390A # 外观设计(CN…S):常无 PDF CDN → 用国知局视图取证 pip install -r tools/crawl/requirements-cnipa.txt python tools/shared/browser.py --probe # 无 Chrome/Edge 时才:python -m playwright install chromium python tools/patent_reader/extract/fetch_design_views.py \ --pub CN309939145S -o tmp/patent_reader/demo_design # → figures/images/view_001.jpg … + figures/manifest.json + source/*_design_brief.json ``` 入库用 `vault/write_patent_obsidian_note.py`(内含 bootstrap);勿再单独要求用户跑 `setup_obsidian_vault.py`。 ## 环境变量 | 变量 | 说明 | |------|------| | `PATENT_READER_OBSIDIAN_VAULT` | Obsidian 库根(兼容 `PATENT_DISCLOSURE_OBSIDIAN_VAULT`);也可用 `check_obsidian_env.py --set` 持久化到 `~/.patent-disclosure-skill/obsidian_vault.txt` | | `PATENT_READER_PAPERS_DIR` | 库内目录,默认 `Research/Patents` | | `PATENT_READER_OUTPUT_DIR` | 未配置库时输出目录 | | `PATENT_READER_GLOSSARY_DIR` | 术语目录,默认 `Research/术语` | 交付后可选社区插件引导:`prompts/reader/obsidian_plugin_guide.md`。 关系图配色与插件说明:`docs/obsidian-setup-guide.md`(原生 Groups,无需插件)。