一个 Python 脚本让 AI 像人类一样逐页精读 PDF,自动生成渐进式知识图谱

痛点:大文件 AI 处理的三个致命伤
把一本 500 页的技术书籍直接丢给 ChatGPT 或 Claude,你大概率会遇到这三种崩溃:
第一,Token 天花板。 现在的上下文窗口虽然动辄几十万 token,但真扔进去一本厚重的 PDF,要么直接报错,要么 AI 开始"选择性失忆"——读到第 300 页的细节,却忘了第 10 页的核心定义。
第二,Chunk 切片的逻辑断裂。 市面上多数 RAG 方案把文档切成固定大小的块,结果第一章的"概念定义"和第三章的"实战应用"被活生生割裂。AI 读完一堆碎片,根本串不起知识脉络。
第三,垃圾信息的干扰。 手动复制粘贴时,目录页、版权页、索引页、空白页一股脑混进上下文,AI 在这些无意义的内容上浪费大量算力,输出的总结往往牛头不对马嘴。
更可怕的是进程中断焦虑——花两小时跑了 200 页,电脑突然死机或 API 限流,前面算的全白干。
echohive42/AI-reads-books-page-by-page 这个开源项目,就是专门来解决这些硬伤的。它不是简单的"PDF 转文字",而是模拟人类精读一本书的完整 workflow:逐页消化、定期复盘、持久存储、最终形成体系化总结。
核心亮点
① 逐页精读
模拟人类阅读节奏,单页分析保留上下文流
这个脚本拒绝粗暴的文本切片。它使用 PageContent Pydantic 模型约束 AI,让模型一页一页地处理,每页提取结构化的知识点列表(knowledge: list[str]),同时维护一个渐进式知识库(progressive knowledge base)。
这意味着什么?AI 读第 50 页时,手头不仅有第 50 页的内容,还携带着前 49 页提炼出的核心概念。它像人类一样带着"前文记忆"继续阅读,而不是把书拆成互不相干的碎片。process_page 函数会把新提取的知识点实时追加到知识库,确保逻辑流不被打断。
② 断点续传
JSON 持久化存储,关机重启也能接着上次进度继续
通过 load_or_create_knowledge_base() 和 save_knowledge_base() 机制,所有中间状态都被写入本地 JSON 文件。你完全可以今晚读前 100 页,明晚开机从第 101 页继续——脚本会自动加载已有知识库,无需重复付费调用 API。
配合 TEST_PAGES 参数,你甚至可以先跑前 5 页测试 prompt 效果,确认输出质量后再全量运行。对于动辄上千页的技术手册,这种可恢复性是省钱省时的关键。
③ 智能降噪
自动识别并跳过目录、索引、空白页,只提取有效知识点
脚本内置 has_content 布尔字段检测。当 AI 判断当前页是目录(TOC)、索引(Index)或纯装饰性页面时,会直接跳过知识提取,避免垃圾信息污染知识库。这种内容感知能力远胜于基于正则表达式的硬编码过滤。
技术实现与灵活配置
项目采用双模型策略:MODEL 负责单页处理(可用轻量级模型降低成本),ANALYSIS_MODEL 负责生成阶段性总结(可用更强的模型保证质量)。通过 ANALYSIS_INTERVAL 参数,你可以设定每读完 N 页就生成一次中期小结(Interval Summary),防止"读完后半句忘前半句"。
输出端完全面向现代知识管理工具:知识点存为结构化 JSON,总结输出为 Markdown 格式,配合彩色终端日志(color-coded output),在命令行里就能清晰看到处理进度和当前页的内容密度。
目录结构也帮你整理好了:book_analysis/knowledge_bases/ 存原始知识点,book_analysis/summaries/ 存各级总结,book_analysis/pdfs/ 保留源文件备份。
适合谁,不适合谁
适合:
- 技术书速读者
:需要快速掌握《设计模式》或《深入理解计算机系统》这类大部头的核心框架,建立初步知识地图。 - 文献综述研究者
:处理多本 PDF 教材,提取关键论点进行横向对比(以 README 为准,需自行测试学术 PDF 的兼容性)。 - 个人知识库建设者
:想把实体书或扫描件转化为可检索的结构化笔记,导入 Obsidian 或 Notion。
不适合:
- 跨页关联密集型阅读
:如果书籍内容严重依赖"翻页对比"(如左右对照的代码示例、跨页表格),单页处理机制会割裂关联性。 - 扫描版/图片型 PDF
:以 README 为准,该项目基于文本层提取,对纯图像扫描件需要额外 OCR 预处理。 - 实时交互问答需求
:这是批处理(Batch Processing)工具,不是聊天机器人。想要"边读边问"的交互体验,需要配合其他 RAG 系统使用。
真正的理解不是信息的堆积,而是知识在时间轴上的渐进式沉淀。
使用小贴士
建议首次使用时,先将 ANALYSIS_INTERVAL设为 10 页左右,观察中期总结的质量。如果发现 AI 对代码示例理解不到位,可以调大间隔让模型看到更多上下文;如果书籍章节较短(如每章 5-8 页),则将间隔设为章节页数,让总结与书籍结构对齐。另外,跑完一本 300 页以上的书会消耗不少 API token,建议先用TEST_PAGES = 3验证配置,确认输出格式符合预期后再全量运行。
持续分享优质 AI 开源项目与源码实战,一个人摸索很容易踩坑。
对 Agent、智能体感兴趣的朋友,无论新手还是大佬,都欢迎一起交流。私信「时之」拉你进群。
想拿到仓库地址,直接动手试试?
GITHUB: https://github.com/echohive42/AI-reads-books-page-by-page
夜雨聆风