一个基于 Flask 和 DeepSeek AI 的自动化论文搜集、总结与可视化知识图谱系统。支持 PWA 安装、论文问答、文献综述生成、订阅提醒等高级功能。
- 🔍 多源检索:支持 arXiv、Semantic Scholar、OpenAlex 三数据源,覆盖期刊、顶会、综述
- 📊 时间线可视化:水平时间线展示论文演进脉络,支持左右滚动
- 🤖 AI 摘要:基于 DeepSeek 大模型自动生成论文核心内容总结
- 🌐 智能翻译:离线翻译(Argos Translate)+ AI 高质量翻译,支持中英文互译
- 🕸️ 知识图谱:可拖动的节点图展示论文关系与方法演进
- 🔗 关系分析:自动识别论文间的引用关系、方法继承关系
- 📄 批量下载:支持论文 PDF 批量下载
- 📋 设计文档:自动生成论文复现的设计思路与技术方案
- ⚡ 快速搜索:启发式评分秒级返回,边浏览边分析
- 🧠 深度分析:后台 AI 线程深度分析,自动更新结果
- 📶 状态追踪:实时查看分析进度,支持取消和刷新
- 💬 论文问答:针对单篇论文提问,支持上下文对话
- 📖 全文抽取:PDF 全文文本抽取,增强 QA 上下文
- 🎯 相关推荐:基于论文内容智能推荐相关论文
- ⚖️ 论文对比:2-5 篇论文多角度横向对比
- 📝 论文笔记:为每篇论文记录阅读笔记
- 🏷️ 标签系统:自定义标签分类管理论文
- 💾 数据迁移:笔记和标签支持 JSON 导入/导出
- 🔔 关键词订阅:订阅关注的研究领域
- 🆕 新论文检测:自动检测订阅关键词的新论文
- 📡 批量检查:一键检查所有订阅更新
- 📑 调研报告:一键导出 Markdown 格式调研报告
- 📚 文献综述:AI 自动生成结构化文献综述
- 🌐 批量翻译:多篇论文摘要批量翻译为中文
- 📱 PWA 支持:可安装为桌面/移动应用,离线访问
- 💾 搜索缓存:自动缓存搜索结果,提升响应速度
- ⚡ 请求限流:内置 Flask-Limiter 防止 API 滥用
- 🌙 暗黑模式:支持浅色/深色主题切换
- Python 3.11+
- DeepSeek API Key(用于 AI 摘要、问答、翻译、综述)
# 1. 创建虚拟环境
python -m venv .venv
# 2. 激活虚拟环境(Windows)
.venv\Scripts\activate
# 3. 安装依赖(使用清华大学镜像源)
.venv\Scripts\python.exe -m pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
复制 .env.example 为 .env 并配置:
编辑 .env 文件,填入你的 DeepSeek API Key:
AI_API_KEY=your-deepseek-api-key-here
获取 API Key:https://platform.deepseek.com/
然后在浏览器中打开 http://localhost:5000
在浏览器中打开应用后,点击地址栏的安装图标(或菜单中"安装应用"),即可将 PaperMap 安装为桌面应用,支持离线访问和独立窗口运行。
paper-knowledge-graph/
├── app.py # Flask 主应用
├── api.py # REST API 路由
├── config.py # 配置文件
├── requirements.txt # Python 依赖
├── wsgi.py # WSGI 入口(生产环境)
├── Dockerfile # Docker 配置
├── .env.example # 环境变量模板
├── modules/
│ ├── paper_manager.py # 论文管理核心模块(搜索、分析、QA、对比)
│ ├── notes_manager.py # 笔记与标签管理
│ ├── subscriptions_manager.py # 订阅与新论文检测
│ ├── arxiv_fetcher.py # arXiv 论文爬取
│ ├── semantic_scholar_fetcher.py # Semantic Scholar 爬取
│ ├── openalex_fetcher.py # OpenAlex 数据源
│ ├── ai_summarizer.py # AI 摘要生成
│ ├── relation_analyzer.py # 关系分析
│ └── free_translator.py # 离线翻译(Argos Translate)
├── static/
│ ├── css/style.css # 样式文件
│ ├── js/
│ │ ├── app.js # 前端主逻辑
│ │ ├── graph.js # 知识图谱渲染
│ │ └── lucide.min.js # 图标库
│ ├── img/
│ │ ├── icon.svg # PWA 应用图标
│ │ └── icon-maskable.svg # PWA 遮罩图标
│ ├── sw.js # Service Worker(PWA 离线支持)
│ └── manifest.json # PWA 应用清单
├── templates/
│ └── index.html # HTML 模板
├── argos_packages/ # Argos Translate 离线翻译模型
├── data/ # 数据存储目录(搜索缓存)
└── logs/ # 日志文件目录
| 接口 |
方法 |
描述 |
限流 |
/api/search?q=<keyword> |
GET |
搜索论文(快速返回+后台深度分析) |
30/min |
/api/search/status?q=<keyword> |
GET |
查询搜索分析状态 |
60/min |
/api/search/refresh?q=<keyword> |
GET |
获取最新搜索结果(深度分析完成后刷新) |
30/min |
/api/search/cancel |
POST |
取消正在进行的深度AI分析 |
30/min |
/api/search/clear_cache |
POST |
清除搜索缓存(可指定关键词或全部) |
10/min |
/api/search/caches |
GET |
列出所有缓存的关键词及信息 |
30/min |
| 接口 |
方法 |
描述 |
限流 |
/api/paper/<id>/summary |
GET |
获取论文 AI 摘要 |
60/min |
/api/paper/<id>/design |
GET |
获取论文复现设计文档 |
30/min |
/api/paper/<id>/download |
GET |
下载论文 PDF |
20/min |
/api/paper/<id>/fulltext |
GET |
获取论文 PDF 抽取的全文文本 |
20/min |
/api/paper/<id>/qa |
POST |
针对某篇论文进行问答 |
15/min |
/api/paper/<id>/recommend |
GET |
基于论文推荐相关论文 |
10/min |
| 接口 |
方法 |
描述 |
限流 |
/api/paper/<id>/note |
GET |
获取论文笔记 |
60/min |
/api/paper/<id>/note |
POST |
设置论文笔记 |
30/min |
/api/paper/<id>/tag |
POST |
添加标签 |
30/min |
/api/paper/<id>/tag |
DELETE |
移除标签 |
30/min |
/api/notes/tags |
GET |
获取所有标签 |
60/min |
/api/user/data/export |
GET |
导出全部用户数据(笔记/标签) |
10/min |
/api/user/data/import |
POST |
导入用户数据 |
10/min |
| 接口 |
方法 |
描述 |
限流 |
/api/translate?q=<keyword> |
GET |
翻译关键词为英文科研术语 |
60/min |
/api/translate_text |
POST |
翻译论文文本(支持 AI/免费翻译) |
60/min |
/api/translate_batch |
POST |
批量翻译多篇论文文本(免费) |
10/min |
| 接口 |
方法 |
描述 |
限流 |
/api/compare |
POST |
对比 2-5 篇论文 |
10/min |
/api/report/export?q=<keyword> |
GET |
一键导出 Markdown 调研报告 |
10/min |
/api/literature_review |
POST |
AI 生成文献综述 |
3/min |
| 接口 |
方法 |
描述 |
限流 |
/api/subscriptions |
GET |
列出所有订阅 |
30/min |
/api/subscriptions |
POST |
添加订阅关键词 |
20/min |
/api/subscriptions |
DELETE |
删除订阅 |
20/min |
/api/subscriptions/check |
POST |
检查订阅关键词的新论文 |
5/min |
| 接口 |
方法 |
描述 |
限流 |
/api/timeline?q=<keyword> |
GET |
获取时间线数据 |
30/min |
/api/graph?q=<keyword> |
GET |
获取知识图谱数据 |
30/min |
/api/statistics?q=<keyword> |
GET |
获取统计数据 |
30/min |
/sw.js |
GET |
Service Worker(PWA 离线支持) |
- |
/manifest.json |
GET |
PWA 应用清单 |
- |
# 翻译关键词
GET /api/translate?q=深度学习
# 翻译文本(POST)
POST /api/translate_text
Content-Type: application/json
{
"text": "Deep learning is a subset of machine learning.",
"source_lang": "en",
"target_lang": "zh",
"use_ai": false
}
# 批量翻译
POST /api/translate_batch
Content-Type: application/json
{
"texts": [
"Attention Is All You Need",
"Language Models are Few-Shot Learners"
],
"source_lang": "en",
"target_lang": "zh"
}
POST /api/paper/1706.03762/qa
Content-Type: application/json
{
"question": "这篇论文的核心贡献是什么?",
"history": [],
"use_fulltext": true,
"q": "transformer"
}
- 在搜索框输入研究领域关键词(如 "transformer", "diffusion model", "大语言模型")
- 点击搜索,系统快速返回启发式评分结果,同时后台启动深度 AI 分析
- 可以边浏览边等待深度分析,完成后会自动更新结果
- 水平时间线支持左右滚动,点击论文节点查看详情
- 知识图谱支持节点拖动,展示论文间的引用和方法继承关系
- AI 摘要:点击论文卡片中的"摘要"按钮,获取 AI 生成的核心内容总结
- 论文问答:在论文详情中提问,AI 会基于论文内容回答
- 论文对比:选择 2-5 篇论文,查看多角度横向对比
- 笔记与标签:为感兴趣的论文添加阅读笔记和自定义标签
- 关键词订阅:订阅关注的研究领域,定期检查新论文
- 导出报告:一键生成 Markdown 调研报告或 AI 文献综述
- 搜索结果自动缓存,重复搜索无需重新请求
- 可在设置中清除单个关键词缓存或全部缓存
- 支持分页浏览大量搜索结果
| 变量 |
默认值 |
说明 |
FLASK_ENV |
development |
运行环境 |
FLASK_DEBUG |
true |
调试模式 |
HOST |
0.0.0.0 |
监听地址 |
PORT |
5000 |
监听端口 |
AI_API_KEY |
- |
DeepSeek API Key(必填) |
AI_MODEL |
deepseek-chat |
AI 模型 |
AI_TIMEOUT |
60 |
AI 请求超时(秒) |
ARXIV_MAX_RESULTS |
200 |
arXiv 最大返回数 |
S2_MAX_RESULTS |
120 |
Semantic Scholar 最大返回数 |
S2_API_KEY |
- |
Semantic Scholar API Key(可选,提升速率) |
REQUEST_RATE_LIMIT |
60 |
请求速率限制 |
REQUEST_RATE_PERIOD |
60 |
速率限制周期(秒) |
DATA_DIR |
data |
数据存储目录 |
PAPERS_DIR |
data/papers |
论文 PDF 存储目录 |
LOG_LEVEL |
INFO |
日志级别 |
LOG_FILE |
app.log |
日志文件名 |
# 构建镜像
docker build -t papermap .
# 运行容器
docker run -p 5000:5000 \
-e AI_API_KEY=your-api-key \
-v $(pwd)/data:/app/data \
-v $(pwd)/logs:/app/logs \
papermap
- 后端:Flask 3.1 + Flask-CORS + Flask-Limiter
- 前端:HTML5 + CSS3 + JavaScript(原生)+ Lucide Icons
- AI:DeepSeek Chat API
- 翻译:Argos Translate(离线)+ Deep Translator
- 数据来源:arXiv API + Semantic Scholar API + OpenAlex API
- PWA:Service Worker + Web App Manifest
- 部署:Gunicorn + Docker
MIT License