拆分书籍
该技能用于把一本或一期包含多个部分的 PDF,拆成“每篇文章、每章、每个案例或每个条目一个 PDF”,并按主标题命名。
技能名称 split-books 保留英文,是为了符合 Codex 技能命名规则;对用户展示和说明统一使用中文“拆分书籍”。
工作流程
检查来源文件
- 列出目标 PDF 和已有输出目录。
- 未经用户明确要求,不覆盖已有拆分结果。
- 优先新建
拆分文章_按标题、拆分章节或split-output等输出目录。
判断 PDF 类型
- 文本 PDF:优先用文本提取识别标题、目录和页码。
- 扫描 PDF:先抽样渲染页面,再用中文 OCR;确认
chi_sim可用后再依赖 OCR。 - 混合或质量较差的 PDF:结合目录页、页面截图和人工页码表处理,并保留核对报告。
确定拆分边界
- 期刊、文章:优先使用用户指定的结束标记,常见为
责任编辑。 - 书籍、章节:优先使用目录页页码或清晰的章节标题页。
- 同时存在目录和结束标记时,用目录或标题页确定起点,用结束标记核验终点。
- 期刊、文章:优先使用用户指定的结束标记,常见为
按主标题命名
- 用户要求只保留主标题时,删除
——、—、--、一一等分隔符后的副标题。 - 删除作者名、栏目名、页眉页脚、期刊期号和明显 OCR 噪音。
- 保留标题本身需要的中文引号、冒号等标点。
- 用户要求只保留主标题时,删除
输出文件和报告
- 每篇文章、每章或每个案例输出一个 PDF。
- 同步生成 CSV 报告,至少包含:源 PDF、输出 PDF、标题、起始页、结束页、页数、识别方式。
- 完成后核对:报告每一行都有对应文件,页数与 PDF 实际页数一致。
明确处理异常
- 连续页面出现同一结束标记,但中间没有新标题时,应合并到前一篇,不能生成假文章。
- OCR 标题不可靠时,使用人工校正的目录页码表。
- 边界无法判断时,列为疑似问题清单,不静默猜测。
内置脚本
常见文章型 PDF 可先使用:
python3 scripts/split_pdf_articles.py INPUT.pdf --output OUTPUT_DIR
常用参数示例:
python3 scripts/split_pdf_articles.py INPUT.pdf \
--output OUTPUT_DIR \
--start-regex '摘\s*要|摘要|内容提要' \
--end-regex '[((]\s*责任编辑\s*[::]' \
--main-title-only
脚本只是起点。遇到年鉴、扫描期刊、页码混乱或标题识别不稳定的文件,应在本地调整脚本,并把人工修正记录写入报告。
参考文件
遇到以下情况时读取 references/splitting-patterns.md:
- 需要在目录拆分、标记拆分、OCR 或人工页码表之间选择;
- 处理扫描 PDF;
- 清理中文法律期刊标题噪音;
- 记录核验结果和异常情况。