# NER vs LLM 提取能力对比分析 ## 一、智报要素分类与提取难度分析 基于 `_mock_rules_v2.py` 中的47个要素,按提取难度和特征分为5类: ### 类型A:简单结构化数据(6个要素)✅ NER完全覆盖 | 要素 | 示例 | 特征 | 提取难度 | |------|------|------|----------| | workStartAt | 2024年7月13日 | 固定日期格式 | ⭐ 极低 | | workEndAt | 2024年10月19日 | 固定日期格式 | ⭐ 极低 | | resultScore | 93.33分 | 数值+单位 | ⭐ 极低 | | resultLevel | 一级 | 枚举值 | ⭐ 极低 | | basicInfo.projectCode | BZ-0092-2024 | 固定编号格式 | ⭐ 极低 | | basicInfo.reviewObjectCertificateCode | ZGDIDBOY-083 | 固定编号格式 | ⭐ 极低 | **NER能力**:✅ 100% 覆盖 **推荐方案**:使用规则NER,准确率可达95%+ --- ### 类型B:简单实体识别(2个要素)✅ NER完全覆盖 | 要素 | 示例 | 特征 | 提取难度 | |------|------|------|----------| | reviewObject | 中国电建集团成都勘测设计研究院有限公司 | 机构全称 | ⭐⭐ 低 | | reviewObjectAlias | 成都院 | 机构简称 | ⭐⭐ 低 | **NER能力**:✅ 90% 覆盖 **问题**:简称提取需要上下文理解("以下简称XX") **推荐方案**:NER + 简单规则后处理 --- ### 类型C:列表拼接型(2个要素)⚠️ NER部分覆盖 | 要素 | 示例 | 特征 | 提取难度 | |------|------|------|----------| | reviewRange | 成都院本部、大邑地勘项目(简称:大邑项目) | 多项目拼接 | ⭐⭐⭐ 中 | | workProcess | 2024年7月13日至10月17日期间,评审组对成都院... | 模板化描述 | ⭐⭐⭐ 中 | **NER能力**:⚠️ 50% 覆盖 **问题**: - NER可以提取单个项目名,但无法自动拼接 - workProcess需要按模板生成,不是简单提取 **推荐方案**:NER提取实体 + LLM生成拼接/模板填充 --- ### 类型D:总结型描述(18个要素)❌ NER无法覆盖 | 要素 | actionType | 来源 | 特征 | 提取难度 | |------|-----------|------|------|----------| | target | summary | 评审代码5.1.1.1~5.1.1.3的remark | 需要总结多条意见 | ⭐⭐⭐⭐ 高 | | duty | summary | 评审代码5.1.2.1的remark | 需要总结 | ⭐⭐⭐⭐ 高 | | fullParticipation | summary | 评审代码5.1.3的remark | 需要总结 | ⭐⭐⭐⭐ 高 | | safetyInvestment | summary | 评审代码5.1.4的remark | 需要总结 | ⭐⭐⭐⭐ 高 | | safetyCulture | summary | 评审代码5.1.5的remark | 需要总结 | ⭐⭐⭐⭐ 高 | | systematicManagement | summary | 评审代码5.2.*的remark | 需要总结 | ⭐⭐⭐⭐ 高 | | employeeTraining | summary | 评审代码5.3.2.*的remark | 需要总结 | ⭐⭐⭐⭐ 高 | | assetManagement | summary | 评审代码5.4.1.*的remark | 需要总结 | ⭐⭐⭐⭐ 高 | | jobSafety | summary | 评审代码5.4.2.1的remark | 需要总结 | ⭐⭐⭐⭐ 高 | | positionQualified | summary | 评审代码5.4.2.3的remark | 需要总结 | ⭐⭐⭐⭐ 高 | | partner | summary | 评审代码5.4.2.4的remark | 需要总结 | ⭐⭐⭐⭐ 高 | | occupationalHealth | summary | 评审代码5.4.3.1的remark | 需要总结 | ⭐⭐⭐⭐ 高 | | riskAssessment | summary | 评审代码5.5.1.1和5.5.1.2的remark | 需要总结 | ⭐⭐⭐⭐ 高 | | majorHazardManagement | summary | 评审代码5.5.2.1的remark | 需要总结 | ⭐⭐⭐⭐ 高 | | hazardInspection | summary | 评审代码5.5.3.1的remark | 需要总结 | ⭐⭐⭐⭐ 高 | | changeManagement | summary | 评审代码5.5.1.4的remark | 需要总结 | ⭐⭐⭐⭐ 高 | | earlyWarning | summary | 评审代码5.5.4的remark | 需要总结 | ⭐⭐⭐⭐ 高 | | emergencyResponse | summary | 评审代码5.6.1.1的remark | 需要总结 | ⭐⭐⭐⭐ 高 | **NER能力**:❌ 0% 覆盖 **原因**:这些要素不是"提取",而是"总结",需要: 1. 定位特定评审代码的评审意见 2. 理解多条意见的语义 3. 生成连贯的总结性描述 **推荐方案**:必须使用LLM --- ### 类型E:表格数据(7个要素)⚠️ NER部分覆盖 | 要素 | actionType | 内容 | 提取难度 | |------|-----------|------|----------| | +SPSRRReviewProject | table_extract | 复审项目列表 | ⭐⭐⭐ 中 | | +SPSRRReviewer | table_extract | 复审人员列表 | ⭐⭐⭐ 中 | | +target_responsibility | table_extract | 目标职责详情表 | ⭐⭐⭐⭐ 高 | | +institutionalized_management | table_extract | 制度化管理详情表 | ⭐⭐⭐⭐ 高 | | +review_status | table_extract | 现场复审情况总览表 | ⭐⭐⭐⭐ 高 | | +review_result | table_extract | 复审结果表 | ⭐⭐⭐⭐ 高 | | +SPSRRSuggestion | table_extract | 整改建议表 | ⭐⭐⭐⭐ 高 | **NER能力**:⚠️ 30% 覆盖 **问题**: - 简单表格(如人员列表)可以用规则提取 - 复杂表格需要理解表头、合并单元格、计算汇总等 **推荐方案**: - 简单表格:文档解析器 + 规则提取 - 复杂表格:LLM结构化提取 --- ## 二、覆盖能力总结 ### NER覆盖情况 | 类型 | 要素数 | NER覆盖率 | 适用场景 | |------|--------|-----------|----------| | A. 简单结构化 | 6 | ✅ 100% | 日期、数值、编号 | | B. 简单实体 | 2 | ✅ 90% | 机构名、人名 | | C. 列表拼接 | 2 | ⚠️ 50% | 需要后处理 | | D. 总结型 | 18 | ❌ 0% | 必须用LLM | | E. 表格数据 | 7 | ⚠️ 30% | 简单表格可用 | | **总计** | **35** | **~40%** | - | ### LLM覆盖情况 | 类型 | 要素数 | LLM覆盖率 | 适用场景 | |------|--------|-----------|----------| | A. 简单结构化 | 6 | ✅ 95% | 可用但成本高 | | B. 简单实体 | 2 | ✅ 95% | 可用但成本高 | | C. 列表拼接 | 2 | ✅ 90% | 适合 | | D. 总结型 | 18 | ✅ 85% | **必须用** | | E. 表格数据 | 7 | ✅ 80% | 适合 | | **总计** | **35** | **~88%** | - | **关键发现**: - NER只能覆盖约40%的要素(主要是简单提取) - LLM可以覆盖约88%的要素(但成本较高) - **18个总结型要素(51%)必须使用LLM** --- ## 三、混合提取策略设计 ### 策略1:NER优先 + LLM补充(推荐) ``` ┌─────────────────────────────────────────┐ │ 文档解析(OCR/PDF提取) │ └─────────────────┬───────────────────────┘ │ ┌─────────┴─────────┐ │ │ ▼ ▼ ┌───────────────┐ ┌──────────────────┐ │ NER提取 │ │ 表格识别 │ │ (规则模式) │ │ (文档解析器) │ └───────┬───────┘ └────────┬─────────┘ │ │ │ 提取8个要素 │ 提取简单表格 │ - 日期(2) │ - 人员列表 │ - 编号(2) │ - 项目列表 │ - 得分(1) │ │ - 级别(1) │ │ - 机构(2) │ │ │ └────────┬───────────┘ │ ▼ ┌────────────────────┐ │ LLM智能提取 │ │ (DeepSeek/Qwen) │ └────────┬───────────┘ │ │ 提取27个要素 │ - 18个总结型(必须) │ - 7个复杂表格 │ - 2个列表拼接 │ ▼ ┌────────────────────┐ │ 结果合并与验证 │ └────────────────────┘ ``` **优点**: - 成本优化:简单要素用NER(免费),复杂要素用LLM - 准确率高:各取所长 - 可控性好:NER结果可预测 **缺点**: - 实现复杂度较高 - 需要维护两套提取逻辑 --- ### 策略2:全LLM提取(简单但成本高) ``` ┌─────────────────────────────────────────┐ │ 文档解析(OCR/PDF提取) │ └─────────────────┬───────────────────────┘ │ ▼ ┌────────────────────┐ │ LLM结构化提取 │ │ (一次性提取所有) │ └────────┬───────────┘ │ │ 提取35个要素 │ 使用JSON Schema约束输出 │ ▼ ┌────────────────────┐ │ 结果验证与修正 │ └────────────────────┘ ``` **优点**: - 实现简单:一个提示词搞定 - 覆盖率高:88% - 维护成本低 **缺点**: - API成本高(每个附件约0.5-2元) - 速度较慢(10-30秒/附件) - 结果不稳定(需要多次验证) --- ### 策略3:分阶段混合(最优方案)⭐ ``` 阶段1: 快速NER提取(1-2秒) ├─ 提取8个简单要素 ├─ 识别表格位置 └─ 提取关键实体(机构、人名、日期) 阶段2: 表格结构化(3-5秒) ├─ 简单表格:规则提取 └─ 复杂表格:LLM提取 阶段3: LLM总结生成(10-20秒) ├─ 定位评审代码对应的文本块(基于NER结果) ├─ 批量调用LLM总结18个要素 └─ 使用上下文窗口优化(一次调用处理多个要素) 阶段4: 结果合并与验证 ├─ 合并NER和LLM结果 ├─ 交叉验证(如日期一致性) └─ 置信度评分 ``` **优点**: - 成本最优:NER处理23%,LLM处理77% - 速度最快:并行处理 + 批量调用 - 准确率最高:多阶段验证 **缺点**: - 实现复杂度最高 - 需要精细的流程控制 --- ## 四、具体实施建议 ### 方案A:快速验证(1-2天) **目标**:验证LLM提取效果 **步骤**: 1. 选择1个真实附件(如工作方案PDF) 2. 使用DeepSeek API提取5-10个要素 3. 人工评估准确率 4. 估算成本和时间 **提示词示例**: ```python prompt = """ 请从以下工作方案中提取信息,以JSON格式返回: { "reviewObject": "评审对象全称", "reviewObjectAlias": "评审对象简称", "workStartAt": "评审开始日期(格式:yyyy年M月d日)", "workEndAt": "评审结束日期", "reviewRange": "复审范围(多个项目用顿号分隔)" } 文本: {text} 要求: 1. 严格按照JSON格式输出 2. 日期必须是yyyy年M月d日格式 3. 如果找不到某个字段,填null """ ``` **验收标准**: - 准确率 > 80% - 单次调用成本 < 0.5元 - 响应时间 < 10秒 --- ### 方案B:混合实现(1周) **目标**:实现NER + LLM混合提取 **阶段1:NER基础(2天)** - 扩展NER规则(8个简单要素) - 测试准确率 > 90% **阶段2:LLM集成(2天)** - 配置DeepSeek API - 实现18个总结型要素提取 - 设计提示词模板 **阶段3:表格提取(2天)** - 简单表格:规则提取 - 复杂表格:LLM提取 **阶段4:流程整合(1天)** - 实现分阶段提取流程 - 结果合并与验证 - 端到端测试 --- ### 方案C:纯LLM实现(3天) **目标**:快速上线,后续优化 **阶段1:提示词工程(1天)** - 设计结构化提取提示词 - 测试不同模型(DeepSeek/Qwen) - 优化JSON Schema **阶段2:API集成(1天)** - 实现LLM调用服务 - 添加重试和错误处理 - 结果解析和验证 **阶段3:测试优化(1天)** - 准确率测试 - 成本优化(批量调用) - 缓存策略 --- ## 五、成本与性能对比 ### 成本估算(基于DeepSeek API) | 方案 | NER成本 | LLM成本 | 总成本/附件 | 月成本(100附件) | |------|---------|---------|-------------|----------------| | 纯NER | ¥0 | ¥0 | ¥0 | ¥0 | | 纯LLM | ¥0 | ¥1.5 | ¥1.5 | ¥150 | | 混合方案 | ¥0 | ¥1.0 | ¥1.0 | ¥100 | **说明**: - DeepSeek价格:¥0.001/1K tokens - 平均每个附件:50K tokens输入 + 5K tokens输出 - 成本 = (50 × 0.001) + (5 × 0.002) = ¥0.06/次 - 18个总结型要素需要调用约15-20次 ### 性能对比 | 方案 | 处理时间 | 准确率 | 覆盖率 | 维护成本 | |------|----------|--------|--------|----------| | 纯NER | 1-2秒 | 95% | 40% | 高(规则维护) | | 纯LLM | 15-30秒 | 85% | 88% | 低(提示词优化) | | 混合方案 | 10-20秒 | 90% | 95% | 中(两套逻辑) | --- ## 六、最终推荐 ### 🎯 推荐方案:**分阶段混合提取(策略3)** **理由**: 1. **覆盖率最高**:95%(NER 40% + LLM 55%) 2. **成本可控**:约¥1/附件,比纯LLM节省33% 3. **准确率最优**:多阶段验证,综合准确率90%+ 4. **可扩展性强**:后续可以逐步优化NER规则,降低LLM依赖 ### 实施路径 **第一步:快速验证(本周)** - 用纯LLM方案验证5个附件 - 评估准确率和成本 - 确定可行性 **第二步:混合实现(下周)** - 实现NER基础提取(8个要素) - 集成LLM总结生成(18个要素) - 实现表格提取(7个要素) **第三步:优化迭代(后续)** - 收集错误案例 - 优化NER规则 - 优化LLM提示词 - 降低成本 --- ## 七、关键技术细节 ### LLM提示词设计原则 1. **结构化输出**:使用JSON Schema约束 2. **上下文窗口**:一次处理多个相关要素 3. **Few-shot示例**:提供2-3个标准示例 4. **明确约束**:日期格式、字数限制等 ### NER规则优化方向 1. **上下文验证**:不仅匹配模式,还验证上下文 2. **置信度计算**:基于匹配质量动态调整 3. **去重合并**:同一实体的多次出现合并 4. **边界检测**:避免过度匹配 ### 表格提取策略 1. **简单表格**:基于分隔符的规则提取 2. **复杂表格**:LLM + 表格理解模型 3. **混合验证**:规则提取 + LLM验证 --- **结论**:智报的要素提取需求中,**51%必须使用LLM**(18个总结型要素),**23%可以用NER**(8个简单要素),**26%需要混合方案**(9个表格和列表要素)。因此,**纯NER无法满足需求**,建议采用**NER + LLM混合方案**。