Tidak Ada Deskripsi

walson.wang 213c86b04a 1 3 minggu lalu
docs 213c86b04a 1 3 minggu lalu
llm 88107c53dd 1 4 minggu lalu
models 2a06946699 1st pubulished 1 bulan lalu
output 213c86b04a 1 3 minggu lalu
pdf_table_to_docx 2a06946699 1st pubulished 1 bulan lalu
phase1_parsing 88107c53dd 1 4 minggu lalu
phase2_outline 88107c53dd 1 4 minggu lalu
phase3_collection 88107c53dd 1 4 minggu lalu
phase4_filling 88107c53dd 1 4 minggu lalu
phase5_validation 88107c53dd 1 4 minggu lalu
phase6_export 88107c53dd 1 4 minggu lalu
scripts 213c86b04a 1 3 minggu lalu
.gitignore 2a06946699 1st pubulished 1 bulan lalu
README.md 88107c53dd 1 4 minggu lalu
pyproject.toml 213c86b04a 1 3 minggu lalu
run_pipeline.py 88107c53dd 1 4 minggu lalu

README.md

Proposa AI

AI 驱动的投标书智能生成系统

根据招标文件,自动分析需求、生成目录、填充公司信息、输出完整的投标文件 DOCX。


处理流程(Pipeline)

┌─────────────────────────────────────────────────────────────────┐
│                        输  入  层                                 │
├───────────────────────────┬─────────────────────────────────────┤
│  ① 新招标文件 PDF          │  ② 历史数据(N组)                   │
│  (本次要投的项目)          │      每组包含:                      │
│                            │    ├─ 历史招标文件.pdf              │
│                            │    └─ 对应投标文件.pdf              │
│                            │      (相似度越高,影响越大)        │
└─────────────┬─────────────┴──────────────┬──────────────────────┘
              │                            │
              ▼                            ▼
┌─────────────────────────────────────────────────────────────────┐
│  Phase 1 : 新招标解析 + 历史比对                                   │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  ┌─ 新招标处理 ───────────────────────────────────┐               │
│  │  ① PDF文本提取 → 章节/需求/概况                 │               │
│  │  ② PDF表格提取 → 保留合并单元格、跨页合并       │               │
│  │  ③ 提取项目特征(类型、预算、地域、采购人)      │               │
│  └──────────────────────────────────────────────────┘               │
│                                                                  │
│  ┌─ 历史数据处理 ───────────────────────────────────┐               │
│  │  ④ 逐组提取 招标文本 + 投标文本 + 目录结构       │               │
│  │  ⑤ 计算每组 历史招标 ↔ 新招标 的相似度           │               │
│  │     (关键词匹配 + LLM 语义评分)                 │               │
│  │  ⑥ 按相似度排序,输出归一化权重                  │               │
│  │     高相似度 → 其投标结构参考价值更大             │               │
│  └──────────────────────────────────────────────────┘               │
│                                                                  │
│  ★ 中间产物: output/phase1_new_tender.json        (新招标解析)    │
│              output/phase1_tender_tables/          (新招标表格)    │
│              output/phase1_historical_summary.json (N组+相似度)   │
│              output/phase1_raw/                    (各文件原文)    │
│                                                                  │
└──────────────────────────┬───────────────────────────────────────┘
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│  Phase 2 : 投标大纲构建(相似度加权)                              │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  新招标需求 + 加权后的历史参考 ──→ ① 优先参考高相似度的投标结构    │
│                                  ──→ ② 生成投标文件目录大纲       │
│                                  ──→ ③ 标注每节内容的参考来源     │
│                                  ──→ ④ 识别待补充信息节点         │
│                                                                  │
│  ★ 中间产物: output/phase2_bid_outline.json                      │
│                                                                  │
└──────────────────────────┬───────────────────────────────────────┘
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│  Phase 3 : 公司信息收集                                           │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  info_gap_analysis.json ──→ ① 生成 company_info_template.json   │
│                              (84个字段的信息收集表)               │
│                            ──→ ② 投标公司填写/上传               │
│                              ├── 文本信息 (公司名、地址、人员等)   │
│                              ├── 图片材料 (营业执照、证书、        │
│                              │    身份证、合同扫描件等)            │
│                              └── 盖章文件 (授权委托书、声明函等)   │
│                                                                  │
│  ★ 中间产物: company_info_filled.json (已填写的公司信息)          │
│                                                                  │
└──────────────────────────┬───────────────────────────────────────┘
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│  Phase 4 : 内容填充                                               │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  ┌──────────┐  ┌──────────────┐  ┌───────────────┐              │
│  │ 商务部分   │  │ 技术方案部分  │  │ 报价部分       │              │
│  │ (资格证明、 │  │ (服务方案、   │  │ (报价明细、    │              │
│  │  声明函等)  │  │  管理制度等)  │  │  价格构成等)   │              │
│  └──────────┘  └──────────────┘  └───────────────┘              │
│       │              │                  │                        │
│       ▼              ▼                  ▼                        │
│  ① LLM 根据招标要求和公司信息填充正文内容                          │
│  ② 表格还原 (招标表格原样出现,只填充数据)                         │
│  ③ 图片嵌入 (证书、身份证等扫描件插入对应位置)                     │
│  ④ 签章占位符 (&& 表示签字/盖章位置)                              │
│                                                                  │
│  ★ 中间产物: bid_fill_draft.json (填充后的各章节内容)              │
│                                                                  │
└──────────────────────────┬───────────────────────────────────────┘
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│  Phase 5 : 一致性校验                                             │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  bid_fill_draft.json ──→ ① 表格完整性检查                         │
│   + tender_tables/       (招标中的每个表格是否都在投标文件中?)     │
│                         ──→ ② 附件编号一致性检查                   │
│   + bid_outline.json       (正文引用的附件编号、名称 ↔ 文末清单)   │
│                         ──→ ③ 评分标准覆盖检查                     │
│                            (评标细则中的每项打分点是否有对应内容?)  │
│                         ──→ ④ 公司名称/项目名称一致性              │
│                                                                  │
│  ★ 中间产物: consistency_report.json (校验报告, 标注问题)         │
│                                                                  │
└──────────────────────────┬───────────────────────────────────────┘
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│  Phase 6 : DOCX 生成                                              │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  bid_fill_draft.json ──→ ① 按目录大纲顺序遍历所有章节             │
│   + tender_tables/    ──→ ② Markdown正文 → DOCX段落              │
│   + bid_outline.json  ──→ ③ 表格 DOCX → 嵌入投标文件             │
│                      ──→ ④ 图片路径 → doc.add_picture()          │
│                      ──→ ⑤ &&占位符 → 下划线                     │
│                      ──→ ⑥ 应用样式(字体、字号、行距、页边距)     │
│                                                                  │
│  ★ 最终产出: bid_deliverable_final.docx (完整的投标文件)          │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

项目结构

proposa-ai/
├── data/                          # 原始数据
│   ├── 招标文件.pdf
│   ├── 投标文件.pdf (历史参考)
│   └── 招标文件_表格输出/         # 已提取的招标表格
│       ├── tables.json            # 表格元数据 (36个表格)
│       └── tables/                # 每个表格独立 DOCX
│
├── llm/                           # LLM 工具模块
│   ├── llm_basic.py               # 基础调用示例 (DeepSeek API)
│   └── llm_utils.py               # 封装: analyze / extract / fill / chat
│
├── pdf_table_to_docx/             # PDF 表格提取模块 (已完成)
│   ├── extractor.py               # 主协调器 + 跨页检测合并
│   ├── table_parser.py            # 表格解析 + 合并单元格检测
│   ├── docx_writer.py             # DOCX 文档生成
│   ├── text_scorer.py             # NLP 文本评分 (GPT-2 ONNX)
│   └── cli.py                     # 命令行入口
│
├── phase1_parsing/                # Phase 1: 招标文件解析
│   ├── extract_pdf_text.py        #   PDF 文本提取
│   ├── extract_pdf_tables.py      #   PDF 表格提取 (封装 pdf_table_to_docx)
│   └── extract_bid_toc.py         #   历史投标文件目录提取
│
├── phase2_outline/                # Phase 2: 投标大纲生成
│   └── generate_outline.py        #   LLM 生成目录大纲
│
├── phase3_collection/             # Phase 3: 公司信息收集
│   └── generate_template.py       #   生成信息收集模板
│
├── phase4_filling/                # Phase 4: 内容填充 (待开发)
├── phase5_validation/             # Phase 5: 一致性校验 (待开发)
├── phase6_export/                 # Phase 6: DOCX 导出 (待开发)
│
├── run_pipeline.py                # Pipeline 入口 (python run_pipeline.py --phase 1-3)
│
├── output/                        # 各阶段输出产物
│   ├── phase1_tender_text.txt     #   Phase1: 招标文件文本
│   ├── phase1_tables/             #   Phase1: 提取的表格
│   ├── phase2_bid_outline.json    #   Phase2: 投标目录大纲
│   ├── phase3_company_template.json # Phase3: 公司信息模板
│   ├── company_info_template.json #   旧版详细模板
│   └── company_info_simple.json   #   旧版简化模板
│
├── docs/                          # 文档
│   └── team_and_architecture.md   # 团队分工 + 技术方案
│
├── models/                        # ML 模型文件
│   └── gpt2-chinese-cluecorpussmall-onnx/
│
└── README.md                      # 本文档

中间产物说明

每个 Phase 都有独立的中间产物,便于定位问题和针对性优化:

路径 阶段 用途
output/phase1_new_tender.json Phase 1 新招标解析(章节、概况、表格索引)
output/phase1_tender_tables/tables.json Phase 1 新招标表格元数据
output/phase1_historical_summary.json Phase 1 历史数据汇总,每组含相似度评分、权重、投标目录结构
output/phase1_raw/ Phase 1 招标和各历史文件的原始文本
output/phase2_bid_outline.json Phase 2 投标目录大纲(含来源标注)
output/phase3_company_template.json Phase 3 公司信息收集模板
output/phase4_bid_fill_draft.json Phase 4 (待开发)填充后的各章节内容
output/phase5_consistency_report.json Phase 5 (待开发)一致性校验结果
output/phase6_bid_final.docx Phase 6 (待开发)最终投标文件

环境要求

  • Python 3.10+
  • 依赖: pip install pymupdf pdfplumber python-docx openai onnxruntime tokenizers

模型下载

文本困惑度模型(可选,用于 NLP 表格优化):