129 lines
3.3 KiB
Markdown
129 lines
3.3 KiB
Markdown
# Paper Burner 本地代理服务器
|
||
|
||
轻量级本地代理服务器,功能完全等同于 Cloudflare Worker,让你无需部署到云端即可使用。
|
||
|
||
> **重要提示**:此本地代理仅支持 HTTP 协议,必须配合**本地运行的 Paper Burner 前端**使用。
|
||
> 如果你从 HTTPS 网站(如 `https://paperburner.viwoplus.site`)访问,由于浏览器安全限制(Mixed Content),无法连接到本地 HTTP 服务。
|
||
> 请使用我们提供的 Cloudflare Worker 或自行部署 HTTPS 代理。
|
||
|
||
## 功能
|
||
|
||
- **OCR 代理**: MinerU / Doc2X
|
||
- **学术搜索代理**: Semantic Scholar / PubMed / CrossRef / OpenAlex / arXiv
|
||
- **文件下载代理**: PDF / ZIP(解决跨域问题)
|
||
|
||
## 快速开始
|
||
|
||
### 1. 启动本地代理
|
||
|
||
```bash
|
||
cd local-proxy
|
||
npm install
|
||
npm start
|
||
```
|
||
|
||
### 2. 启动本地前端
|
||
|
||
在项目根目录启动一个本地服务器:
|
||
|
||
```bash
|
||
# 方式一:使用 npx serve
|
||
npx serve -p 8080
|
||
|
||
# 方式二:使用 Python
|
||
python -m http.server 8080
|
||
|
||
# 方式三:使用 VS Code Live Server 插件
|
||
```
|
||
|
||
### 3. 配置使用
|
||
|
||
1. 访问 `http://localhost:8080`
|
||
2. 进入设置页面
|
||
3. 将代理地址设置为:`http://localhost:3456`
|
||
4. 保存设置
|
||
|
||
## 配置
|
||
|
||
1. 复制配置文件:
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
2. 编辑 `.env` 文件,填入你的 API Token(可选):
|
||
```
|
||
MINERU_API_TOKEN=your_mineru_token
|
||
DOC2X_API_TOKEN=your_doc2x_token
|
||
```
|
||
|
||
3. 启动服务器:
|
||
```bash
|
||
npm start
|
||
```
|
||
|
||
## API 路由
|
||
|
||
### OCR 服务
|
||
|
||
| 路由 | 方法 | 说明 |
|
||
|------|------|------|
|
||
| `/mineru/upload` | POST | MinerU 文件上传 |
|
||
| `/mineru/result/:batchId` | GET | 获取 MinerU 处理结果 |
|
||
| `/doc2x/upload` | POST | Doc2X 文件上传 |
|
||
| `/doc2x/status/:uid` | GET | 查询 Doc2X 状态 |
|
||
| `/doc2x/convert` | POST | Doc2X 格式转换 |
|
||
| `/doc2x/convert/result/:uid` | GET | 获取转换结果 |
|
||
| `/mineru/zip?url=` | GET | MinerU ZIP 代理下载 |
|
||
| `/doc2x/zip?url=` | GET | Doc2X ZIP 代理下载 |
|
||
|
||
### 学术搜索
|
||
|
||
| 路由 | 方法 | 说明 |
|
||
|------|------|------|
|
||
| `/api/semanticscholar/*` | GET | Semantic Scholar 代理 |
|
||
| `/api/pubmed/*` | GET | PubMed 代理 |
|
||
| `/api/crossref/*` | GET | CrossRef 代理 |
|
||
| `/api/openalex/*` | GET | OpenAlex 代理 |
|
||
| `/api/arxiv/*` | GET | arXiv 代理 |
|
||
| `/api/pdf/download?url=` | GET | PDF 下载代理 |
|
||
|
||
### 其他
|
||
|
||
| 路由 | 方法 | 说明 |
|
||
|------|------|------|
|
||
| `/health` | GET | 健康检查 |
|
||
|
||
## 请求头
|
||
|
||
可以通过请求头传递 API Token(优先级高于环境变量):
|
||
|
||
- `X-MinerU-Key`: MinerU API Token
|
||
- `X-Doc2X-Key`: Doc2X API Token
|
||
- `X-Api-Key`: Semantic Scholar / PubMed API Key
|
||
|
||
## 系统要求
|
||
|
||
- Node.js >= 18.0.0
|
||
|
||
## 使用场景对比
|
||
|
||
| 场景 | 推荐方案 |
|
||
|------|----------|
|
||
| 本地开发/测试 | 本地代理 + 本地前端 |
|
||
| 日常使用(线上) | Cloudflare Worker |
|
||
| 私有部署 | 自建 HTTPS 代理服务器 |
|
||
|
||
## 为什么不支持 HTTPS 网站?
|
||
|
||
浏览器的 **Mixed Content** 安全策略禁止 HTTPS 页面请求 HTTP 资源。虽然可以通过自签名证书启用 HTTPS,但:
|
||
|
||
1. 自签名证书需要手动信任,用户体验差
|
||
2. 杀毒软件(如卡巴斯基)可能拦截自签名 HTTPS 流量
|
||
3. 每次证书过期都需要重新配置
|
||
|
||
因此,本地代理仅推荐用于**本地开发和测试**场景。
|
||
|
||
## License
|
||
|
||
GPL-2.0
|