|
1 | | -# Readme |
| 1 | +# **MinerU SaaS Wrapper For Fastgpt 详细部署文档** |
| 2 | +**—— 为 FastGPT 提供稳定、高效、开箱即用的纯白嫖文档解析服务,转接服务用grok写的,文档也是,有不明白出问题了,`docker logs -f mineru-saas-wrapper` 查看日志,问他~** |
2 | 3 |
|
3 | | -# 项目介绍 |
4 | 4 | --- |
5 | | -本项目参照官方插件**pdf-marker,**基于MinertU实现了一个高效的 **PDF 转 Markdown 接口服务**,通过高性能的接口设计,快速将 PDF 文档转换为 Markdown 格式文本。 |
6 | 5 |
|
7 | | -- **简洁性:**项目无需修改代码,仅需调整文件路径即可使用,简单易用 |
8 | | -- **易用性:**通过提供简洁的 API,开发者只需发送 HTTP 请求即可完成 PDF 转换 |
9 | | -- **灵活性:**支持本地部署,便于快速上手和灵活集成 |
| 6 | +> **适用人群**:FastGPT 开发者、后端工程师、DevOps、AI 应用集成者 |
| 7 | +> **目标**:在 **5 分钟内**完成从零到生产可用的 MinerU saas服务api的文档解析服务部署 |
10 | 8 |
|
11 | | -# 配置推荐 |
| 9 | +--- |
| 10 | + |
| 11 | +## 一、项目概述 |
12 | 12 |
|
13 | | -配置及速率请参照[MinerU项目](https://github.com/opendatalab/MinerU/blob/master/README_zh-CN.md)官方介绍。 |
| 13 | +| 项目 | 说明 | |
| 14 | +|------|------| |
| 15 | +| **名称** | MinerU SaaS Wrapper for FastGPT | |
| 16 | +| **框架** | FastAPI + Uvicorn | |
| 17 | +| **核心功能** | 接收文件 → 调用 MinerU 官方 SaaS API → 轮询结果 → 返回内嵌图片的 Markdown → fasgpt读取解析内容转为知识库 | |
| 18 | +| **部署方式** | Docker(推荐) / docker-compose | |
| 19 | +| **接口路径** | `POST /v2/parse/file` | |
14 | 20 |
|
15 | | -# 本地开发 |
| 21 | +--- |
16 | 22 |
|
17 | | -## 基本流程 |
| 23 | +## 二、前置条件 |
| 24 | +| **MinerU Token** | 在 [https://mineru.net](https://mineru.net) 注册并获取 SaaS Token | |
18 | 25 |
|
19 | | -1、安装基本环境,主要参照官方文档[使用CPU及GPU](https://github.com/opendatalab/MinerU/blob/master/README_zh-CN.md#%E4%BD%BF%E7%94%A8GPU)运行MinerU的方式进行。具体如下,首先使用anaconda安装基础运行环境 |
| 26 | +> **获取 Token 步骤**: |
| 27 | +> 1. 登录 MinerU 官网 |
| 28 | +> 2. 进入 **控制台 → API 密钥** |
| 29 | +> 3. 创建新密钥(建议命名 `fastgpt-wrapper`) |
| 30 | +> 4. 复制完整 Token(以 `eyJ...` 开头) |
| 31 | +
|
| 32 | +--- |
| 33 | + |
| 34 | +## 三、目录结构说明 |
20 | 35 |
|
21 | 36 | ```bash |
22 | | -conda create -n mineru python=3.10 |
23 | | -conda activate mineru |
24 | | -pip install -U "magic-pdf[full]" --extra-index-url https://wheels.myhloli.com -i https://mirrors.aliyun.com/pypi/simple |
| 37 | +mineru-saas-wrapper/ |
| 38 | +├── .dockerignore |
| 39 | +├── Dockerfile |
| 40 | +├── docker-compose.yml |
| 41 | +├── mineru_saas_api.py # 主服务逻辑 |
| 42 | +├── requirements.txt # 依赖包 |
| 43 | +├── .env # (可选)环境变量文件 |
| 44 | +└── README.md |
25 | 45 | ``` |
26 | 46 |
|
27 | | -2、[下载模型权重文件](https://github.com/opendatalab/MinerU/blob/master/docs/how_to_download_models_zh_cn.md) |
| 47 | +--- |
| 48 | + |
| 49 | +## 四、部署方式一:使用 `docker-compose`(推荐) |
| 50 | + |
| 51 | +### 步骤 1:克隆项目 |
28 | 52 |
|
29 | 53 | ```bash |
30 | | -pip install modelscope |
31 | | -wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/scripts/download_models.py -O download_models.py |
32 | | -python download_models.py |
| 54 | +mkdir mineru-saas-wrapper |
| 55 | +cd mineru-saas-wrapper |
33 | 56 | ``` |
34 | 57 |
|
35 | | -python脚本会自动下载模型文件并配置好配置文件中的模型目录 |
| 58 | +### 步骤 2:创建 `.env` 文件(推荐,防止 Token 泄露) |
36 | 59 |
|
37 | | -配置文件可以在用户目录中找到,文件名为`magic-pdf.json` |
| 60 | +```bash |
| 61 | +touch .env |
| 62 | +``` |
38 | 63 |
|
39 | | -> windows的用户目录为 "C:\\Users\\用户名", linux用户目录为 "/home/用户名", macOS用户目录为 "/Users/用户名" |
| 64 | +编辑 `.env`: |
40 | 65 |
|
41 | | -3、如果您的显卡显存大于等于 **8GB** ,可以进行以下流程,测试CUDA解析加速效果。默认为cpu模式,使用显卡的话需修改【用户目录】中配置文件magic-pdf.json中"device-mode"的值。 |
| 66 | +```env |
| 67 | +MINERU_TOKEN=官网申请的API 密钥 |
| 68 | +POLL_INTERVAL=3 |
| 69 | +POLL_TIMEOUT=600 |
| 70 | +PORT=1234 |
| 71 | +``` |
42 | 72 |
|
43 | | -```bash |
44 | | -{ |
45 | | - "device-mode":"cuda" |
46 | | -} |
| 73 | +### 步骤 3:修改 `docker-compose.yml` |
| 74 | + |
| 75 | +```yaml |
| 76 | +services: |
| 77 | + mineru-saas-wrapper: |
| 78 | + build: |
| 79 | + context: . |
| 80 | + dockerfile: Dockerfile |
| 81 | + container_name: mineru-saas-wrapper |
| 82 | + restart: unless-stopped |
| 83 | + ports: |
| 84 | + - "1234:1234" |
| 85 | + env_file: |
| 86 | + - .env # 改为读取 .env 文件 |
| 87 | + healthcheck: |
| 88 | + test: ["CMD", "curl", "-f", "http://localhost:1234/health"] |
| 89 | + interval: 30s |
| 90 | + timeout: 10s |
| 91 | + retries: 3 |
| 92 | + start_period: 10s |
| 93 | + logging: |
| 94 | + driver: "json-file" |
| 95 | + options: |
| 96 | + max-size: "10m" |
| 97 | + max-file: "3" |
47 | 98 | ``` |
48 | 99 |
|
49 | | -4、如需使用GPU加速,需额外再安装依赖。 |
| 100 | +### 步骤 4:启动服务 |
50 | 101 |
|
51 | 102 | ```bash |
52 | | -pip install --force-reinstall torch==2.3.1 torchvision==0.18.1 "numpy<2.0.0" --index-url https://download.pytorch.org/whl/cu118 |
| 103 | +docker-compose up -d --build |
53 | 104 | ``` |
54 | 105 |
|
| 106 | +### 步骤 5:验证服务状态 |
| 107 | + |
55 | 108 | ```bash |
56 | | -pip install paddlepaddle-gpu==2.6.1 |
| 109 | +# 查看容器状态 |
| 110 | +docker ps | grep mineru-saas-wrapper |
| 111 | + |
| 112 | +# 查看健康检查 |
| 113 | +curl http://localhost:1234/health |
| 114 | +# 预期输出: |
| 115 | +{"status":"healthy"} |
57 | 116 | ``` |
58 | 117 |
|
59 | | -5、克隆一个FastGPT的项目文件 |
60 | 118 |
|
61 | | -``` |
62 | | -git clone https://github.com/labring/FastGPT.git |
63 | | -``` |
| 119 | +## 五、接口测试 |
64 | 120 |
|
65 | | -6、将主目录设置为 plugins/model 下的pdf-mineru文件夹 |
| 121 | +### 1. 使用 `curl` 测试 |
66 | 122 |
|
| 123 | +```bash |
| 124 | +curl -X POST "http://localhost:1234/v2/parse/file" \ |
| 125 | + -F "file=@./sample.pdf" | jq |
67 | 126 | ``` |
68 | | -cd /plugins/model/pdf-mineru/ |
| 127 | + |
| 128 | +### 2. 预期成功响应 |
| 129 | + |
| 130 | +```json |
| 131 | +{ |
| 132 | + "success": true, |
| 133 | + "message": "", |
| 134 | + "markdown": "# 标题\n\n ...", |
| 135 | + "pages": 8 |
| 136 | +} |
69 | 137 | ``` |
70 | 138 |
|
71 | | -7、执行文件pdf_parser_mineru.py,启动服务 |
| 139 | +### 查看详细日志 |
72 | 140 |
|
73 | 141 | ```bash |
74 | | -python pdf_parser_mineru.py |
| 142 | +docker logs -f mineru-saas-wrapper |
75 | 143 | ``` |
76 | 144 |
|
77 | | -# 访问示例 |
| 145 | +关键日志关键词: |
| 146 | +- `Got upload url` → 上传成功 |
| 147 | +- `Polling ... -> done` → 解析完成 |
| 148 | +- `Parse finished, X pages` → 成功返回 |
| 149 | + |
| 150 | +--- |
78 | 151 |
|
79 | | -仿照了**pdf-marker**的方式。 |
| 152 | +## 九、FastGPT 集成指南 |
80 | 153 |
|
81 | | -```bash |
82 | | -curl --location --request POST "http://localhost:7231/v1/parse/file" \ |
83 | | ---header "Authorization: Bearer your_access_token" \ |
84 | | ---form "file=@./file/chinese_test.pdf" |
| 154 | +### 1. 在 FastGPT 中配置「文档解析」节点 |
| 155 | + |
| 156 | +| 字段 | 值 | |
| 157 | +|------|---- | |
| 158 | +| **解析服务地址** | `http://your-server-ip:1234/v2/parse/file` | |
| 159 | +| **请求方式** | POST | |
| 160 | +| **文件字段名** | `file` | |
| 161 | +| **响应字段映射** | `markdown` → 内容,`pages` → 页数 | |
| 162 | + |
| 163 | +### 2. FastGPT 示例配置(JSON) |
| 164 | + |
| 165 | +```json |
| 166 | +// 已使用 json5 进行解析,会自动去掉注释,无需手动去除 |
| 167 | +{ |
| 168 | + "feConfigs": { |
| 169 | + "lafEnv": "https://laf.dev", // laf环境。 https://laf.run (杭州阿里云) ,或者私有化的laf环境。如果使用 Laf openapi 功能,需要最新版的 laf 。 |
| 170 | + "mcpServerProxyEndpoint": "" // mcp server 代理地址,例如: http://localhost:3005 |
| 171 | + }, |
| 172 | + "systemEnv": { |
| 173 | + "datasetParseMaxProcess": 10, // 知识库文件解析最大线程数量 |
| 174 | + "vectorMaxProcess": 10, // 向量处理线程数量 |
| 175 | + "qaMaxProcess": 10, // 问答拆分线程数量 |
| 176 | + "vlmMaxProcess": 10, // 图片理解模型最大处理进程 |
| 177 | + "tokenWorkers": 30, // Token 计算线程保持数,会持续占用内存,不能设置太大。 |
| 178 | + "hnswEfSearch": 100, // 向量搜索参数,仅对 PG 和 OB 生效。越大,搜索越精确,但是速度越慢。设置为100,有99%+精度。 |
| 179 | + "hnswMaxScanTuples": 100000, // 向量搜索最大扫描数据量,仅对 PG生效。 |
| 180 | + "customPdfParse": { |
| 181 | + "url": "http://your-server-ip:1234/v2/parse/file", // 自定义 PDF 解析服务地址 |
| 182 | + "key": "", // 自定义 PDF 解析服务密钥 |
| 183 | + "doc2xKey": "", // doc2x 服务密钥 |
| 184 | + "price": 0 // PDF 解析服务价格 |
| 185 | + } |
| 186 | + } |
| 187 | +} |
85 | 188 | ``` |
| 189 | +--- |
| 190 | + |
| 191 | +**部署完成!** |
| 192 | +现在你的 FastGPT 已拥有强大的 **MinerU 文档解析能力**,支持 PDF + 图片 → 完美 Markdown 内嵌渲染。 |
| 193 | + |
| 194 | +> 如有问题,欢迎提交 Issue 或查看日志排查。祝你解析愉快! |
0 commit comments