面向科研工作流的交互式 PDF 阅读器,提供 MinerU 解析、段落级翻译和多轮问答。前端实时渲染 Markdown / LaTeX,后端可在本地完成 MinerU 与 Qwen 模型调用。
- PDF 上传与结构解析:调用 MinerU API 输出 layout、全文 markdown 与高亮坐标。
- 可视化阅读:PDF 叠加文本块、全文视图、双语视图任意切换,支持全屏及快捷定位。
- 增量翻译:默认使用
qwen-plus(可自定义QWEN_TRANS_MODEL),实时显示译文进度,可导出全文 markdown。 - 智能问答:默认使用
qwen-long(或QWEN_QA_MODEL),将选中块 + 全文上下文交给模型,Markdown/HTML/LaTeX 即时渲染。 - 上下文管理:片段多选、全文上下文开关、快捷提示语、流式回答随时中断再追问。
- 配置灵活:所有 API Key、模型名称、MinerU 入口都通过
.env或环境变量注入。
client/ # React + Vite + Tailwind,PDF.js 渲染、聊天面板等
server/ # Flask API,封装 MinerU、翻译、问答、SSE
├─ routes.py # 上传/解析/翻译/问答接口
├─ translator_llm.py # Qwen/OpenAI 客户端 & 缓存逻辑
├─ mineru_api.py # MinerU 调度与状态轮询
└─ config.py # 环境变量 & 默认模型
- 安装依赖
# 后端 python -m venv .venv && .\.venv\Scripts\activate pip install -r requirements.txt # 前端 cd client && npm install && cd ..
- 准备
.env(示例)QWEN_API_KEY=xxx QWEN_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 QWEN_TRANS_MODEL=qwen-plus QWEN_QA_MODEL=qwen-long MINERU_TOKEN=xxx MINERU_BASE_URL=https://mineru.net/api/v4 MINERU_MODEL_VERSION=vlm
- 启动服务
# Flask python server/main.py # 监听 http://localhost:5000 # React cd client && npm run dev # 监听 http://localhost:3000
- 上传 PDF:点击“上传 PDF”后自动调 MinerU,等待状态转为“解析完成”。
- 查看结构:PDF 左侧出现黄色/蓝色块,可点击查看原文并多选。
- 全文/双语/全屏:上方视图切换按钮,双语模式支持同步滚动。
- 翻译:在问答面板底部选择目标语言(中 / EN / 日本语 / 한국어),点击“生成翻译”就会驱动
qwen-plus按目标语言写入译文。 - 问答:输入问题或选择快捷提示即可。默认选中块 + 全文一起提交给
qwen-long,回答以 Markdown 渲染,可中途点击停止按钮打断流式输出再继续追问。
| 变量 | 说明 |
|---|---|
QWEN_API_KEY |
通义千问 DashScope API Key(必填) |
QWEN_TRANS_MODEL |
翻译模型别名,默认 qwen-plus |
QWEN_QA_MODEL |
问答模型别名,默认 qwen-long |
MINERU_TOKEN / MINERU_BASE_URL |
MinerU 上传/解析所需凭证 |
MINERU_MODEL_VERSION |
MinerU pipeline,常用 vlm |
UPLOAD_FOLDER / MINERU_FOLDER |
本地缓存解析/全文的目录 |
更多变量(OpenAI 兼容、Flask、缓存等)见 docs/API_CONFIG.md。
- 用户指南:详细操作流程、界面说明。
- API & 环境变量:完整的后端配置与示例。
- 故障排查:常见解析/翻译/渲染问题的解决方案。
- 贡献指南:代码规范、提交要求与 Issue/PR 流程。
欢迎通过 Issue/PR 分享 Bug、功能建议或文档改进。提交前请运行 npm run build 与基本后端自测,并保持 commit 清晰易读。
本项目基于 MIT License。