test-asdasdasd — 测试-asdasdasd
v1.0.0结构化字段抽取工具 - 基于用户定义的schema从文档中抽取结构化字段。schema定义要抽取的字段及其语义描述,支持文本、表格、段落三种类型的字段抽取。 (No change needed, the text is already in Chinese)
运行时依赖
安装命令
点击复制技能文档
结构化字段抽取工具 (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 负责: 理解用户的抽取需求 将需求转换为符合格式的 schema 定义 调用此工具执行抽取
Schema 构造原则 keyName: 字段的标识名称,应简洁明了 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": [...] } }
完整调用流程示例 调用 extract_structured_data: 输入: /path/to/document.pdf, schema={...} 返回: {"taskId": "202603251633-abc123", "taskType": "extraction", "message": "字段抽取任务已创建"} 查询结果: 输入: 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": "输出纯数字,且取绝对值。必须带上单位。若项目值单位是百万元,需要