Files
DEMO-AGENT/docs/详细设计/skill/表格字段抽取Skill.md

1.6 KiB

表格字段抽取Skill 设计

1. Skill 定位

表格字段抽取Skill 负责从申请表、产品列表、标准清单等表格结构中抽取字段候选值。

英文实现标识建议使用 TableFieldExtractSkill

2. 输入

@dataclass
class TableFieldExtractInput:
    documents: list[DocumentContent]
    field_definitions: list[FieldDefinition]

3. 输出

@dataclass
class TableFieldExtractOutput:
    candidates: list[FieldCandidate]
    failed_tables: list[dict]
    tool_calls: list[dict]

4. 适用字段

  1. 产品名称。
  2. 包装规格。
  3. 申请人名称。
  4. 分类编码。
  5. 生产地址。
  6. 标准清单。

5. 核心方法

5.1 run(input) -> TableFieldExtractOutput

主入口方法。

5.2 normalize_table(table) -> NormalizedTable

标准化表头、空单元格和合并单元格。

5.3 match_table_header(table, field_definition) -> TableMatch | None

匹配表头。

5.4 extract_cell_value(table, match) -> FieldCandidate

抽取单元格值。

5.5 build_table_source_location(table_index, row_index, col_index) -> SourceLocation

记录表格来源位置。

6. 技术实现

使用技术:

  1. python-docx
  2. pdfplumber
  3. 表头关键词映射
  4. 合并单元格兼容处理

7. 异常处理

  1. 无表格:跳过。
  2. 表头无法识别:记录待复核。
  3. 合并单元格解析失败:记录表格失败。
  4. 多行多值:保留所有候选。

8. 测试要点

  1. 能从申请表抽取产品名称。
  2. 能从产品列表抽取包装规格。
  3. 能记录表格坐标。
  4. 表格解析失败不影响规则抽取。