docs(详细设计): 新增字段抽取与字段池设计
This commit is contained in:
78
docs/详细设计/skill/规则字段抽取Skill.md
Normal file
78
docs/详细设计/skill/规则字段抽取Skill.md
Normal file
@@ -0,0 +1,78 @@
|
||||
# 规则字段抽取Skill 设计
|
||||
|
||||
## 1. Skill 定位
|
||||
|
||||
`规则字段抽取Skill` 负责从标题、段落和固定标签中抽取字段候选值,适合处理格式稳定、标签明确的注册申报字段。
|
||||
|
||||
英文实现标识建议使用 `RuleFieldExtractSkill`。
|
||||
|
||||
## 2. 输入
|
||||
|
||||
```python
|
||||
@dataclass
|
||||
class RuleFieldExtractInput:
|
||||
documents: list[DocumentContent]
|
||||
field_definitions: list[FieldDefinition]
|
||||
```
|
||||
|
||||
## 3. 输出
|
||||
|
||||
```python
|
||||
@dataclass
|
||||
class RuleFieldExtractOutput:
|
||||
candidates: list[FieldCandidate]
|
||||
failed_fields: list[dict]
|
||||
tool_calls: list[dict]
|
||||
```
|
||||
|
||||
## 4. 抽取方式
|
||||
|
||||
1. 标题后取值。
|
||||
2. 标签后取值。
|
||||
3. 固定段落规则。
|
||||
4. 正则匹配。
|
||||
|
||||
## 5. 核心方法
|
||||
|
||||
### 5.1 `run(input) -> RuleFieldExtractOutput`
|
||||
|
||||
主入口方法。
|
||||
|
||||
### 5.2 `extract_by_heading(document, field_definition) -> FieldCandidate | None`
|
||||
|
||||
从标题结构中抽取。
|
||||
|
||||
### 5.3 `extract_by_label(document, field_definition) -> FieldCandidate | None`
|
||||
|
||||
从标签字段中抽取。
|
||||
|
||||
### 5.4 `extract_by_regex(document, field_definition) -> FieldCandidate | None`
|
||||
|
||||
使用字段配置中的正则规则抽取。
|
||||
|
||||
### 5.5 `build_candidate(field, value, source) -> FieldCandidate`
|
||||
|
||||
构建字段候选。
|
||||
|
||||
## 6. 技术实现
|
||||
|
||||
使用技术:
|
||||
|
||||
1. `re`
|
||||
2. 文本结构解析结果
|
||||
3. 中文标点标准化
|
||||
|
||||
## 7. 异常处理
|
||||
|
||||
1. 文本为空:跳过该文档。
|
||||
2. 多个候选:全部保留。
|
||||
3. 正则异常:记录工具失败。
|
||||
4. 候选值过长:标记待复核。
|
||||
|
||||
## 8. 测试要点
|
||||
|
||||
1. 能从标题抽取产品名称。
|
||||
2. 能从标签抽取储存条件。
|
||||
3. 多候选值全部保留。
|
||||
4. 空文本不报错。
|
||||
|
||||
Reference in New Issue
Block a user