pdf-book-decompose · 扫描件 PDF 拆书流水线
定位
把一本扫描件 PDF(几百页、上百 MB、无文本层)变成三样东西:① 可全文检索的 full.md ② 一份方法论提炼报告 ③ 沉淀进技能库的可复用资产。
实测:百页级扫描件(116MB/204 页、176MB/278 页)OCR+合并约 2 分钟。
> 📌 正文只留「决策点 + 判据」;命令、实测数据、全量踩坑在 references/01~07——执行某步前先读对应文件(索引见文末)。工件落盘=与源文件同目录:书目录下建 _探测/ _转档/ _提炼/ _交付/ 分区;旧版独立工件仓已停用,统一用书目录单仓|开工先查书目录:有 full.md → 跳过 S1–S5(见 S12)。
S0 通道选型(开工前先定,别默认 camscanner)
先探文本层再定通道。扫描件优先 camscanner 出 md(结构+页码+内容三者兼得);WPS GUI→docx→markitdown 仅在 camscanner 不可用(>200MB / 网络受限)时兜底。两通道正文保真同为 97%±,差距在结构不在内容;页码只在 camscanner 侧保留(要缺页检测必须走 camscanner)。wpscli pdfinfo 本地探测、不上传、不耗 VIP。
📌 通道对比全表 + 三本样书复测 → references/01 §七/§八。
S1 探测(别白跑 OCR)
extract_text() 长度≈0 → 扫描件,走本流水线;有文本层 → 别 OCR,直接用 pypdf / markitdown 直提。
⚠️ 有文本层 ≠ 每页都有 → 抽 6~10 页算零字页比例(<5% 可直提;>20% 残缺,需 OCR 或双通道互补)。
📌 透印判据全文 → references/01 §十一。
S2 建目录 + 拆段
书目录下建 _转档/extract/ 放中间产物(原件在书目录,不复制)。建目录时同步创建《拆解进度表》(模板 references/07)——跨会话拆书靠它续接,没写进表里的进度等于没发生。拆段必需(camscanner 无分页参数):25~30 页/段、单段 ≤20MB;>40MB 先跑 scripts/split_pdf.py 按 15MB 预拆(避开上传 504)。
S3 并发 OCR
camscanner-cli pdf convert 分段并发;前置 camscanner-cli auth status 须 authenticated: true(token 存钥匙串,到期重 auth)。完整命令 → references/01 §二。
S4 校验(不可跳过)
ls extract/*.md 数量必须 = 段数。并发上传偶发 unexpected EOF → 失败段单段重跑一次即可,禁整批重来。
S5 合并 + 缺页检查
按序拼接,段间插 <!-- ===== extract/partN.md ===== --> 便于行号溯源。缺页检查=比目录页码与正文章节连续性(扫描漏页不报错,安静地少几页)→ 标【推断·OCR缺页】。
S6 分段提炼(别让主模型通读全文)
按章节派子代理并行精读,各返回结构化笔记(主题 / 方法 / 阈值 / 案例 / 短句 / 局限),主模型只汇总。回传必须摘要化——原文驻留主会话=上下文雪球。
📌 派工 prompt 与笔记格式 → references/09。
S6-R 回传自检门:可还原检验(2026-10-10 拍板引入 · 源自《思维导图高效工作法》p156/p161)
子代理回传前必须自过两级检验,不通过不许回传(写在派工 prompt 里强制):
- R1 语义可还原:合上原文(不再回看分段文件),仅凭自己的笔记复述该板块——① 一句话核心主张 ② 各小节要点 ③ ≥2 个案例(含页码)④ ≥3 项硬阈值。复述不出的项 → 回原文补,或删掉该条。
- R2 证据可回溯:笔记里每条锚点页码,能否在原文定位到对应内容?定位不到或对不上的 → 判为空锚点,必须修正或删除(无锚点=未验证=不写)。
🔴 假通过警戒(本门的命门):程序性材料(操作步骤/流程/合同条款)用关键词能"复述大意"却丢掉顺序与判定条件——R1 会通过而实际失真。此类板块的 R1 须改为"复述顺序 + 判定条件",不能只复述要点。
主模型侧只抽检:收到笔记后抽 1~2 条锚点 grep 原文验证即可——全检=重读原文,违背分段初衷。
S7 成稿 + 入库
主文档 方法论提取与实现路径评价.md,头部写清:来源路径 / 页数体积 / OCR 通道与段数 / 合并后行数字符数 / 出版信息 / 命名警示。然后:提炼 → 建/改技能(走技能写作规范门禁)→ 落工作日志 → present_files。
S7-A 逐条失效边界
每条方法论/框架/原则各带一条边界("提炼品 vs 鸡汤"的分水岭,边界绑在条目上):
- **〔名〕**:〔正文〕 → 🎯 **触发**:〔什么时候该用它〕 → ⚠️ **边界**:〔什么情况下会变坏事 / 被误用成什么〕
三型择一(禁写"注意适用范围"这类空话):① 误用型 ② 条件型 ③ 反转型。自检:条目数=触发数=边界数。文学类(S11)不适用。(触发半行
S7-B 知识库蒸馏收尾三件套
> 收尾 ≠ 总账登记完——知识库(<你的知识库>)不写,Obsidian 里就查不到这本书。
四件(缺一即未收尾):① 蒸馏卡 <你的知识库>\<书名>·拆书蒸馏.md ② 永久笔记卡(一句话+用法+失效边界+回链)③ MOC 重跑(索引重建脚本,头部明令"不要手工编辑")④ 总账回写。
金句纪律:蒸馏卡金句先 grep 回 full.md 拿 PDF_PAGE 锚点再写(凭印象转写必错页码)。
📌 三件套全文格式 → references/04 §九。
S8 保真度抽检(回答「从原书到提炼丢了多少」)
真值法:AI 多模态直读原书页面逐字转录 → 与转档产物比对 → 正文页召回 ≥95% 才准进下游。🔴 禁止用 OCR 产物互当基准(循环论证,曾据此算出假数字)。
🚦 抽样四类必选:纯文字 / 图文混排 / 表格界面 / 图卡·清单版式的「卡片标题区」——最后一类最易被噪声整体替换(资源名→乱码)而字符级指标与页码连续性全都看不出;清理噪声时删除须有对照政策,无法判定则「保留+加注」,禁静默删除(实例:《见世面》资源区 8 页标题全丢,见 references/05 §6.4)。
📌 真值法脚本 / 读图三坑 / 图卡书实战 / 降级三重校验 / 样本召回数据 → references/05。
S9 大部头(>200 页)作业要点
区别在失败成本(拆错段/选错通道,重跑几小时)。先探规模再定通道;10 段约失败 1 段 → 逐段查 log + 单段重跑;S8 不可省;禁止通读全文。📌 六步表+耗时 → references/01 §三。
S10 版权红线(转档产物的下游使用)
内部学习 / 本地检索 → 可全文转档、作知识库、内部提炼;对外发布 / 商业分发 → 须过改编权与汇编权红线(禁按章复述、禁成批罗列金句,见 S14 / S15)。
📌 两档边界全文 → references/04。
S11 文学类书籍:提取目标换成「叙事资产」
> ⚪ 尚无文学类书完整实测(口径待首例验证)。与工具类根本区别:工具类提「怎么做事」,文学类提「怎么写」——价值在行文本身。
六类叙事资产(人物 / 场景 / 冲突 / 意象 / 物化情绪词 / 语言技法)+ 子代理 prompt 增补 → references/02。
S11-B 经典著作:走「素材原料轻量通道」(轨 B)
> 第三类输入:思想 / 科学 / 人文经典(《战争论》《金枝》《物种起源》类)——价值在「能查到、能引用、能当砖料」,不在方法论穷尽登记;成本压到全链 S0–S16 的 1/5 以内。
> 🔴 抽帧适用性红线(开工第一道闸):素材类抽帧可接受(最坏只是漏素材);技术功能类禁用抽帧(漏内容 → 理解偏差甚至错误理解)。
**五步轻量流程(S0'–S4')+ 概念卡字段表 + 边界表(不发技能包 / 不全量 S8 / 不进 TeamCreate)+ 版权纪律 → 全量见 references/08。
S12 双仓分工与书稿登记
书目录=唯一仓:原件与全部加工产物按 _探测/ _转档/ _提炼/ _交付/ 分区落盘;书稿台账固定在自选的固定路径。
📌 单仓分区制全文 / 登记表字段 / 命名规范 / 7 本实测 → references/03。
S13 缺页判别(五类)
| 类 | 判据 |
|---|---|
| A 真缺页 | 页序连续 ∧ 页眉页码跳号 → 有漏页必须分段建映射表 |
| B 透印陷阱 | 增强是验证手段不是证据;定性用原图直方图 |
| C 零字页 | 印刷页码连续性(最硬) > 淡字密度 > 位置规律 |
| D 章名验证 | 竖排章扉拆多行 → 整句 grep 必 0 命中,改分片关键词组合 |
| E 重复页 | 成对重复=同一展开面重扫;必须成对删 |
📌 A–E 全文(判别链 / 失效方法表 / 页脚拼图法 / 实测数据)→ references/04 §六。
> 🔴 贯穿铁律:唯一真值是原书页面本身;带裁切窗口的采证件必须与「页对象索引」强绑定并双标注。
S14 面向「真实读者」的解读稿产出
> 触发:「拆书任务,全文阅读理解,写一篇解读稿给真实读者」——S7 给自己看,本节给外部读者看。
四条红线:① 🔴 禁按章复述(=缩写本,触改编权)→ 重排为「读者关心的问题」② 原书案例必须换掉或压成「证明什么」,金句禁成批罗列 ③ 第一人称、有判断、敢批评 ④ 遮住书名测试。
📌 六段结构 + 四路批评判据 + 对照表 + 两例实测 → references/04 §七 / §十二。
🧩 导图兼容约定。四条,写作时同步满足,否则下游抽不出可靠结构:
1. 核心条目统一用 **N. 条目名——一句话定义。**(加粗 + 编号 + 破折号定义)→ 导图主干的直接抓取点
2. 顶层条目控制在 3~7 条——超出则下游必须砍,砍=丢信息(对应组块双闸)
3. 每条给一句可独立成立的定义(脱离上下文也看得懂)→ 导图节点直接取用
4. 需指定配图风格/投放平台时,在文首写 mindmap_style: tech|biz|life|art|sci|neutral / mindmap_platform: wechat|xhs|zhihu|toutiao
> 消耗方:同系列技能「思维导图配图」(mindmap-render,已在技能市场上架)——解读稿按上述约定写,导图直接抽条目成图。改上游是为了让下游从「AI 猜」变成「AI 抄」。
S15 对外交付形态:把技能点整包成「可交付 SKILL」
> 触发:「技能点要全部提炼出来,作为可对外交付的 SKILL 包」——S7 内部底稿 · S14 读者稿 · S15 别人拿到就能跑。
🚦 前置闸门:技能包的必要条件是「内容可重复」——读物内容不具备可重复性(如社会科学类读物的一次性论断 / 个案记述 / 时效性清单)→ 不落包,只做 S6、S7 骨架 + S14 解读稿 + S16 蒸馏。判据:能否被别人在不同场景反复套用;不能则不做。实例:《带孩子低成本见世面的100种方法》=社会科学类读物 · 内容不可重复 → 明确不做 S15。
包结构:SKILL.md(须含 source:)+ references/(能力全图 / 提示词库 / 流程 SOP / 风险坑清单)。
七条硬约束:穷尽登记不取舍 · 必含 source: · 剥离本机依赖 · 原书 bug 如实带出 · 参照 S10 · 交付通用能力非本机复刻 · 能被对方直接装上(ASCII 名 / 00-INSTALL-FIRST.md / zip + 单文件双形态 / 禁裸 ---)。
📌 完整规程 + 能力压测门 + 出厂质检 7 组 → references/04 §八 / §十一;跨场景交付另有专门工程流程。
S16 「一页检查表」产出(⚪ 尚无实例交付)
清单体:动词开头、可打勾、有停点。形态硬要求:严格一页 | 动词开头可判定(禁名词短语)| 每条「检查项 + 停点」| 按使用时机分组 | 每条带「不满足会怎样」| 禁抄 S14 段落 / 复述案例 / 列金句。
四段式:动手前 → 进行中(停/转)→ 收尾(自检)→ 三条硬停点。产出 一页检查表-〔书名〕.md → references/06。
S17 工厂经营自查表(⚪ 尚无实例交付)
S16 的行业定向实例——把通用原则翻译成工厂语汇(产线 / SKU / 翻单 / 排产),填进 S16 四段式骨架。
使用口径:① 先补阈值再用(「待补」空缺时只能当提问清单)② 产出归 20-工厂业务,不进拆书工件仓 ③ 含本厂语汇属内部工具,不随 S15 对外交付。
⚠️ 待补阈值不得由 AI 编造→ 梳理成「提问清单」交业务侧。→ references/06。
S18 团队作业成本纪律
> 机制问题约七成;最大浪费 = 成员全文回传驻留主会话(上下文雪球)。
五条:回传摘要化 · 分工不重叠 · 依赖前置 · 不过度并行 · 成本可归因。
📌 五条全文 + 《情节!情节!》510 分归因检讨 → references/04。
踩坑点
> 📌 1–16 条全表 + 2026-09-29 新增 7 条 → references/01 §九 / §十。此处只留必须当场记住的判据。
- 高频五条:① camscanner 无分页参数 → pypdf 先拆,单段 ≤20MB ② 并发必有失败段 → 单段重跑,禁整批重来 ③ OCR 缺页不报错 → 目录页码反查 + 内容探针 ④ 别让主模型通读全文 ⑤ 中文路径用
r'...'。 - 🔴 编号序列缺口 ≠ 内容缺失(连踩 3 次):可能是不印页码 / 人工删空白页 / 重做批次跳号 → 先问「这份 PDF 有没有被删过页?」
- 🟢 截断句判据:跳号处前页完整收尾 ∧ 后页完整开头 → 中间是空白页;前页停在半句 → 真缺页。
- 🔴 多套编号口径并存(最高频隐性错误)→ 防呆三件套:头部写页码口径约定 / 每处页号带口径后缀 / 下游一律按 0-based 切。
- 🔴 独立复核是门禁不是礼貌:每个关键结论至少两条独立取证路径,优先采信更靠近原始页面的方法。
通用原则(引用不重复定义)
- 实测前置:S1/S4/S5 三步校验即为验证门;S8 是"验证门本身有没有验对"的元校验——用 OCR 产物互当基准属于未验证。
- 上游产物不校验不进下游:S4 段级校验、S5 缺页检查就是这道门。
- 错误回传四段式:OCR/上传失败按"原因 / 可修正参数 / 可否重试 / 建议"记录。
references 索引
| 文件 | 覆盖 |
|---|---|
01-详细命令与踩坑.md |
命令集 / 工具版本 / 耗时基准 / 异常对照 / 通道对比 / 踩坑 1–16+7 / S1 透印判据 |
02-文学类书籍提取维度.md |
S11:叙事资产六类 / 子代理 prompt / 物化情绪词 |
03-双仓分工与书稿登记.md |
S12:单仓分区制 / 登记表字段 / 命名规范 |
04-拆书产物清单与质检门.md |
S13 A–E 全文 / 三道质检门 / S14 / S15 / S7-B 收尾三件套 / S18 全文 |
05-保真度抽检S8.md |
S8:真值法脚本 / 读图三坑 / 降级三重校验 |
06-一页检查表与工厂自查表.md |
S16 / S17:形态规范 / 四段式 / 谋略→工厂映射 |
07-拆解进度表模板.md |
S2:跨会话进度文件模板 |
08-素材原料轻量通道-轨B.md |
S11-B 依据:五步轻量流程 / 概念卡字段 / 边界表 / 版权纪律 |
09-分段提炼子代理.md |
S6 依据:子代理派工 prompt / 结构化笔记格式 |
溯源/E表.md |
L2-E 溯源层(默认不读入):source_authority / last_verified 沿革全量 + :2026-10-01 由 7352 瘦身至阈值内,细节全量下沉 references/(S13 A–E / S14 / S15 / S7-B / S18 / 通道实测 / 透印判据已逐字迁入 01/04/05/06)。 |
- 后续新增一律先落 references/,正文只增"一句判据 + 指针";逼近阈值时须再下沉。 |