AI-reads-books-page-by-page AI 逐页阅读 PDF 并提取知识
AI-reads-books-page-by-page 部署教程:AI 逐页阅读 PDF 并提取知识
本教程将指导你部署 AI-reads-books-page-by-page,一个使用 AI 逐页分析 PDF 书籍,提取知识点并按指定间隔生成摘要的 Python 脚本。
📋 准备工作
1. 环境要求
- Python 版本:3.8 或更高版本。
- 依赖管理:
pip(Python 包管理器)。 - 网络:能够访问 OpenAI API(或其他兼容 API)以进行 AI 分析。
- API 密钥:有效的 OpenAI API Key(或兼容的 API 端点与密钥)。
2. 获取项目
从 GitHub 克隆仓库到本地:
1 | git clone https://github.com/echohive42/AI-reads-books-page-by-page.git |
🛠️ 安装与配置
1. 安装 Python 依赖
项目所需依赖都列在 requirements.txt 中。建议在虚拟环境中安装:
1 | # 创建虚拟环境(可选) |
requirements.txt 文件内容通常包含 openai、PyPDF2 或 pypdf、pydantic 等库,具体以仓库中的文件为准。
2. 配置脚本
你需要对 read_books.py 脚本进行以下配置:
设置 PDF 文件:将你想要分析的 PDF 文件放置在项目根目录(即与
read_books.py同级)下。修改脚本中的常量:用文本编辑器打开
read_books.py,找到文件开头的配置区域,修改以下关键常量:PDF_NAME:改为你的 PDF 文件名,例如"my_book.pdf"。MODEL:指定用于页面处理的模型,例如"gpt-4o"或"gpt-3.5-turbo"(需确保你的 API 密钥有权限访问)。ANALYSIS_MODEL:指定用于生成摘要的模型,可以与MODEL相同或不同。ANALYSIS_INTERVAL:间隔页数,例如10表示每处理 10 页生成一次阶段性摘要;设为None则跳过阶段性摘要。TEST_PAGES:用于测试的页数,例如5表示只处理前 5 页;设为None则处理整本书。
设置 OpenAI API 密钥:脚本需要 API 密钥来调用模型。推荐通过环境变量设置,在终端中执行(替换为你的密钥):
1
2export OPENAI_API_KEY="你的OpenAI_API密钥" # Linux/macOS
# 或 set OPENAI_API_KEY="你的OpenAI_API密钥" # Windows (CMD)或者,你也可以在脚本中直接设置,但不推荐,因为有泄露风险。
3. 使用自定义 API 端点(非 OpenAI 官方)
如果你想使用兼容 OpenAI API 格式的本地或第三方服务(如 Ollama、LocalAI),需要修改 read_books.py 中初始化 OpenAI 客户端的部分,指定 base_url。找到类似以下代码并修改:
1 | from openai import OpenAI |
🚀 运行脚本
完成配置后,在终端中执行以下命令启动分析:
1 | python read_books.py |
执行过程
- 目录准备:脚本会自动创建
book_analysis/目录及其子目录:knowledge_bases/:存储 JSON 格式的知识点数据。summaries/:存储 Markdown 格式的阶段性摘要和最终摘要。pdfs/:存放原始 PDF 的副本(可选)。
- 逐页处理:脚本逐页读取 PDF 内容,调用 AI 模型提取该页的知识点,并逐步积累到知识库中。进度信息会在终端显示。
- 生成摘要:
- 每处理
ANALYSIS_INTERVAL页,生成一个阶段性摘要并保存为 Markdown 文件。 - 处理完所有页面后,生成一个完整的最终摘要。
- 每处理
- 输出结果:所有结果都保存在
book_analysis/目录下,其中知识库会持续更新,支持断点续传(即中断后重新运行会从上次保存的状态继续)。
⚙️ 高级自定义与故障排除
自定义提示词模板
脚本中的 process_page() 和 analyze_knowledge_base() 函数包含发送给 AI 模型的提示词(Prompt)。你可以根据需求修改这些提示词,以改变提取知识点的粒度或摘要的风格。
处理大文件或长书籍
- 费用控制:处理整本书可能产生较高的 API 费用。建议先用
TEST_PAGES参数(如TEST_PAGES=5)进行小规模测试,确认效果和成本后再处理全本。 - 速率限制:如果 API 有速率限制,脚本处理大量页面时可能需要暂停。你可以考虑在
process_page()函数的循环中添加time.sleep()来避免触发限流。 - 上下文窗口:
MODEL的上下文窗口大小决定了单次能处理的最大文本量。对于页面文字极多的 PDF,可能需要更长的模型或对页面文本进行分割。
常见问题排查
ModuleNotFoundError: No module named 'openai':未安装依赖。执行pip install -r requirements.txt或单独安装pip install openai pypdf pydantic。- API 密钥错误或未找到:确保环境变量
OPENAI_API_KEY已正确设置。如果使用自定义端点,检查base_url和api_key是否正确。 - PDF 无法读取或乱码:确保 PDF 文件是文本型 PDF(可选择复制文字),而不是扫描件。对于扫描版 PDF,需要先使用 OCR 工具提取文字。
- 处理中断后如何继续:脚本在每次页面处理后都会更新
knowledge_bases/下的 JSON 文件。如果中断,重新运行脚本,它会加载已有的 JSON 文件并从上次中断的地方继续。 - 输出的 Markdown 摘要格式混乱:检查用于摘要生成的提示词,可以明确要求 AI 输出格式良好的 Markdown。
通过以上步骤,你可以成功运行这个 AI 逐页阅读 PDF 的工具。它特别适用于从长文档(如书籍、报告)中系统性地提取知识和生成摘要,适合研究者、学生或任何需要高效处理大量文本的人。使用时请注意 API 费用和 PDF 的版权问题。




