mineru_pipeline.md 3.7 KB

zhch158: @workspace 根据demo/demo.py, 生成流水线执行markdown mermaid流程图,图中需要注明调用的模型以及传递的数据

Workspace: 正在收集工作区信息根据 demo.py 文件,我为您生成了 MinerU 的流水线执行流程图:

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)

流程图中的颜色编码:

  • 🔵 蓝色:数据处理流程
  • 🟠 橙色:模型推理相关
  • 🟣 紫色:输出生成
  • 🟡 黄色:决策分支