# 表格字段抽取Skill 设计 ## 1. Skill 定位 `表格字段抽取Skill` 负责从申请表、产品列表、标准清单等表格结构中抽取字段候选值。 英文实现标识建议使用 `TableFieldExtractSkill`。 ## 2. 输入 ```python @dataclass class TableFieldExtractInput: documents: list[DocumentContent] field_definitions: list[FieldDefinition] ``` ## 3. 输出 ```python @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. 表格解析失败不影响规则抽取。