Explorar o código

新增年报PDF知识图谱生成方案文档和MinerU流水线执行流程图

zhch158_admin hai 3 meses
pai
achega
e57ddf2bf3
Modificáronse 3 ficheiros con 316 adicións e 0 borrados
  1. 149 0
      zhch/annual_report_kg_solution.md
  2. 105 0
      zhch/mineru_pipeline.md
  3. 62 0
      zhch/mineru_pipeline_flow.md

+ 149 - 0
zhch/annual_report_kg_solution.md

@@ -0,0 +1,149 @@
+# 年报PDF知识图谱生成方案
+
+## 1. 系统架构
+
+```
+年报PDF → MinerU → 结构化数据 → 知识图谱
+```
+
+## 2. 处理步骤
+
+### 2.1. 数据提取阶段
+- 使用MinerU工具包处理PDF文件
+- 提取文本、表格、图像等内容
+- 生成结构化的JSON数据
+
+### 2.2. 知识抽取阶段
+- 从结构化数据中提取实体
+- 识别实体间的关系
+- 构建初步的知识图谱
+
+### 2.3. 知识融合阶段
+- 对实体进行聚类和消歧
+- 补充实体属性信息
+- 完善关系网络
+
+## 3. 实体类型定义
+
+### 3.1. 核心实体
+- **公司**: 年报主体公司
+- **章节**: 年报各部分内容
+- **财务指标**: 关键财务数据
+- **业务板块**: 公司主要业务领域
+- **管理层**: 公司高管人员
+- **时间节点**: 年度、季度等时间信息
+
+### 3.2. 辅助实体
+- **表格**: 财务数据表格
+- **图像**: 图表、照片等
+- **公式**: 数学公式和计算方法
+
+## 4. 关系类型定义
+
+### 4.1. 结构关系
+- HAS_SECTION: 公司包含章节
+- HAS_TABLE: 章节包含表格
+- HAS_IMAGE: 章节包含图像
+
+### 4.2. 业务关系
+- BELONGS_TO: 业务板块属于公司
+- REPORTS: 公司报告财务指标
+- MANAGES: 管理层管理公司
+
+## 5. 技术实现
+
+### 5.1. 数据处理流程
+```python
+# 伪代码
+def process_annual_report(pdf_path):
+    # 1. 使用MinerU处理PDF
+    structured_data = mineru.process(pdf_path)
+    
+    # 2. 提取实体和关系
+    entities, relations = extract_knowledge(structured_data)
+    
+    # 3. 构建知识图谱
+    knowledge_graph = build_kg(entities, relations)
+    
+    return knowledge_graph
+```
+
+### 5.2. 实体识别
+- 使用规则匹配识别财务指标
+- 使用命名实体识别识别公司名、人名等
+- 使用模板匹配识别时间信息
+
+### 5.3. 关系抽取
+- 基于位置关系抽取(如表格在某个章节中)
+- 基于语义关系抽取(如"营业收入"属于"财务数据")
+- 基于格式关系抽取(如粗体文字可能是标题)
+
+## 6. 输出格式
+
+### 6.1. 知识图谱JSON格式
+```json
+{
+  "entities": [
+    {
+      "id": "entity_1",
+      "type": "company",
+      "name": "中国黄金",
+      "properties": {
+        "stock_code": "600916",
+        "industry": "有色金属"
+      }
+    }
+  ],
+  "relations": [
+    {
+      "source": "entity_1",
+      "target": "entity_2",
+      "type": "reports",
+      "properties": {
+        "year": "2022",
+        "value": "1000000000"
+      }
+    }
+  ]
+}
+```
+
+### 6.2. 可视化格式
+- 支持Graphviz DOT格式
+- 支持GML格式
+- 支持CSV格式(节点和边分别存储)
+
+## 7. 性能优化
+
+### 7.1. 并行处理
+- 多进程处理不同页面
+- GPU加速模型推理
+
+### 7.2. 缓存机制
+- 缓存已处理的页面结果
+- 增量更新知识图谱
+
+## 8. 部署方案
+
+### 8.1. 本地部署
+- Docker容器化部署
+- 支持Mac、Linux、Windows系统
+
+### 8.2. 云部署
+- 支持阿里云、腾讯云等云平台
+- 支持Kubernetes集群部署
+
+## 9. 扩展功能
+
+### 9.1. 多语言支持
+- 支持中英文年报处理
+- 支持其他语言的适配
+
+### 9.2. 多格式输入
+- 支持PDF、Word、HTML等格式
+- 支持扫描版PDF的OCR处理
+
+### 9.3. 智能分析
+- 自动生成年报摘要
+- 财务数据趋势分析
+- 异常数据检测

+ 105 - 0
zhch/mineru_pipeline.md

@@ -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`)
+
+流程图中的颜色编码:
+- 🔵 蓝色:数据处理流程
+- 🟠 橙色:模型推理相关
+- 🟣 紫色:输出生成
+- 🟡 黄色:决策分支

+ 62 - 0
zhch/mineru_pipeline_flow.md

@@ -0,0 +1,62 @@
+# 使用Claude code生成
+```
+@demo @mineru 根据@demo/demo.py, 生成流水线执行markdown mermaid流程图,图中需要注明调用的模型以及传递的数据
+```
+
+```mermaid
+flowchart TD
+    A[开始] --> B[读取PDF文件]
+    B --> C{选择后端类型}
+    
+    C -->|Pipeline| D[PDF转图像]
+    D --> E[布局检测<br/>DocLayout-YOLO]
+    E --> F{元素类型}
+    
+    F -->|文本| G[OCR识别<br/>PyTorch-PaddleOCR]
+    F -->|公式| H[公式检测<br/>YOLOv8-MFD]
+    H --> I[公式识别<br/>Unimernet]
+    F -->|表格| J[表格识别<br/>RapidTable]
+    F -->|图像| K[图像提取]
+    
+    G --> L[整合结果]
+    I --> L
+    J --> L
+    K --> L
+    
+    L --> M[转换为中间JSON]
+    M --> N[生成输出文件]
+    
+    C -->|VLM| O[PDF转图像]
+    O --> P[VLM模型推理<br/>MinerU-VLM]
+    P --> Q[转换为中间JSON]
+    Q --> N
+    
+    N --> R{输出格式}
+    R -->|Markdown| S[.md文件]
+    R -->|中间JSON| T[_middle.json]
+    R -->|模型输出| U[_model.json/.txt]
+    R -->|内容列表| V[_content_list.json]
+    R -->|可视化| W[_layout.pdf/_span.pdf]
+    R -->|原始PDF| X[_origin.pdf]
+    
+    style D fill:#e1f5fe
+    style E fill:#f3e5f5
+    style G fill:#e8f5e8
+    style H fill:#fff3e0
+    style I fill:#fff3e0
+    style J fill:#fce4ec
+    style K fill:#f1f8e9
+    style L fill:#f5f5f5
+    style M fill:#e0f2f1
+    style O fill:#e1f5fe
+    style P fill:#f3e5f5
+    style Q fill:#e0f2f1
+    
+    classDef model fill:#f5f5f5,stroke:#333,stroke-width:1px;
+    classDef process fill:#e3f2fd,stroke:#333,stroke-width:1px;
+    classDef data fill:#e8f5e8,stroke:#333,stroke-width:1px;
+    classDef output fill:#fce4ec,stroke:#333,stroke-width:1px;
+    
+    class D,E,G,H,I,J,K,L,M,O,P,Q process
+    class S,T,U,V,W,X output
+```