zcjie1/Zotero-AI

Use AI to analyze paper PDF and directly generate notes

3

stars

0

commits

TypeScript

primary language

Aug 30, 2026

updated

README

Zotero AI

使用 AI 自动解析 Zotero 条目中的 PDF 附件,生成结构化分析笔记。

License Zotero

功能

  • 📄 PDF 全文提取 — 通过 Zotero 内置全文索引读取 PDF 内容
  • 📐 版面感知文本提取 — 安装运行时后可用 PyMuPDF 按版面阅读顺序提取文本(双栏论文友好),失败自动回退全文索引
  • 🖼️ 图表提取 — 使用 DocLayout-YOLO 自动检测并裁剪论文中的图表、表格、算法
  • ♻️ 图片缓存复用 — 已提取的图片和元数据保存在 Zotero 数据目录,可按需复用或重新提取
  • 👁️ 视觉识别 (Vision) — 可选将提取的图表发送给多模态模型,在笔记正文中引用图片
  • 🤖 多协议 AI 解析 — 支持 OpenAI Chat Completions、OpenAI Responses 和 Anthropic Messages
  • 🔎 远端模型列表 — 可按当前 API 格式刷新模型列表,也可继续使用自定义模型 ID
  • 📝 Markdown 笔记 — AI 返回的 Markdown 自动渲染为富文本笔记,支持表格、有序/无序列表、LaTeX 数学公式、图片嵌入、引用块
  • 并发解析 — 多选条目按可配置的并发数量调度,可最小化的独立窗口实时显示每个条目的进度
  • 🔁 失败自动重试 — 网络错误、429/5xx 按指数退避自动重试,超时与重试次数可配置
  • 🛑 任务取消 — 状态窗口中每个条目可单独取消;关闭窗口自动取消全部未完成任务
  • 🌙 深色模式 — 解析状态窗口自适应 Zotero 主题
  • 🗑️ 干净卸载 — 移除插件后不残留菜单项

安装

  1. Releases 下载最新 .xpi 文件
  2. Zotero → 工具插件 → ⚙️ → Install Add-on From File
  3. 选择 .xpi 安装

配置

安装后在 编辑设置Zotero AI 中配置:

设置项说明默认值
API 格式Chat Completions、Responses 或 Anthropic MessagesChat Completions
API 端点API 基地址,可带或不带末尾 /v1https://api.openai.com
API 密钥当前服务的 API Key
模型名称刷新远端列表后选择,或输入自定义模型 IDgpt-4o
温度参数输出随机性 (0–2)1
最大 Token回复长度上限 (1–128000)8192
并发数量同时解析的条目数 (1–20)3
请求超时单次请求最长等待秒数 (30–1800)300
失败重试次数网络错误/429/5xx 的自动重试次数 (0–10)3
系统提示词指导 AI 分析的指令(学术论文分析模板)
笔记首行标注是否在笔记中显示解析元信息关闭

模型列表只在点击 刷新列表 时请求,不会在打开偏好设置时自动联网。切换 API 格式不会清空当前端点、密钥或模型;远端列表中没有当前模型时会保留为自定义模型。

图表提取(可选)

Windows x64 用户无需手动填写图片提取脚本路径。XPI 内置:

  • extract_figures.py 提取脚本
  • DocLayout-YOLO DocStructBench 模型
  • 最小 Python + pip 启动运行时

首次使用前,在 Zotero 偏好设置的 图片提取 区域点击 安装/修复运行时。插件会把内置脚本和模型复制到 Zotero 数据目录,并在 zoteroai-runtime/win-x64/ 中安装 PyTorch CPU、PyMuPDF、doclayout-yolo 等完整依赖。

可配置项:

设置项说明默认值
图片提取运行时安装或修复托管的 win-x64 Python 运行时手动点击
Python 路径可选覆盖项,通常留空以使用托管运行时留空
PyMuPDF 文本提取按版面阅读顺序提取文本,失败自动回退索引开启
启用 Vision是否提取图片并发送给支持视觉输入的云端模型开启 / 关闭
最大提取数量每篇论文最多提取多少个图表/表格/算法5
  • PyMuPDF 文本提取:安装运行时后,解析文本默认改由 extract_text.py 按版面阅读顺序提取(双栏论文先读左栏再读右栏),每页附带 [PAGE N] 标记供模型引用;文本为扫描件或提取失败时自动回退 Zotero 全文索引。不缓存,每次解析现提取。
  • Vision 开启:插件会提取图片,并将图片随全文一起发送给云端大模型;此模式要求当前 API 和模型支持视觉输入,模型可在笔记正文中用 [[FIGURE:Fig1.png]] 标记图片位置
  • Vision 关闭:不会提取图片,也不会调用图片识别流程,仅对 PDF 中已索引的纯文字内容进行解析
  • 内置脚本和模型会复制到 Zotero 数据目录下的 zoteroai-runtime/assets/
  • 提取结果会保存到 Zotero 数据目录下的 zoteroai-figures/item_<条目ID>/,包含 figures.json 和裁剪图片。
  • 文件名会根据 caption 类型区分为 Fig1.pngTable1.pngAlg1.png 等,减少正文说明和图片错配。

使用

  1. 在 Zotero 库中选择一个或多个带 PDF 的条目
  2. 在正常条目的右键菜单中选择解析模式:
    • ✨ 智能复用解析:优先复用已有提取结果;缓存不存在或不完整时自动重新提取
    • 🔄 全新提取解析:删除当前条目的图片缓存后重新提取
  3. 解析状态窗口实时显示进度,可在后台处理期间最小化;完成后笔记自动添加到条目下

附件或笔记本身不会单独显示解析命令。正常条目即使没有 PDF 也允许进入任务, 随后会在状态窗口中显示“没有 PDF 附件”。

开发

npm install          # 安装依赖
npm start            # 开发模式(热重载)
npm run build        # 生产构建
npm run release      # 发布

架构

zotero-ai/
├── addon/
│   ├── bootstrap.js          # 插件生命周期入口
│   ├── manifest.json         # 插件清单
│   ├── prefs.js              # 默认设置
│   ├── content/
│   │   ├── preferences.xhtml # 设置面板 UI
│   │   └── icons/            # 图标
│   ├── python/               # 打包进 XPI 的提取脚本和模型
│   │   ├── extract_figures.py # PDF 图表提取(DocLayout-YOLO)
│   │   └── extract_text.py   # PDF 版面文本提取(PyMuPDF)
│   ├── runtime/              # 打包进 XPI 的 win-x64 最小 Python 运行时
│   └── locale/               # 中英文翻译
├── python/
│   ├── requirements.txt      # 开发环境 Python 依赖
│   ├── download_model.py     # 开发时下载模型
│   └── extract_figures.py    # PDF 图表提取 CLI 源文件
└── src/
    ├── index.ts              # 入口
    ├── addon.ts              # 插件主类
    ├── hooks.ts              # 生命周期 & 菜单 & 状态窗口
    ├── modules/
    │   ├── aiClient.ts       # 三种 API 协议、模型列表与错误适配
    │   ├── aiParse.ts        # AI 解析核心 + 图表提取调度 + Markdown 渲染
    │   ├── textExtract.ts    # PyMuPDF 文本提取调度与索引回退
    │   ├── runtime.ts        # 托管 Python 运行时和内置模型管理
    │   └── preferenceScript.ts
    └── utils/                # 工具函数

依赖

许可证

AGPL-3.0-or-later

zcjie1/Zotero-AI

Use AI to analyze paper PDF and directly generate notes

3

stars

0

commits

TypeScript

primary language

Aug 30, 2026

updated

README

Zotero AI

使用 AI 自动解析 Zotero 条目中的 PDF 附件,生成结构化分析笔记。

License Zotero

功能

  • 📄 PDF 全文提取 — 通过 Zotero 内置全文索引读取 PDF 内容
  • 📐 版面感知文本提取 — 安装运行时后可用 PyMuPDF 按版面阅读顺序提取文本(双栏论文友好),失败自动回退全文索引
  • 🖼️ 图表提取 — 使用 DocLayout-YOLO 自动检测并裁剪论文中的图表、表格、算法
  • ♻️ 图片缓存复用 — 已提取的图片和元数据保存在 Zotero 数据目录,可按需复用或重新提取
  • 👁️ 视觉识别 (Vision) — 可选将提取的图表发送给多模态模型,在笔记正文中引用图片
  • 🤖 多协议 AI 解析 — 支持 OpenAI Chat Completions、OpenAI Responses 和 Anthropic Messages
  • 🔎 远端模型列表 — 可按当前 API 格式刷新模型列表,也可继续使用自定义模型 ID
  • 📝 Markdown 笔记 — AI 返回的 Markdown 自动渲染为富文本笔记,支持表格、有序/无序列表、LaTeX 数学公式、图片嵌入、引用块
  • 并发解析 — 多选条目按可配置的并发数量调度,可最小化的独立窗口实时显示每个条目的进度
  • 🔁 失败自动重试 — 网络错误、429/5xx 按指数退避自动重试,超时与重试次数可配置
  • 🛑 任务取消 — 状态窗口中每个条目可单独取消;关闭窗口自动取消全部未完成任务
  • 🌙 深色模式 — 解析状态窗口自适应 Zotero 主题
  • 🗑️ 干净卸载 — 移除插件后不残留菜单项

安装

  1. Releases 下载最新 .xpi 文件
  2. Zotero → 工具插件 → ⚙️ → Install Add-on From File
  3. 选择 .xpi 安装

配置

安装后在 编辑设置Zotero AI 中配置:

设置项说明默认值
API 格式Chat Completions、Responses 或 Anthropic MessagesChat Completions
API 端点API 基地址,可带或不带末尾 /v1https://api.openai.com
API 密钥当前服务的 API Key
模型名称刷新远端列表后选择,或输入自定义模型 IDgpt-4o
温度参数输出随机性 (0–2)1
最大 Token回复长度上限 (1–128000)8192
并发数量同时解析的条目数 (1–20)3
请求超时单次请求最长等待秒数 (30–1800)300
失败重试次数网络错误/429/5xx 的自动重试次数 (0–10)3
系统提示词指导 AI 分析的指令(学术论文分析模板)
笔记首行标注是否在笔记中显示解析元信息关闭

模型列表只在点击 刷新列表 时请求,不会在打开偏好设置时自动联网。切换 API 格式不会清空当前端点、密钥或模型;远端列表中没有当前模型时会保留为自定义模型。

图表提取(可选)

Windows x64 用户无需手动填写图片提取脚本路径。XPI 内置:

  • extract_figures.py 提取脚本
  • DocLayout-YOLO DocStructBench 模型
  • 最小 Python + pip 启动运行时

首次使用前,在 Zotero 偏好设置的 图片提取 区域点击 安装/修复运行时。插件会把内置脚本和模型复制到 Zotero 数据目录,并在 zoteroai-runtime/win-x64/ 中安装 PyTorch CPU、PyMuPDF、doclayout-yolo 等完整依赖。

可配置项:

设置项说明默认值
图片提取运行时安装或修复托管的 win-x64 Python 运行时手动点击
Python 路径可选覆盖项,通常留空以使用托管运行时留空
PyMuPDF 文本提取按版面阅读顺序提取文本,失败自动回退索引开启
启用 Vision是否提取图片并发送给支持视觉输入的云端模型开启 / 关闭
最大提取数量每篇论文最多提取多少个图表/表格/算法5
  • PyMuPDF 文本提取:安装运行时后,解析文本默认改由 extract_text.py 按版面阅读顺序提取(双栏论文先读左栏再读右栏),每页附带 [PAGE N] 标记供模型引用;文本为扫描件或提取失败时自动回退 Zotero 全文索引。不缓存,每次解析现提取。
  • Vision 开启:插件会提取图片,并将图片随全文一起发送给云端大模型;此模式要求当前 API 和模型支持视觉输入,模型可在笔记正文中用 [[FIGURE:Fig1.png]] 标记图片位置
  • Vision 关闭:不会提取图片,也不会调用图片识别流程,仅对 PDF 中已索引的纯文字内容进行解析
  • 内置脚本和模型会复制到 Zotero 数据目录下的 zoteroai-runtime/assets/
  • 提取结果会保存到 Zotero 数据目录下的 zoteroai-figures/item_<条目ID>/,包含 figures.json 和裁剪图片。
  • 文件名会根据 caption 类型区分为 Fig1.pngTable1.pngAlg1.png 等,减少正文说明和图片错配。

使用

  1. 在 Zotero 库中选择一个或多个带 PDF 的条目
  2. 在正常条目的右键菜单中选择解析模式:
    • ✨ 智能复用解析:优先复用已有提取结果;缓存不存在或不完整时自动重新提取
    • 🔄 全新提取解析:删除当前条目的图片缓存后重新提取
  3. 解析状态窗口实时显示进度,可在后台处理期间最小化;完成后笔记自动添加到条目下

附件或笔记本身不会单独显示解析命令。正常条目即使没有 PDF 也允许进入任务, 随后会在状态窗口中显示“没有 PDF 附件”。

开发

npm install          # 安装依赖
npm start            # 开发模式(热重载)
npm run build        # 生产构建
npm run release      # 发布

架构

zotero-ai/
├── addon/
│   ├── bootstrap.js          # 插件生命周期入口
│   ├── manifest.json         # 插件清单
│   ├── prefs.js              # 默认设置
│   ├── content/
│   │   ├── preferences.xhtml # 设置面板 UI
│   │   └── icons/            # 图标
│   ├── python/               # 打包进 XPI 的提取脚本和模型
│   │   ├── extract_figures.py # PDF 图表提取(DocLayout-YOLO)
│   │   └── extract_text.py   # PDF 版面文本提取(PyMuPDF)
│   ├── runtime/              # 打包进 XPI 的 win-x64 最小 Python 运行时
│   └── locale/               # 中英文翻译
├── python/
│   ├── requirements.txt      # 开发环境 Python 依赖
│   ├── download_model.py     # 开发时下载模型
│   └── extract_figures.py    # PDF 图表提取 CLI 源文件
└── src/
    ├── index.ts              # 入口
    ├── addon.ts              # 插件主类
    ├── hooks.ts              # 生命周期 & 菜单 & 状态窗口
    ├── modules/
    │   ├── aiClient.ts       # 三种 API 协议、模型列表与错误适配
    │   ├── aiParse.ts        # AI 解析核心 + 图表提取调度 + Markdown 渲染
    │   ├── textExtract.ts    # PyMuPDF 文本提取调度与索引回退
    │   ├── runtime.ts        # 托管 Python 运行时和内置模型管理
    │   └── preferenceScript.ts
    └── utils/                # 工具函数

依赖

许可证

AGPL-3.0-or-later

Languages

TypeScript

67.7%

Python

17.4%

PowerShell

7.3%

HTML

5.6%

Fluent

2.0%