Skip to content

Repository files navigation

课件伴读 · Course PDF Assistant

在 Edge / Chrome 中一边阅读英文 PDF,一边用中文提问、翻译和理解课件。

课件伴读是一个基于 Manifest V3 的浏览器扩展:使用本地 PDF.js 渲染课件,在独立阅读标签页中提供可拖动的双栏布局,并直接连接你配置的 DeepSeek 或 Qwen API。无需部署后端服务。

当前版本:0.1.0。项目处于早期阶段,适合个人学习与反馈。它不是 Blackboard、Microsoft、Google、DeepSeek 或阿里云的官方产品。

使用示例 PDF 的双栏阅读界面

截图使用测试生成的示例 PDF,不包含真实课程材料或账户信息。

功能

功能 当前支持情况
PDF 阅读 导入本地文件、尝试读取在线 PDF;分页、缩放、适合宽度
双栏布局 左侧 PDF,右侧学习助手;鼠标左键拖动分界线并记住宽度
中文问答 自由提问、连续追问、翻译、解释概念、总结要点
引用范围 当前页、选中的文字、整份文档;发送前可查看引用预览
API DeepSeek、Qwen;可配置官方 Base URL、模型名和 API Key
Blackboard 入口 检测当前页面中的 PDF / 嵌入来源,或通过链接右键打开
文本入口 在浏览器允许的页面上,通过右键菜单带入选中文字
扫描件后备方式 检测到无文字的页面时,可手动输入或粘贴引用内容

**布局说明:**本扩展打开自己的双栏阅读标签页,不直接修改浏览器内置 PDF 阅读器,也不是浏览器原生翻译侧栏。Blackboard 的登录、嵌入和下载策略可能影响在线读取;下载后本地导入是后备方式。

快速开始

1. 获取并构建插件

准备好 Node.js 22.3.0 或更高版本及 npm。下载本仓库的源码 ZIP 并解压,或使用 Git 克隆本仓库,然后在含有 package.json 的项目根目录打开终端:

npm ci --ignore-scripts
npm run build

构建结果位于项目根目录下的 dist/。首次安装依赖需要联网,运行插件时不从 CDN 加载 PDF.js。

如果维护者在 GitHub Releases 中提供了已构建的扩展 ZIP,可以直接解压,在下一步选择包含 manifest.json 的目录,无需运行 npm。GitHub 自动生成的 “Source code” 压缩包是源码,需要先构建。本文不假设仓库已经发布 Release 或上架浏览器商店。

2. 在浏览器中加载

  1. Edge 地址栏输入 edge://extensions;Chrome 输入 chrome://extensions
  2. 开启“开发人员模式”。
  3. 点击“加载解压缩的扩展”或同义按钮。
  4. 选择刚构建的 dist/ 目录,而不是源码根目录。
  5. 将“课件伴读 · PDF Q&A”固定到扩展工具栏。

浏览器内部地址请复制到地址栏访问。更新源码后,需要重新构建、在扩展管理页刷新扩展,并重新打开阅读器标签页。

3. 配置 API

点击扩展图标 → “配置 DeepSeek / Qwen”,选择服务商,填写自己的 API Key 后保存。浏览器会请求访问相应 API 网站的权限。

服务商 默认 Base URL 默认模型
DeepSeek https://api.deepseek.com deepseek-v4-flash
Qwen / 阿里云百炼 https://dashscope.aliyuncs.com/compatible-mode/v1 qwen-flash

以上是代码中的默认值,不是模型可用性或价格承诺。模型名可以改为账户支持的普通文本模型。Qwen 的 API Key 与端点地域必须对应;业务空间专用地址请从服务商控制台复制。

“测试连接”会发起一次简短 API 请求,可能产生费用。密钥默认只保存在当前浏览器会话中;勾选“在此浏览器保存密钥”后才会持久保存。

4. 开始阅读与提问

  • **本地 PDF:**点击“导入本地 PDF / 打开阅读器”,再选择 PDF 文件。
  • **在线课件:**在 Blackboard 或 PDF 页面点击“打开当前 PDF / 查找课件”,选择来源,按需授予该网站读取权限。
  • **提问:**在右侧选择引用范围,查看引用预览,输入问题后点击发送,或选择翻译、解释概念、总结要点。
  • **选段问答:**拖选左侧 PDF 的文字,确认右侧引用对应选区,再提问。

示例问题:

用中文解释这一页中的 asymptotic complexity,保留关键英文术语,并给一个简单例子。

为什么这里可以忽略常数项?请按步骤解释,并说明哪些结论来自课件。

限制与数据处理

  • 单个 PDF 最大 50 MiB(界面显示为 50 MB);课件引用每次最多 24,000 字符。全文范围从第一页开始提取,超过上限会截断并提示,并非对任意长度文档进行全文检索。
  • 问答使用非流式响应、关闭思考模式,单次输出最多 2,048 token,超时 90 秒。回答达到上限时可以继续追问。
  • 默认发送当前引用、当前问题和最多最近 8 条对话消息。打开或翻页本身不调用 AI;发送问题、点击快捷操作或测试连接才会调用 API。
  • PDF 的解析与显示在本地完成;AI 问答仍会将引用文字发送给所选服务商。插件没有自建中转服务器或遥测功能。
  • 不提供 OCR、页面图像理解、聊天导出或跨会话聊天保存。扫描件、复杂公式与多栏排版可能无法准确提取文字。
  • 模型回答可能有误。建议对重要术语、公式和推导结合课件原文核对。

详见 使用与故障排查隐私与权限

文档导航

文档 内容
使用指南 在线与本地课件、API 配置、操作方式、故障排查
开发指南 目录结构、构建、测试、调试、发布包
隐私说明 数据流、密钥存储、权限、清理方式
贡献指南 问题反馈、开发贡献与 Pull Request
安全政策 安全问题反馈方式与敏感信息处理

测试与兼容性

npm test

API 单元测试使用模拟响应,不需要真实 Key,也不会调用付费服务。另有可选的 Edge 浏览器冒烟测试,执行方式见开发指南

当前已在 Edge 152 验证扩展加载、本地 PDF 渲染与文字层、分页、选区、全文引用、分界线拖动、切换文档清空对话、缺少密钥提示和设置预设。Chrome 使用相同扩展包,但尚未完成独立浏览器验证;真实付费 API 和受保护 Blackboard 课件需要在相应账户环境测试。

参与项目

欢迎通过本仓库的 Issues 提交可复现的问题或功能建议,通过 Pull Request 贡献修改。提交前请阅读贡献指南,并删除截图、日志中的密钥、带令牌的课件链接和个人信息。安全漏洞请按安全政策处理。

许可证

项目原创代码与文档采用 MIT License。第三方组件保留各自许可证:PDF.js 使用 Apache-2.0,其许可证在构建时复制至 dist/vendor/PDFJS-LICENSE.txt;随包字体和其他资源的许可文件保留在相应资源目录中。

课件内容及第三方服务不属于本项目的软件许可范围。服务商 API 说明见 DeepSeek 官方文档Qwen 兼容接口文档

About

An adjustable sidebar PDF Q&A plugin

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages