zhch158: @workspace 根据demo/demo.py, 生成流水线执行markdown mermaid流程图,图中需要注明调用的模型以及传递的数据
Workspace: 正在收集工作区信息根据 demo.py 文件,我为您生成了 MinerU 的流水线执行流程图:
```mermaid
flowchart TD
A[开始] --> B[读取PDF文件]
B --> C{选择后端类型}
C -->|Pipeline后端| D[PDF页面范围处理
convert_pdf_bytes_to_bytes_by_pypdfium2]
C -->|VLM后端| N[PDF页面范围处理
convert_pdf_bytes_to_bytes_by_pypdfium2]
D --> E[PDF文档分析
pipeline_doc_analyze]
E --> F[获取推理结果、图像列表、PDF文档、语言列表、OCR开关列表]
F --> G[遍历每个PDF文档]
G --> H[创建输出目录
prepare_env]
H --> I[创建文件写入器
FileBasedDataWriter]
I --> J[转换为中间JSON
pipeline_result_to_middle_json]
J --> K{输出选项}
K -->|f_draw_layout_bbox=True| L[绘制布局边界框
draw_layout_bbox]
K -->|f_draw_span_bbox=True| M[绘制文本跨度边界框
draw_span_bbox]
K -->|f_dump_orig_pdf=True| O[保存原始PDF文件]
K -->|f_dump_md=True| P[生成Markdown内容
pipeline_union_make]
K -->|f_dump_content_list=True| Q[生成内容列表JSON
MakeMode.CONTENT_LIST]
K -->|f_dump_middle_json=True| R[保存中间JSON文件]
K -->|f_dump_model_output=True| S[保存模型输出JSON文件]
N --> T[VLM文档分析
vlm_doc_analyze]
T --> U[获取中间JSON和推理结果]
U --> V[创建输出目录和文件写入器]
V --> W{VLM输出选项}
W -->|f_draw_layout_bbox=True| X[绘制布局边界框]
W -->|f_dump_orig_pdf=True| Y[保存原始PDF文件]
W -->|f_dump_md=True| Z[生成Markdown内容
vlm_union_make]
W -->|f_dump_content_list=True| AA[生成内容列表JSON]
W -->|f_dump_middle_json=True| BB[保存中间JSON文件]
W -->|f_dump_model_output=True| CC[保存模型输出TXT文件]
L --> DD[输出完成]
M --> DD
O --> DD
P --> DD
Q --> DD
R --> DD
S --> DD
X --> DD
Y --> DD
Z --> DD
AA --> DD
BB --> DD
CC --> DD
style A fill:#e8f5e8
style B fill:#e8f5e8
style E fill:#bbdefb
style T fill:#bbdefb
style J fill:#fff3e0
style P fill:#f3e5f5
style Z fill:#f3e5f5
style DD fill:#c8e6c9
classDef process fill:#e3f2fd,stroke:#333,stroke-width:2px
classDef model fill:#fff3e0,stroke:#ff9800,stroke-width:2px
classDef output fill:#f3e5f5,stroke:#9c27b0,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#ffc107,stroke-width:2px
class D,H,I,V decision
class E,T,J model
class L,M,O,P,Q,R,S,X,Y,Z,AA,BB,CC output
```
这个流程图展示了 MinerU 的主要执行流程:
## 主要组件说明:
1. **输入处理**:
- 读取PDF文件并根据页面范围进行处理
- 支持 Pipeline 和 VLM 两种后端模式
2. **Pipeline 后端流程**:
- 调用 `pipeline_doc_analyze` 进行文档分析
- 使用 `pipeline_result_to_middle_json` 转换结果
- 通过 `pipeline_union_make` 生成最终内容
3. **VLM 后端流程**:
- 调用 `vlm_doc_analyze` 进行分析
- 使用 `vlm_union_make` 生成内容
4. **输出文件类型**:
- Markdown文件 (`.md`)
- 中间JSON文件 (`_middle.json`)
- 模型输出文件 (`_model.json` 或 `_model_output.txt`)
- 内容列表文件 (`_content_list.json`)
- 可视化PDF文件 (`_layout.pdf`, `_span.pdf`)
- 原始PDF文件 (`_origin.pdf`)
流程图中的颜色编码:
- 🔵 蓝色:数据处理流程
- 🟠 橙色:模型推理相关
- 🟣 紫色:输出生成
- 🟡 黄色:决策分支