autoContents

NatsUIJM活跃维护

扫描版 PDF 缺少书签时,用视觉语言模型识别目录页,自动生成可跳转书签,省去手动逐条添加的麻烦。

扫描版 PDF 的书签自动生成工具,可以根据 PDF 目录页内容,为 PDF 设置可跳转的书签。

v1.1.0发布于 2026-10-05 10:52 UTC272star17fork同步于 2026-11-07 07:31 UTC

怎么上手

由 README 提炼,执行前请确认
解压后双击 `启动 autoContents.command`(macOS)或 `启动 autoContents.bat`(Windows);源码方式:`pip install -r requirements.txt`
硬件要求按 README 说明

README 未说明本地显存或 GPU 要求,识别工作由云端 LLM 完成;程序本身在 Windows/macOS 上运行,源码方式需 Python 3.13。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

扫描版 PDF 书签自动生成工具,靠多模态 LLM 读目录页,一键生成可跳转书签

扫描版 PDF 缺少书签时,用视觉语言模型识别目录页,自动生成可跳转书签,省去手动逐条添加的麻烦。

核心能力

  • 用多模态 LLM 识别目录页图片并自动生成可跳转书签
  • 支持任意 OpenAI 兼容服务商,模型名可配置切换
  • 识别罗马数字前言页码并计算偏移,排序置于正文前
  • 提供 CSV 导出/合并脚本,可手工修正目录层级
  • 可作为 MCP 服务器供 AI 助手调用书签生成能力

容易踩的坑

必须自备支持视觉/多模态的 LLM API Key,否则无法识别目录页;网页 UI 配置优先于 static/llm_config.json 和 .env,改 .env 可能不生效;macOS 从 GitHub 下载 ZIP 会丢失执行权限,需先 chmod +x *.command;项目为 source-available 专有许可,商业使用需作者书面授权。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

1 个版本v1.1.0
  1. v1.1.0最新正式版2026-10-05 · 2026-10-05 10:52 UTC

    What's Changed

    New Contributors

    Full Changelog: https://github.com/NatsUIJM/autoContents/commits/v1.1.0

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    autoContents

    当前版本:v1.1.0

    autoContents 是一款专为扫描版 PDF 设计的书签全自动生成工具,能够基于目录页内容创建可跳转书签。上传 PDF 文档后无需进行任何其他操作,等待 1 分钟左右即可获取处理结果。

    贡献者致谢

    本项目的可用性离不开社区的反馈与代码贡献,感谢以下参与者:

    • Daxoel (@4965898) —— 贡献 v1.1.0 的核心功能:任意 OpenAI 兼容 LLM 服务商支持、罗马数字页码识别与前言偏移计算、拖拽上传 PDF、PDF 完整性预检、启动脚本兼容性修复。他另在 issue #16 中提出了「支持其他 MaaS 平台」的需求,直接促成了这项改进。
    • @Little-White3110 —— 就导出文件命名规则与自定义导出文件名提出改进建议(#12、#14),并贡献了 3月29日版本的文件重命名功能。

    欢迎通过 Issue 反馈问题、通过 Pull Request 贡献代码,贡献内容同样适用本项目许可协议。

    下载使用

    前往 Releases 下载对应系统的压缩包,解压后双击 启动 autoContents.command(macOS)或 启动 autoContents.bat(Windows)即可,无需安装 Python 或任何依赖。首次使用需在页面中填入自己的 LLM API Key。

    若需自行配置环境运行源码,请参考下文「配置环境」章节。

    v1.1.0 更新内容

    本版本更新内容如下(贡献者见上方致谢):

    • 支持任意 OpenAI 兼容的 LLM 服务商(通义千问、书生·浦语、OpenAI、DeepSeek 等),不再局限于通义千问
    • 所有硬编码模型名改为变量/配置读取,可通过 .env 文件或网页 UI 随时切换模型
    • 修复了 Windows 下 windows_start.bat 在 PowerShell 中的兼容性问题
    • 前端错误信息增强:子进程的 stderr 会直接显示在页面上,便于排查问题
    • 增加 PDF 文件完整性预检(页数为 0 时提前报错)
    • 支持罗马数字页码(v1.1.0):自动识别前言/序言的罗马数字页码(如 xv、xviii),计算前言偏移量,排序时副文本正确置于正文之前
    • 支持拖拽上传 PDF(v1.1.0):可直接将 PDF 文件拖入网页,无需点击按钮选择

    更新日志

    v1.1.0

    • 新增罗马数字页码支持:roman_to_int() 转换函数,前言偏移自动计算(calculate_roman_offset),并发采样前言页面
    • 修复前言目录排序:罗马数字条目(Foreword、Preface 等)正确排在正文章节之前
    • 新增拖拽上传:PDF 文件可直接拖入网页,带蓝色高亮反馈
    • 前端错误信息增强:显示子进程 stderr,便于排查

    v1.0.0

    • 支持任意 OpenAI 兼容 LLM 服务商
    • 硬编码模型名改为变量/配置读取(三层配置体系)
    • 修复 Windows PowerShell 启动兼容性
    • PDF 文件完整性预检

    如果想先看看该工具的实际表现情况,请点击这里。

    适用文档

    适用于全部自带目录页面的中英文文档。

    Step 1 下载程序

    请点击页面顶部的绿色按钮Code,然后点击Download ZIP以下载程序源码。

    Step 2 配置环境

    2.1 配置 LLM 服务

    本工具需要使用支持视觉/多模态的 LLM 模型来识别 PDF 目录页图片。你可以选择任意 OpenAI 兼容的 LLM 服务商。

    1. 注册账号:如果没有阿里云账号,请先注册一个。
    2. 实名认证:参考实名认证文档对阿里云账号进行实名认证。
    3. 获取 API Key:前往百炼控制台(API-KEY管理)然后创建一个 API-KEY。
    4. 如果你有高校学生或教师身份,可前往阿里云高校计划申请一些优惠。具体政策以该网页为准。
    1. 前往 InternAI 注册并登录。
    2. 在个人中心获取 API Key。
    3. 可选模型:intern-latest、internvl-latest 等(详见 模型列表)。

    任意提供 OpenAI 兼容 API 的服务商均可使用,只需提供:

    • API Key
    • Base URL(服务端点)
    • 模型名称(须支持视觉/多模态)

    2.2 配置运行环境

    1. 点击这里下载Python安装程序。下载完成后双击打开,然后按照下图依次操作:勾选Add python.exe to PATH -> 点击Install Now -> 安装完成后,点击Close。

    如何勾选Add Python to PATH

    1. 双击根目录下的windows_install.bat,直到运行完成(Setup complete.)。
    1. 点击这里下载Python安装程序。下载完成后直接安装即可。
    2. 打开"终端"APP,依次输入chmod +x (注意最后面有空格),然后将macos_install.command文件拖入终端窗口,按return。
    3. 同样的方法,对macos_start.command执行一次chmod +x (若双击启动无反应,说明该文件缺少执行权限)。

    2.3 配置 LLM 凭证(.env 文件)

    将 .env.example 复制为 .env,并填写你的 LLM 服务信息:

    OPENAI_API_KEY=你的API密钥
    OPENAI_BASE_URL=你的服务端点
    OPENAI_MODEL=模型名称
    

    也可以跳过此步,直接在启动后的网页 UI 中填写配置(见 Step 3.1)。

    Step 3 使用方法

    3.1 运行程序

    1. 双击根目录下的windows_start.bat或macos_start.command来启动程序,浏览器界面会自动打开。
    2. 如果浏览器未打开,请在弹出的命令行窗口中找到http://127.0.0.1:5xxx,并复制到浏览器以打开。
    3. 在网页的「LLM 配置管理」中填写 API 密钥、Base URL、模型名称,然后点击保存 LLM 配置。可点击「测试 LLM 服务」验证配置是否正常。

    配置优先级:网页 UI 实时配置 > static/llm_config.json 配置文件 > .env 环境变量

    3.2 上传 PDF 并处理

    1. 点击"选择PDF文件",然后选择需要处理的 PDF 文件。
    2. 点击"开始执行",等待进度条走完,浏览器会自动下载带有书签的 PDF 文件。
    3. 关于结果:
      1. 如果效果不错,请前往页面右上方,为这个项目增加一个Star,谢谢!
      2. 如果目录层级有误,请参见下方的编辑书签条目,或者使用自己的PDF编辑器进行相关操作。
      3. 如果运行出现问题,请参见下方的疑难解答以进行问题排查。

    编辑书签

    该项目提供简易的书签编辑工具,可使用contents_editor中的脚本对 PDF 文件的书签进行编辑,使用方法如下:

    1. 将需要编辑的 PDF 文件放入contents_editor文件夹中;
    2. 运行windows_extract.bat或macos_extract.command脚本,进行目录提取;
    3. 使用Microsoft Excel,VScode或其他任何可编辑csv文件的软件编辑生成的csv文件:如果需要添加条目,那么插入一行;如果需要删除条目,那么删除对应行;如果只需要修改条目,那么修改对应行;
    4. 保存并关闭csv文件,然后再运行windows_merge.bat或macos_merge.command脚本,将修改后的目录与 PDF 文件合并;
    5. 该目录下的*_edited.pdf文件即为处理后的 PDF 文件。

    疑难解答

    • ModuleNotFoundError: No module named 'fitz':虚拟环境中缺少 PyMuPDF 依赖,请运行 pip install -r requirements.txt 重新安装。
    • PDF 文件无法解析出任何页面(页数为 0):PDF 文件可能已损坏(trailer 缺失),请重新获取完好的 PDF 文件。
    • LLM 服务测试失败:请检查 API Key、Base URL 和模型名称是否正确,以及模型是否支持视觉/多模态输入。
    • 执行失败但看不到具体错误:错误信息会显示在任务日志中,请向上滚动查看 stderr 输出的详细报错。

    MCP 服务器(可选,供 AI Agent 调用)

    autoContents 也可作为 MCP(Model Context Protocol)服务器运行,让 AI 编程助手(如 Cherry Studio、Claude Desktop)直接调用书签生成能力。

    安装 uv

    uv 是 Python 的快速包管理器,也是 MCP 服务器的运行环境。

    Windows

    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
    

    macOS / Linux

    curl -LsSf https://astral.sh/uv/install.sh | sh
    

    配置 MCP 客户端

    将以下 JSON 添加到你的 MCP 客户端配置文件中(路径按实际情况修改):

    {
      "mcpServers": {
        "autoContents": {
          "command": "uv",
          "args": [
            "run",
            "--project",
            "/path/to/autoContents",
            "python",
            "/path/to/autoContents/mcp_server.py"
          ],
          "env": {
            "AUTOCONTENTS_API_KEY": "sk-xxx",
            "AUTOCONTENTS_BASE_URL": "https://dashscope.aliyuncs.com/compatible-mode/v1",
            "AUTOCONTENTS_MODEL": "qwen3.7-plus"
          }
        }
      }
    }
    
    字段说明
    command固定为 uv,需先完成上一步的安装
    args 中的路径将 /path/to/autoContents 替换为项目实际路径
    AUTOCONTENTS_API_KEY必填,替换为你的百炼 API Key
    AUTOCONTENTS_BASE_URL可选,默认为百炼兼容接口
    AUTOCONTENTS_MODEL可选,默认为 qwen3.5-397b-a17b

    配置完成后重启客户端,即可使用 generate_pdf_bookmarks 和 check_llm_config 两个工具。

    更新日志

    更新提醒:最新版本是v1.1.0,你可以根据获取更新来更新程序。

    10月13日的版本对识别逻辑进行了完全重构,可实现任意版面结构的目录数据提取,同时处理速度提升50%,且进一步简化了配置流程;12月2日的版本支持直接在前端进行提示词修改;3月25日发布的版本支持自定义LLM服务;3月29日发布的版本增加了使用LLM对下载文件进行重命名的功能,特别鸣谢@Little-White3110提出的建议;4月4日发布的版本实现的全自动目录提取。4月6日的版本对项目结构再次进行大量重构,解决了很多细节问题。7月26日的版本增加了uv和MCP支持。

    v1.1.0 支持任意 OpenAI 兼容的LLM服务商(通义千问、书生·浦语、OpenAI、DeepSeek 等,不再局限于通义千问)、罗马数字页码(前言/序言页码正确排在正文之前)、拖拽上传PDF,以及损坏文件的预检提示。特别鸣谢 @4965898 提交的 PR 思路。

    获取更新

    1. 点击页面顶部的绿色按钮Code,然后点击Download ZIP以下载程序源码;
    2. 将下载的autoContents-main文件夹中的全部内容覆盖到本地autoContents-main文件夹中;
    3. 重新运行2.2的安装步骤以更新依赖。

    macOS 用户注意:从 GitHub 下载的 ZIP 会丢失 Unix 可执行权限,覆盖后 .command 文件将无法双击运行。请在终端执行一次 chmod +x *.command contents_editor/*.command 后再启动。

    许可与贡献

    本项目采用专有许可协议(source-available,非开源许可):个人学习、研究与非商业用途可自由使用与修改;商业使用需另行获得作者书面授权。

    欢迎通过 Issue 反馈问题、通过 Pull Request 贡献改进。贡献的代码同样适用本协议条款。

    Star History

    Star History Chart