Skip to content

Repository files navigation

PaperMap - 论文知识图谱系统

一个基于 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 并配置:

cp .env.example .env

编辑 .env 文件,填入你的 DeepSeek API Key:

AI_API_KEY=your-deepseek-api-key-here

获取 API Key:https://platform.deepseek.com/

启动服务

python app.py

然后在浏览器中打开 http://localhost:5000

安装为 PWA 应用

在浏览器中打开应用后,点击地址栏的安装图标(或菜单中"安装应用"),即可将 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 接口

搜索与分析

接口 方法 描述 限流
/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"
}

🎯 使用说明

基础搜索流程

  1. 在搜索框输入研究领域关键词(如 "transformer", "diffusion model", "大语言模型")
  2. 点击搜索,系统快速返回启发式评分结果,同时后台启动深度 AI 分析
  3. 可以边浏览边等待深度分析,完成后会自动更新结果
  4. 水平时间线支持左右滚动,点击论文节点查看详情
  5. 知识图谱支持节点拖动,展示论文间的引用和方法继承关系

高级功能

  1. AI 摘要:点击论文卡片中的"摘要"按钮,获取 AI 生成的核心内容总结
  2. 论文问答:在论文详情中提问,AI 会基于论文内容回答
  3. 论文对比:选择 2-5 篇论文,查看多角度横向对比
  4. 笔记与标签:为感兴趣的论文添加阅读笔记和自定义标签
  5. 关键词订阅:订阅关注的研究领域,定期检查新论文
  6. 导出报告:一键生成 Markdown 调研报告或 AI 文献综述

缓存与性能

  1. 搜索结果自动缓存,重复搜索无需重新请求
  2. 可在设置中清除单个关键词缓存或全部缓存
  3. 支持分页浏览大量搜索结果

🔧 配置说明

环境变量

变量 默认值 说明
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 部署

# 构建镜像
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

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages