|
@@ -0,0 +1,105 @@
|
|
|
|
|
+zhch158: @workspace 根据demo/demo.py, 生成流水线执行markdown mermaid流程图,图中需要注明调用的模型以及传递的数据
|
|
|
|
|
+
|
|
|
|
|
+Workspace: 正在收集工作区信息根据 demo.py 文件,我为您生成了 MinerU 的流水线执行流程图:
|
|
|
|
|
+
|
|
|
|
|
+```mermaid
|
|
|
|
|
+flowchart TD
|
|
|
|
|
+ A[开始] --> B[读取PDF文件]
|
|
|
|
|
+ B --> C{选择后端类型}
|
|
|
|
|
+
|
|
|
|
|
+ C -->|Pipeline后端| D[PDF页面范围处理<br/>convert_pdf_bytes_to_bytes_by_pypdfium2]
|
|
|
|
|
+ C -->|VLM后端| N[PDF页面范围处理<br/>convert_pdf_bytes_to_bytes_by_pypdfium2]
|
|
|
|
|
+
|
|
|
|
|
+ D --> E[PDF文档分析<br/>pipeline_doc_analyze]
|
|
|
|
|
+ E --> F[获取推理结果、图像列表、PDF文档、语言列表、OCR开关列表]
|
|
|
|
|
+
|
|
|
|
|
+ F --> G[遍历每个PDF文档]
|
|
|
|
|
+ G --> H[创建输出目录<br/>prepare_env]
|
|
|
|
|
+ H --> I[创建文件写入器<br/>FileBasedDataWriter]
|
|
|
|
|
+ I --> J[转换为中间JSON<br/>pipeline_result_to_middle_json]
|
|
|
|
|
+
|
|
|
|
|
+ J --> K{输出选项}
|
|
|
|
|
+
|
|
|
|
|
+ K -->|f_draw_layout_bbox=True| L[绘制布局边界框<br/>draw_layout_bbox]
|
|
|
|
|
+ K -->|f_draw_span_bbox=True| M[绘制文本跨度边界框<br/>draw_span_bbox]
|
|
|
|
|
+ K -->|f_dump_orig_pdf=True| O[保存原始PDF文件]
|
|
|
|
|
+ K -->|f_dump_md=True| P[生成Markdown内容<br/>pipeline_union_make]
|
|
|
|
|
+ K -->|f_dump_content_list=True| Q[生成内容列表JSON<br/>MakeMode.CONTENT_LIST]
|
|
|
|
|
+ K -->|f_dump_middle_json=True| R[保存中间JSON文件]
|
|
|
|
|
+ K -->|f_dump_model_output=True| S[保存模型输出JSON文件]
|
|
|
|
|
+
|
|
|
|
|
+ N --> T[VLM文档分析<br/>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内容<br/>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`)
|
|
|
|
|
+
|
|
|
|
|
+流程图中的颜色编码:
|
|
|
|
|
+- 🔵 蓝色:数据处理流程
|
|
|
|
|
+- 🟠 橙色:模型推理相关
|
|
|
|
|
+- 🟣 紫色:输出生成
|
|
|
|
|
+- 🟡 黄色:决策分支
|