test-asdasdasd

Polar Sponsor
爱发电 赞助
.NET 9.0

结构化字段抽取工具 - 根据用户定义的schema从文档中抽取结构化字段,支持文本、表格、段落三种抽取类型。

结构化字段抽取工具 (extract_structured_data_from_document)

功能概述

结构化字段抽取工具 (extract_structured_data_from_document)是一项面向实际任务的技能,主要用于extract_structured_data_from_document 是一个 结构化字段抽取工具 ,根据用户定义的schema从文档中抽取结构化数据;重要提示 :此工具专注于从文档中提取结构化字段,不适用于:;

核心要点

  • 文档摘要生成;
  • 文档结构解析;
  • 如需解析文档结构,请使用 parse。

使用与执行

它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

结构化字段抽取工具 (extract_structured_data_from_document)

概述

extract_structured_data_from_document 是一个结构化字段抽取工具,根据用户定义的schema从文档中抽取结构化数据。

重要提示:此工具专注于从文档中提取结构化字段,不适用于:

  • 文档摘要生成
  • 通用问答
  • 文档结构解析

如需解析文档结构,请使用 parse_document 工具。

适用场景

  • 从PDF/Word/Excel等文档中提取结构化数据
  • 财务报表数据抽取(如营收、利润、资产负债表等)
  • 合同关键条款提取
  • 表单数据提取
  • 任何需要从非结构化文档中提取结构化信息的任务

不适用场景

  • 文档结构解析(请使用 parse_document)
  • 文档摘要或总结
  • 通用问答任务
  • 无明确抽取目标的探索性分析

输入参数

参数名 类型 必填 描述
document_url string 是 文档的URL地址,支持PDF、Word、Excel、图片等格式
schema object 是 抽取规则定义,包含要抽取的字段及语义描述

document_url 既可以是公网可访问的文件 URL,也可以是本地文件路径。 当传入本地路径时,工具会先上传到 DPA 文档里指定的文件服务,再调用字段抽取接口。

环境变量

  • DPA_ENV: sim 或 prod,默认 sim
  • DPA_BASE_URL: 可选,自定义覆盖解析服务地址
  • DPA_UPLOAD_URL: 可选,自定义覆盖文件上传地址

默认端点:

  • 仿真环境:http://imsfz.gjzq.cn:18087/ismp/yx-dpa/document
  • 仿真上传:http://imsfz.gjzq.cn:18087/ismp/yx-gw/infras/file/file/v3/upload
  • 生产环境:http://ims.gjzq.cn:18087/ismp/yx-dpa/document
  • 生产上传:http://ims.gjzq.cn:18087/ismp/yx-gw/infras/file/file/v3/upload

Schema结构

schema是一个JSON对象,支持三种字段类型:

{
  "text": [
    {
      "keyName": "字段名称",
      "keyPrompt": "字段的语义描述和抽取要求"
    }
  ],
  "table": [
    {
      "tableName": "表格名称",
      "tableDescription": "表格的描述信息",
      "tableColumn": [
        {
          "keyName": "列名称",
          "keyPrompt": "列的语义描述和抽取要求"
        }
      ]
    }
  ],
  "paragraph": [
    {
      "keyName": "段落名称",
      "keyPrompt": "段落的语义描述和抽取要求"
    }
  ]
}

关键使用规则

⚠️ 必须先构造Schema

如果用户没有提供schema,必须先根据用户需求构造schema,然后再调用此工具。

LLM负责:

  1. 理解用户的抽取需求
  2. 将需求转换为符合格式的schema定义
  3. 调用此工具执行抽取

Schema构造原则

  1. keyName: 字段的标识名称,应简洁明了
  2. keyPrompt: 字段的详细描述,包含:
    • 字段的含义
    • 数据格式要求(如"输出纯数字"、"带单位"等)
    • 来源说明(如"从合并资产负债表提取")
    • 特殊处理要求(如"取绝对值"、"单位转换"等)

输出格式

返回JSON格式的结构化抽取结果,包含:

  • 文本字段的抽取值和溯源信息
  • 表格数据的二维数组结构
  • 段落内容的完整文本
  • 每个抽取结果的来源页码和坐标信息

⚠️ 执行模式

此工具提交的是 DPA 文档规定的异步字段抽取任务:先调用 POST /parse 获取 taskId,然后轮询 GET /{taskId}/status,成功后再读取 GET /{taskId}/result。

为了便于上层调用,工具默认会在本地帮你等待完成后直接返回结果(包含 data 中的 text、table、paragraph)。

注意:默认等待超时为 60 秒。如果文档较大、60 秒内未完成,工具会返回 taskId、当前 status 和提示信息,供后续继续查询。

也可以传入 async 模式立即返回 taskId,手动查询结果。

步骤1:获取 taskId(async模式)

工具返回格式:

{
  "taskId": "202603251633-8e44b4a2",
  "taskType": "extraction",
  "message": "字段抽取任务已创建"
}

重要:请记录返回的 taskId,用于后续查询任务状态和结果。

步骤2:查询任务状态

使用 document_get_result 工具查询抽取结果:

{
  "tool": "document_get_result",
  "args": {
    "task_id": "202603251633-8e44b4a2"
  }
}

步骤3:解析结果

成功时返回的结构:

{
  "code": 200,
  "message": "检索成功,召回内容已返回。",
  "data": {
    "text": [
      {
        "keyName": "本期营业收入",
        "keyValue": "500亿元",
        "source": {
          "docUrl": "https://example.com/report.pdf",
          "pageNum": 3,
          "bbox": [100, 200, 300, 250]
        }
      }
    ],
    "table": [...],
    "paragraph": [...]
  }
}

完整调用流程示例

  1. 调用 extract_structured_data:
输入: /path/to/document.pdf, schema={...}
返回: {"taskId": "202603251633-abc123", "taskType": "extraction", "message": "字段抽取任务已创建"}
  1. 查询结果:
输入: task_id="202603251633-abc123"
返回: {"code": 200, "data": {"text": [...], "table": [...], "paragraph": [...]}}

返回字段说明

字段 类型 描述
taskId string 任务ID,用于查询任务状态
taskType string 任务类型,"extraction" 表示字段抽取任务
message string 任务状态描述
data.text array 文本字段抽取结果列表
data.table array 表格抽取结果列表
data.paragraph array 段落抽取结果列表

调用示例

示例1:用户直接给抽取需求(无schema)

用户请求:

请从这份年报中提取公司的营业收入、去年同期营业收入、本期营业费用等信息

LLM首先构造Schema:

{
  "text": [
    {
      "keyName": "本期营业收入",
      "keyPrompt": "输出纯数字,且取绝对值。必须带上单位。若项目值单位是百万元,需要转换为亿元"
    },
    {
      "keyName": "去年同期营业收入",
      "keyPrompt": "输出纯数字,且取绝对值。必须带上单位。若项目值单位是百万元,需要转换为亿元"
    },
    {
      "keyName": "本期营业费用",
      "keyPrompt": "输出纯数字,且取绝对值。必须带上单位。若项目值单位是百万元,需要转换为亿元"
    },
    {
      "keyName": "去年同期营业费用",
      "keyPrompt": "输出纯数字,且取绝对值。必须带上单位。若项目值单位是百万元,需要转换为亿元"
    }
  ],
  "table": [],
  "paragraph": []
}

然后调用工具:

{
  "tool": "extract_structured_data_from_document",
  "args": {
    "document_url": "https://example.com/annual_report_2024.pdf",
    "schema": {
      "text": [
        {
          "keyName": "本期营业收入",
          "keyPrompt": "输出纯数字,且取绝对值。必须带上单位。若项目值单位是百万元,需要转换为亿元"
        },
        {
          "keyName": "去年同期营业收入",
          "keyPrompt": "输出纯数字,且取绝对值。必须带上单位。若项目值单位是百万元,需要转换为亿元"
        },
        {
          "keyName": "本期营业费用",
          "keyPrompt": "输出纯数字,且取绝对值。必须带上单位。若项目值单位是百万元,需要转换为亿元"
        },
        {
          "keyName": "去年同期营业费用",
          "keyPrompt": "输出纯数字,且取绝对值。必须带上单位。若项目值单位是百万元,需要转换为亿元"
        }
      ],
      "table": [],
      "paragraph": []
    }
  }
}

工具返回:

{
  "text": [
    {
      "keyName": "本期营业收入",
      "keyValue": "500亿元",
      "source": {
        "docUrl": "https://example.com/annual_report_2024.pdf",
        "pageNum": 3,
        "bbox": [100, 200, 300, 250]
      }
    },
    {
      "keyName": "去年同期营业收入",
      "keyValue": "420亿元",
      "source": {
        "docUrl": "https://example.com/annual_report_2024.pdf",
        "pageNum": 3,
        "bbox": [100, 260, 300, 310]
      }
    }
  ],
  "table": [],
  "paragraph": []
}

示例2:复杂文档 - 表格数据抽取

用户请求:

从这份银行资产负债表中提取同业存放的数据,包括本期和去年年底的数值

LLM构造Schema:

{
  "text": [],
  "table": [
    {
      "tableName": "合并及银行资产负债表",
      "tableDescription": "银行合并及本身的资产负债表",
      "tableColumn": [
        {
          "keyName": "序号",
          "keyPrompt": "依据表格顺序增加序号,如1,2,3,4"
        },
        {
          "keyName": "项目",
          "keyPrompt": "仅采集下述项目:同业存放"
        },
        {
          "keyName": "项目值",
          "keyPrompt": "不同年份的项目值按照年份紧邻排列,如果某一年为空值也按空值输出,输出纯数字,且取绝对值"
        },
        {
          "keyName": "所属时期",
          "keyPrompt": "从下述选择项目所属时期:本期、去年同期、前年同期、去年年底、前年年底"
        },
        {
          "keyName": "年份",
          "keyPrompt": "项目值对应时间,包括年份、月份、日期等"
        },
        {
          "keyName": "单位",
          "keyPrompt": "项目单位,比如:亿元、百万元、元等"
        }
      ]
    }
  ],
  "paragraph": []
}

调用工具:

{
  "tool": "extract_structured_data_from_document",
  "args": {
    "document_url": "https://example.com/bank_balance_sheet.pdf",
    "schema": {
      "table": [
        {
          "tableName": "合并及银行资产负债表",
          "tableDescription": "银行合并及本身的资产负债表",
          "tableColumn": [
            {"keyName": "序号", "keyPrompt": "依据表格顺序增加序号,如1,2,3,4"},
            {"keyName": "项目", "keyPrompt": "仅采集下述项目:同业存放"},
            {"keyName": "项目值", "keyPrompt": "输出纯数字,且取绝对值"},
            {"keyName": "所属时期", "keyPrompt": "从下述选择:本期、去年同期、前年同期、去年年底"},
            {"keyName": "年份", "keyPrompt": "项目值对应时间"},
            {"keyName": "单位", "keyPrompt": "项目单位"}
          ]
        }
      ]
    }
  }
}

示例3:用户已提供Schema

用户请求:

请使用以下schema从文档中提取数据:
- 本期营业收入(单位:亿元)
- 去年同期营业收入(单位:亿元)
- 董事会制度(段落内容)

由于用户已提供schema,直接调用:

{
  "tool": "extract_structured_data_from_document",
  "args": {
    "document_url": "https://example.com/company_report.pdf",
    "schema": {
      "text": [
        {
          "keyName": "本期营业收入",
          "keyPrompt": "输出纯数字,单位亿元"
        },
        {
          "keyName": "去年同期营业收入",
          "keyPrompt": "输出纯数字,单位亿元"
        }
      ],
      "paragraph": [
        {
          "keyName": "董事会制度",
          "keyPrompt": "公司的董事会制度相关信息"
        }
      ],
      "table": []
    }
  }
}

完整Schema示例

以下是一个完整的schema示例,涵盖文本、表格和段落三种类型:

{
  "paragraph": [
    {
      "keyName": "财务会计制度、利润分配和审计",
      "keyPrompt": "公司的财务会计制度、利润分配和审计相关信息"
    },
    {
      "keyName": "董事会制度",
      "keyPrompt": "公司的董事会制度相关信息"
    }
  ],
  "text": [
    {
      "keyPrompt": "输出纯数字,且取绝对值。必须带上单位。若项目值单位是百万元,需要转换为亿元",
      "keyName": "本期营业收入"
    },
    {
      "keyPrompt": "输出纯数字,且取绝对值。必须带上单位。若项目值单位是百万元,需要转换为亿元",
      "keyName": "去年同期营业收入"
    },
    {
      "keyPrompt": "输出纯数字,且取绝对值。必须带上单位。若项目值单位是百万元,需要转换为亿元",
      "keyName": "本期营业费用"
    }
  ],
  "table": [
    {
      "tableName": "合并及银行资产负债表",
      "tableDescription": "",
      "tableColumn": [
        {
          "keyPrompt": "依据表格顺序增加序号,如1,2,3,4",
          "keyName": "序号"
        },
        {
          "keyPrompt": "仅采集下述项目:同业存放",
          "keyName": "项目"
        },
        {
          "keyPrompt": "输出纯数字,且取绝对值",
          "keyName": "项目值"
        },
        {
          "keyPrompt": "从下述选择:本期、去年同期、前年同期、去年年底",
          "keyName": "所属时期"
        },
        {
          "keyPrompt": "项目值对应时间",
          "keyName": "年份"
        },
        {
          "keyPrompt": "项目单位",
          "keyName": "单位"
        }
      ]
    }
  ]
}

工具定义

{
  "name": "extract_structured_data_from_document",
  "description": "结构化字段抽取工具 - 基于schema从文档中抽取结构化字段,支持文本、表格、段落三种类型",
  "parameters": {
    "type": "object",
    "properties": {
      "document_url": {
        "type": "string",
        "description": "文档的URL地址,支持PDF、Word、Excel、图片等格式"
      },
      "schema": {
        "type": "object",
        "description": "抽取规则定义,必须包含text、table、paragraph三个字段,每个字段都是数组",
        "properties": {
          "text": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "keyName": {"type": "string"},
                "keyPrompt": {"type": "string"}
              },
              "required": ["keyName", "keyPrompt"]
            }
          },
          "table": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "tableName": {"type": "string"},
                "tableDescription": {"type": "string"},
                "tableColumn": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "keyName": {"type": "string"},
                      "keyPrompt": {"type": "string"}
                    },
                    "required": ["keyName", "keyPrompt"]
                  }
                }
              },
              "required": ["tableName", "tableDescription", "tableColumn"]
            }
          },
          "paragraph": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "keyName": {"type": "string"},
                "keyPrompt": {"type": "string"}
              },
              "required": ["keyName", "keyPrompt"]
            }
          }
        },
        "required": ["text", "table", "paragraph"]
      }
    },
    "required": ["document_url", "schema"]
  }
}

相关专题

更多
Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

0

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

2026.10.22

0

15

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

2026.10.22

0

12

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

2026.10.22

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.9万人学习