1.6 KiB
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. 适用字段
- 产品名称。
- 包装规格。
- 申请人名称。
- 分类编码。
- 生产地址。
- 标准清单。
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. 技术实现
使用技术:
python-docxpdfplumber- 表头关键词映射
- 合并单元格兼容处理
7. 异常处理
- 无表格:跳过。
- 表头无法识别:记录待复核。
- 合并单元格解析失败:记录表格失败。
- 多行多值:保留所有候选。
8. 测试要点
- 能从申请表抽取产品名称。
- 能从产品列表抽取包装规格。
- 能记录表格坐标。
- 表格解析失败不影响规则抽取。