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

82 lines
1.6 KiB
Markdown

# 表格字段抽取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. 表格解析失败不影响规则抽取。