# 解析信息提取

先解析资料，再按照字段定义提取结构化信息，并保存结果。适合合同、票据和扫描资料的字段整理。

## 开始前准备

准备一份字段含义明确的合同、票据或扫描资料、提取字段定义和输出卷。先用单份资料验证字段，再扩大输入范围。需要直接写入数据库时，选择[信息提取进表](extraction-to-table.md)。

## 使用模板

在创建工作流页面选择“从模板开始”，搜索“解析信息提取”并载入画布。

在参数表单中填写以下必填项。

| 配置 | 用途 |
| --- | --- |
| 源文件 | 选择要提取的 PDF、扫描件、图片或文件夹 |
| 解析档位 | 决定文档解析的速度、质量和费用 |
| 提取字段定义 | JSON Schema，定义要从解析结果中提取的字段 |
| 输出位置 | 提取结果保存到 Catalog 的位置 |

保存参数后发起手动运行，系统先保存当前流程，再提交执行。

## 完整处理流程

连线表示执行顺序；各步骤通过模板配置的数据绑定取得输入。

![解析信息提取](../images/document-extraction-flow.svg)

## 定义要提取的信息

在提取字段定义中使用 JSON Schema 指定字段名、类型和说明。下例用于提取合同编号，允许没有找到编号时返回空值。

```json
{"type":"object","properties":{"contract_number":{"type":["string","null"],"description":"合同编号；找不到时返回 null"}},"required":["contract_number"]}
```

在提取指令中说明编号的判定规则，避免把订单号或文件名当作合同编号。说明中约定的空值必须与 Schema 类型一致。

| 配置 | 调整方法 |
| --- | --- |
| 解析档位 | 默认标准；扫描件或复杂表格可使用增强，先检查解析正文 |
| 提取指令 | 解释字段含义、格式及缺失信息的处理方式 |
| 版面敏感字段 | 填写需要结合页面位置区分的字段名，例如供应商和收件方 |
| 输出位置 | 选择接收提取结果的卷或目录 |

模板使用 `n_to_1`，将本次输入汇总成一份结果。多个文件同时输入时，不会自动为每个文件返回独立记录。需要逐文件结果时，应调整提取模式和后续保存绑定，参见[信息提取](../nodes/ai-processing/information-extraction.md)。

## 运行后检查

1. 查看读取结果，确认文件范围。
2. 对照原文检查解析输出，尤其是编号、日期与金额所在的段落或表格。
3. 查看提取节点的 `result`，核对字段值、类型和缺失值。
4. 检查可用的 `sources_tracking`，确认字段来源。
5. 打开输出位置，核对保存节点返回的文件。模板按 ZIP 配置保存提取文档和结果。

解析节点提供文档，提取节点生成结构化字段。解析正确但字段错误时，优先调整字段说明与提取指令；正文已经缺失时，先处理解析问题。

## 示例：提取一份合同的编号

选择一份合同，填入上述 Schema，在指令中明确使用正文中的正式合同编号。运行后将结果与原文逐字对比，再检查保存文件。多个附件属于同一合同且需要共同判断时，可放在同一次汇总提取中。

## 常见问题

| 现象 | 检查与处理 |
| --- | --- |
| 字段为空 | 检查原文是否存在该信息，以及解析结果是否保留 |
| 号码取成了其它编号 | 在字段说明中区分合同号、订单号和附件号 |
| 空值不符合 Schema | 使字段类型与缺失值约定一致 |
| 多份文件混成一条结果 | 当前模板使用汇总模式；逐文件任务需要调整模式和保存步骤 |
| 需要表格记录 | 使用[信息提取进表](extraction-to-table.md)，核对目标列结构 |

## 继续阅读

- [工作流模板](index.md)
- [运行与调试](../run-debug.md)
