文档数据转换提示 - 使用 Co-Pilot for Automators ( Co-Pilot ) 来简化由 Document Automation 学习实例提取的数据的后处理。

Automation 360

使用 Co-Pilot for Automators(Co-Pilot) 来简化由 Document Automation 学习实例提取的数据的后处理。

注: 生成式 AI 模型可能会产生错误或错误地显示它们生成的信息。 建议核实人工智能模型生成内容的准确性、可靠性和完整性。

为什么会提示进行数据转换

Document Automation 从文档中提取数据后,真正的强大之处就在于能够按照您需要的方式精确地塑造这些数据。 转换、规范化和丰富提取的数据是顺理成章的后续操作,而借助 Co-Pilot for Automators,该操作前所未有的简便。

Co-Pilot 消除了数据转换中的传统复杂性。 开发人员无需浏览多个命令包、记忆内部数据结构或手动编写 Python 或 JavaScript,只需用通俗的英语描述他们想要的内容。Co-Pilot 会处理其余部分,自动从单个提示生成一个可直接运行的任务机器人。

用例

后处理任务通常分为三个复杂度层级:
层级 描述 示例
简单 基于已定义逻辑将单个字符串值转换为另一个值。
  • 将“11,435.0000”转换为“11,435.00”
  • 将“(1,500.00)”转换为“-1,500.00”
中等 多个操作,或依赖于多个字段值的逻辑。
  • 将多种格式中的负数(括号、尾随减号、CR 后缀)规范化为标准形式
  • 使用来自另一个字段的年份转换部分日期: 10/SEP 转换为 09/10/2024
  • 删除表中的重复行
复杂 涉及外部数据源或完全自定义逻辑的转换。
  • 使用 Vendor_ID、Vendor_Name、Street、City、State、ZIP 列,将模糊匹配提取的 VendorName 和 VendorAddress 与 CSV 文件进行比对
注: Co-Pilot 旨在提供 Python 代码以解决简单和中等复杂的工单。 对于复杂工单,它提供了一个可供开发人员通过自定义 Python 逻辑扩展的工作脚手架。

提示模板

首先,使用 /doc-extract 启用该技能。 调用 Co-Pilot for Automators 时使用以下模板。 仅需通俗易懂的英文指令。

Get fields: [<field name>, <field name>, ...]
Transformation description: <describe the transformation in plain English>
Example: [optional — provide a before/after example if helpful]
Update fields: [<field name>, <field name>, ...]

示例提示

使用以下示例输入您自己的数据以进行转换。

/doc-extract
Get fields: [Total Amount]
Tranformation description: If the field has 4 decimal digits, round it to 2 decimal digits.
Example: "11,435.0000" → "11,435.00"
Update fields: [Total Amount]
下图展示了创建的任务,以及根据示例提示呈现的操作。
来自提示的结果任务示例。

构建任务机器人

以下是任务机器人 Co-Pilot 根据以下操作顺序生成的参考内容。 此任务机器人旨在与您的源文档一起在父进程中使用(通过 Document Automation 运行)。 请参阅 将文档提取任务添加到流程自动化中。
注: 作为先决条件,您应该已经在文档上运行提取数据操作,以将数据存储在一个记录变量中。 此转换中的主要输出(记录集变量)会传递到以下步骤。 请参阅 提取数据 操作。
  1. 获取文档数据: 使用您的变量检索完整文档数据,并将输出作为记录集存储在变量中(示例:$DocumentData$)。
    注: Python 软件包不能直接对记录集对象进行操作。 下一步将记录集转换为 JSON 字符串。
  2. 将记录转换为 JSON 字符串: 使用字符串: 分配操作将 $DocumentData$ 序列化为纯 JSON 字符串。 这是 Python 将读取和修改的表示。 将结果存储在变量中(例如:$DocumentJson$)。
  3. 打开并应用 Python 逻辑: 打开一个 Python 会话,并将 $DocumentJson$ 作为输入传递。 会话包含一个函数(示例:<normalize data>),该函数应用提示中描述的转换(请参见以下示例 JSON 脚本)。

    结果: 结果是,该函数返回与输入相同的 JSON 结构,但字段值已更新。 将返回值存储在变量中(示例:$UpdatedJson$)。

  4. 更新文档数据将 $UpdatedJson$ 传递给“更新数据”操作,以转换值并发送回服务器。
    注: 确保输出(例如:$UpdateOutput$)配置为输出变量,以携带文档状态,以便父流程确定是否应将文档路由到验证队列。
变量 用途
$DocumentData$ 来自“获取文档数据”操作的记录集输出。
$DocumentJson$ 从 DocumentData 序列化的 JSON 字符串;传递给 Python。
$UpdatedJson$ 从 Python 返回的包含已转换字段值的 JSON 字符串。
$UpdateOutput$ 来自“更新数据”操作的状态结果;在流程级别用作输出变量。

任务的端到端流程

完整序列,从先决条件中的文档数据开始。

# 操作 输出变量
1 文档提取: 提取数据 文档 ID
2 文档提取: 获取文档数据 DocumentData(记录集)
3 字符串: 分配 DocumentJson(字符串)
4 Python 脚本: 打开(自定义逻辑)和 Python 脚本: 执行函数 <normalize data> UpdatedJson(字符串)
5 文档提取: 更新文档数据 UpdateOutput(输出变量)

JSON 参考

$DocumentJson$ 变量保存完整的文档记录,格式为 JSON 对象。 Python 函数接收此对象,对相关字段应用所请求的转换,并返回包含更新值的相同结构。 字段名称和整体架构必须保持不变。

使用指南
  • 使用提供的提示模板。 偏离四行结构可能会产生不完整的输出。
  • 保持提示中的字段名称与文档提取输出中显示的字段名称一致。
  • 对于中等及更复杂的任务,请在提示中包含一个示例,以减少歧义。
  • 对于复杂任务,请仔细检查生成的脚手架。 在运行之前,更新 Python 脚本以集成您的外部数据源(CSV、数据库、API)。
  • $UpdateOutput$ 必须始终是流程级的输出变量。 请勿丢弃。
使用示例 JSON 来理解在编写或审查 Python 转换逻辑时所需的预期架构。
{
	"pages": [
		{
			"width": 1700,
			"height": 2200
		}
	],
	"fields": {
		"VendorID": {
			"value": "10001",
			"bounds": "0,0,0,0"
		},
		"vendor_name": {
			"value": "",
			"bounds": "0,0,0,0"
		},
		"invoice_number": {
			"value": "10280",
			"bounds": "1446,444,72,20"
		}
	},
	"tables": {
		"table": [
			{
				"quantity": {
					"value": "1",
					"bounds": "188,783,13,17"
				},
				"total_price": {
					"value": "22.00",
					"bounds": "1506,784,69,18"
				},
			},
			{
				"quantity": {
					"value": "1",
					"bounds": "188,819,13,17"
				},
				"total_price": {
					"value": "36.75",
					"bounds": "1508,817,65,20"
				}
			}
		]
	}
}