PDF Smart Reader 是一款轻量级桌面 PDF 阅读器,内置 AI 对话面板,可以对打开的 PDF 文档进行智能问答、内容总结和关键信息提取。支持 OpenAI 兼容 API,可对接各种大模型服务。
API 配置和阅读历史保存在本地。使用 AI 功能时,对话及工具读取的文档文本会发送至你配置的模型服务。
前往 Releases 下载安装包:
| 平台 | 安装包 |
|---|---|
| Windows | PDF-Smart-Reader-Setup.exe |
下载后双击运行即可,无需额外配置运行环境。
git clone https://github.com/gsiliconk/AI-PDF-Reading.git
cd AI-PDF-Reading
npm install
# 开发模式
npm run dev
# 构建 Windows 安装包
npm run build:win产物位于 release/ 目录。
- 多标签页:同时打开多个 PDF 文件,Ctrl+Tab 切换
- 文件拖拽:直接拖拽文件到窗口打开
- 历史记录:自动记录最近打开的文件,一键重新打开
- 大纲导航:侧边栏显示文档目录,点击跳转到对应章节
- 全文搜索:Ctrl+F 搜索关键词,支持上一个/下一个导航
- 键盘快捷键:Ctrl+O 打开文件、Ctrl+W 关闭标签页、Ctrl+Tab 切换标签
- 文档问答:基于当前打开的 PDF 内容回答问题
- Function Calling:AI 可自动调用工具读取文档内容:
| 工具 | 功能 |
|---|---|
get_page_text |
获取指定页面文本 |
extract_pages |
批量提取多页内容(最多 30 页) |
search_text |
全文关键词搜索,返回匹配上下文 |
get_outline |
获取文档目录/大纲结构 |
find_relevant_sections |
根据问题智能匹配最相关段落 |
- 快捷指令:一键总结全文、提取要点、查看目录、翻译当前页
- Markdown 渲染:AI 回复支持完整的 Markdown 格式
- 对话管理:清空对话、复制消息、可调节面板宽度
点击工具栏 AI 按钮 → 设置图标,配置 API 信息:
| 配置项 | 说明 | 默认值 |
|---|---|---|
| API 地址 | OpenAI 兼容的 API 端点 | https://api.openai.com/v1 |
| API Key | 你的 API 密钥 | - |
| 模型名称 | 使用的模型 | gpt-4o |
支持任何 OpenAI 兼容的 API 服务,包括 OpenAI、Azure OpenAI、Deepseek、通义千问等。
| 层级 | 技术 |
|---|---|
| 桌面框架 | Electron 35 |
| 前端框架 | React 18 + TypeScript |
| 构建工具 | electron-vite + Vite 5 |
| 样式 | Tailwind CSS 3 |
| PDF 渲染 | pdfjs-dist 4.4 |
| Markdown | react-markdown |
| UI 组件库 | animal-island-ui |
| 打包发布 | electron-builder (NSIS) |
┌─────────────────────────────────────────────────┐
│ Electron 主进程 │
│ 窗口管理 · IPC 通信 · 文件系统访问 · AI API 调用 │
└──────────────────────┬──────────────────────────┘
│ IPC
┌──────────────────────┴──────────────────────────┐
│ React 渲染进程 │
│ │
│ ┌──────────┐ ┌──────────┐ ┌───────────────┐ │
│ │ PDFViewer│ │ AIPanel │ │ 其他组件 │ │
│ │ (pdfjs) │ │(Function │ │ TabBar/Sidebar│ │
│ │ │ │ Calling) │ │ SearchBar/... │ │
│ └──────────┘ └────┬─────┘ └───────────────┘ │
│ │ │
│ ┌──────┴──────┐ │
│ │ pdfSkills │ │
│ │ (PDF 工具集) │ │
│ └─────────────┘ │
└──────────────────────────────────────────────────┘
│
OpenAI 兼容 API
│
┌───────────┴───────────┐
│ OpenAI / Deepseek / │
│ 通义千问 / Azure ... │
└───────────────────────┘
src/
├── main/ # Electron 主进程
│ └── index.ts # 窗口管理、IPC 处理、AI API 调用
├── preload/
│ └── index.ts # 暴露 electronAPI 到渲染进程
└── renderer/ # React 应用
└── src/
├── App.tsx # 应用主组件(标签页、布局、状态管理)
├── components/
│ ├── AIPanel.tsx # AI 对话面板(Function Calling 循环)
│ ├── AnnotationLayer.tsx# PDF 标注层
│ ├── DropZone.tsx # 拖拽打开 + 历史记录
│ ├── PDFViewer.tsx # PDF 渲染(pdfjs-dist)
│ ├── SearchBar.tsx # 全文搜索栏
│ ├── Sidebar.tsx # 大纲/目录侧边栏
│ ├── StatusBar.tsx # 底部状态栏
│ ├── TabBar.tsx # 多标签栏
│ └── TitleBar.tsx # 自定义无边框标题栏
├── hooks/
│ └── useResizable.tsx # 可调节宽度 Hook
└── services/
└── pdfSkills.ts # PDF 工具函数(AI Function Calling 定义与执行)
- Node.js >= 18
- npm
git clone https://github.com/gsiliconk/AI-PDF-Reading.git
cd AI-PDF-Reading
npm install
npm run devnpm run build:win # Windows 安装包 (NSIS)
npm run build # 仅构建,不打包- PDF 多标签页阅读
- 文件拖拽打开
- 大纲导航 + 全文搜索
- AI 对话面板(Function Calling)
- 快捷指令(总结、翻译、提取要点)
- 自定义无边框标题栏
- OpenAI 兼容 API 支持
- 暗色主题
- PDF 标注/批注
- 跨平台支持(macOS / Linux)
- 应用内自动更新
- 更多 AI 工具(对比多文档、生成思维导图)