Skip to content

Dynamite2003/InsightReading

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

294 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Insight Reading

InsightReading Platform

学术论文一站式阅读与管理平台的全栈脚手架
基于 FastAPI + Next.js 15 + MinerU 的 End-to-End 智能阅读工作台
浏览项目 »

快速体验 · 报告问题 · 提交建议

目录
  1. 项目概述
  2. 快速开始
  3. 使用指南
  4. 计划路线
  5. 参与贡献
  6. 许可协议
  7. 联系信息
  8. 致谢

关于项目

InsightReading Platform 面向科研用户提供论文检索、个人文库与智能阅读体验:后端使用 FastAPI + Celery + PostgreSQL + Redis 负责鉴权、任务调度与 MinerU PDF 解析,前端采用 Next.js 15 App Router 构建液态玻璃风格的阅读界面,并通过 React Markdown + KaTeX 完整渲染 MinerU 解析结果(文本、公式、图片、表格)。

核心亮点:

  • 支持用户注册登录、个人资料维护、头像上传与密码修改,统一以 JWT 认证(/api/v1/auth/token)。
  • 集成 arXiv 聚合检索与导入流程(/api/v1/arxiv/search),支持关键词、排序与分页,便于构建论文推荐列表。
  • 提供 PDF 上传、导入与批注能力(/api/v1/papers/upload/api/v1/papers/uploads/{paper_id}/annotations),可在原文上高亮与记录笔记。
  • 基于 MinerU 与 DocLayout-YOLO 实现 PDF 结构化解析,结果存入缓存表 parsed_paper_cache,重复文件只需解析一次(/api/v1/papers/uploads/{paper_id}/parse)。
  • 前端聚合仪表盘、上传、推荐与智能阅读场景,使用 Turbopack 加速本地开发,并通过 API Client 与后端协同。

项目结构概览:

.
├── backend/
│   ├── app/
│   │   ├── api/v1/            # FastAPI 路由(上传、解析、标注、arXiv 检索等)
│   │   ├── core/              # 配置、Settings
│   │   ├── db/                # AsyncSession、Repository
│   │   ├── models/            # SQLAlchemy ORM(含 UploadedPaper、ParsedPaperCache 等)
│   │   ├── schemas/           # Pydantic DTO
│   │   ├── services/          # MinerU CLI 包装、批注逻辑等
│   │   └── media/             # 运行期生成(uploads/parsed/runtime_cache),已加入 .gitignore
│   ├── migrations/            # Alembic 迁移
│   ├── sitecustomize.py       # PyTorch / DocLayout-YOLO 兼容补丁
│   └── pyproject.toml         # 后端依赖(含 mineru、doclayout-yolo 等)
├── frontend/
│   ├── src/app/               # Next.js 页面(Dashboard、Smart Reading 等)
│   ├── src/components/        # PDF Viewer、布局与 UI 组件
│   ├── src/lib/               # fetch 封装、配置、API Client
│   └── package.json           # 前端依赖(react-markdown、remark-math、rehype-katex 等)
├── docker-compose.yml         # Postgres + Redis + 前端容器(支持 dev / infra profile)
├── scripts/dev.sh             # 一键启动脚本(数据库 + 后端 + 前端)
└── README.md                  # 本文件

(回到顶部)

核心技术栈

  • Next.js
  • React
  • FastAPI
  • PostgreSQL
  • Redis
  • Celery
  • Tailwind

(回到顶部)

快速开始

推荐使用根目录下的 scripts/dev.sh 一键拉起数据库、后端与前端;也支持通过 Docker Compose / 手动方式拆分运行,便于调试。

环境要求

  • Python 3.11(建议与后端虚拟环境一致)
  • Node.js 20+ 与 npm
  • Docker 与 Docker Compose(用于 Postgres / Redis 及可选的前端容器)
  • 合理的本地磁盘空间用于 MinerU 模型与解析缓存

安装部署

  1. 克隆仓库并进入项目根目录:

    git clone https://github.com/Dynamite2003/InsightReading.git
    cd InsightReading
  2. 配置环境变量:

    # 后端
    cp backend/.env.example backend/.env
    # 前端
    cp frontend/.env.local.example frontend/.env.local

    根据需要修改数据库、Redis、MinerU 缓存目录与各类 API Key 等参数。FastAPI 默认读取 backend/.env,Next.js 在开发/生产读取 frontend/.env.local

  3. 执行数据库迁移(首次运行必需):

    cd backend
    python3.11 -m venv .venv
    source .venv/bin/activate      # Windows 使用 .venv\\Scripts\\activate
    pip install -e .
    alembic upgrade head
    cd ..
  4. 一键启动(推荐):

    ./scripts/dev.sh

    脚本会自动:

    • 使用 Docker Compose 启动 Postgres / Redis;
    • 创建并激活 backend/.venv,安装依赖并启动 uvicorn app.main:app --reload
    • 安装前端依赖并执行 npm run dev

    默认访问地址:

    • 前端:http://localhost:3000
    • 后端 API:http://localhost:8000/api/v1
  5. 停止服务:

    • 在运行脚本的终端按 Ctrl + C 结束前后端;
    • 如需停止数据库容器:
      docker compose down

本地拆分运行(可选)

  • Postgres & Redis:
     docker compose up -d postgres redis
  • 后端 FastAPI:
     cd backend
     python3.11 -m venv .venv
     source .venv/bin/activate
     pip install -e .
     alembic upgrade head
     # 可选:配置 MinerU 缓存目录
     export MAGIC_PDF_MODELS_DIR=$HOME/Library/Caches/insightreading/models
     export HF_HOME=$HOME/Library/Caches/insightreading/hf_cache
     uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
  • 启动 MinerU Celery Worker:
     cd backend
     source .venv/bin/activate
     export PYTHONPATH=$PWD:$PYTHONPATH
     celery -A app.workers.celery_app.celery_app worker --loglevel=info --queues default
  • 前端 Next.js:
     cd frontend
     npm install
     npm run dev

如需以 Docker 方式运行前端(并共用容器化数据库),可使用 dev profile:

docker compose --profile dev up --build

此时后端仍在本机运行,前端容器通过 BACKEND_INTERNAL_URL 访问后端。

测试执行

cd backend
python -m pytest -q

压力测试(后端)

无需启动 uvicorn(默认走 ASGI in-process):

cd backend
python scripts/stress_test.py --scenario health --requests 5000 --concurrency 100
python scripts/stress_test.py --scenario me --users 50 --requests 5000 --concurrency 100

如需对已启动的服务做压测,可指定 --url

cd backend
python scripts/stress_test.py --url http://127.0.0.1:8000 --scenario health --requests 10000 --concurrency 200

前端可使用:

cd frontend
npm run lint

(回到顶部)

使用指南

  • 访问前端仪表盘,可浏览个性化推荐、个人文库与上传入口。
  • 通过 /api/v1/auth/token 获取访问令牌后,可调用受保护接口(如 /api/v1/users/me/api/v1/papers/upload/api/v1/papers/uploads)。
  • arXiv 检索接口 /api/v1/arxiv/search 支持关键词、排序与分页参数,可用于构建论文推荐与搜索功能。
  • PDF 上传成功后文件默认保存在 backend/app/media/uploads/,可通过 /api/v1/papers/uploads/{paper_id}/parse 提交 MinerU 解析任务。
  • 解析结果命中缓存时会直接返回,未命中时由 Celery Worker 调用 MinerU 并将 JSON 结果写入 parsed_paper_cache,后续同一文件解析将直接复用。
  • 批注接口 /api/v1/papers/uploads/{paper_id}/annotations 支持高亮与文本批注,前端 PDF Viewer 会实时展示。
  • 后端启动后可访问 API 文档:http://localhost:8000/docs(Swagger UI)/ http://localhost:8000/redoc(ReDoc),OpenAPI Schema:http://localhost:8000/openapi.json

导出 OpenAPI 文件(生成 openapi.json,便于前端/测试工具对接):

python backend/export_openapi.py
# 或指定输出路径
python backend/export_openapi.py --output doc/openapi.json

前端调用示例可参考 frontend/src/lib/api-client.tsfrontend/src/app 中的页面实现。

(回到顶部)

计划路线

  • 用户认证、资料维护与头像上传
  • 对话与消息管理仓储
  • arXiv 聚合检索与论文保存流程
  • PDF 上传、静态托管与 MinerU / PyMuPDF 批注
  • Next.js 15 前端界面与液态玻璃设计
  • /api/v1/papers 本地索引与检索实现(替换 501 占位实现)
  • Celery 任务接入外部元数据与 LLM 总结
  • 多源数据管道(Semantic Scholar、CrossRef 等)
  • AI 推荐与个性化阅读路线

更多任务请查看 开放的 Issues

(回到顶部)

参与贡献

欢迎任何形式的反馈与贡献:

  1. Fork 当前仓库
  2. 基于 main 创建特性分支:git checkout -b feature/AmazingFeature
  3. 提交代码并遵循项目 ESLint / pytest / Ruff 检查
  4. 发起 Pull Request 并描述变更内容

如果只想报告问题,可直接在 Issues 中提交。

(回到顶部)

许可协议

本项目当前处于内部迭代阶段,尚未正式发布开源许可证。若需引用或商用,请先联系项目维护者。

(回到顶部)

联系信息

InsightReading 团队 — shizy22@mails.tsinghua.edu.cn / hanxj23@mails.tsinghua.edu.cn / liusa23@mails.tsinghua.edu.cn

项目地址:https://github.com/Dynamite2003/InsightReading

(回到顶部)

致谢

(回到顶部)

windows启动方案

1. Postgres & Redis

docker compose up -d postgres redis

2. Backend

确保已存在 backend/.env

cd backend
python -m venv .venv
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force
.\.venv\Scripts\Activate.ps1
pip install -e .
uv run alembic upgrade head
# 启动
uv run uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

3. Frontend

确保已存在 frontend/.env.local

cd frontend
npm install
npm run dev

访问 http://localhost:3000 ,前端默认调用 http://localhost:8000/api/v1


4. Apendix

清除缓存

docker exec -it insightreading-postgres-1 psql -U postgres -d papers -c "DELETE FROM uploaded_papers; DELETE FROM papers; DELETE FROM parsed_paper_cache; DELETE FROM mineru_parse_jobs;"

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors