使用 Co-Pilot for Automators(Co-Pilot) 来简化由 Document Automation 学习实例提取的数据的后处理。
注: 生成式 AI 模型可能会产生错误或错误地显示它们生成的信息。 建议核实人工智能模型生成内容的准确性、可靠性和完整性。
为什么会提示进行数据转换
Document Automation 从文档中提取数据后,真正的强大之处就在于能够按照您需要的方式精确地塑造这些数据。 转换、规范化和丰富提取的数据是顺理成章的后续操作,而借助 Co-Pilot for Automators,该操作前所未有的简便。
Co-Pilot 消除了数据转换中的传统复杂性。 开发人员无需浏览多个命令包、记忆内部数据结构或手动编写 Python 或 JavaScript,只需用通俗的英语描述他们想要的内容。Co-Pilot 会处理其余部分,自动从单个提示生成一个可直接运行的任务机器人。
用例
后处理任务通常分为三个复杂度层级:
| 层级 | 描述 | 示例 |
|---|---|---|
| 简单 | 基于已定义逻辑将单个字符串值转换为另一个值。 |
|
| 中等 | 多个操作,或依赖于多个字段值的逻辑。 |
|
| 复杂 | 涉及外部数据源或完全自定义逻辑的转换。 |
|
注:
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 运行)。 请参阅 将文档提取任务添加到流程自动化中。
-
获取文档数据: 使用您的变量检索完整文档数据,并将输出作为记录集存储在变量中(示例:
$DocumentData$)。注: Python 软件包不能直接对记录集对象进行操作。 下一步将记录集转换为 JSON 字符串。 -
将记录转换为 JSON 字符串: 使用字符串: 分配操作将
$DocumentData$序列化为纯 JSON 字符串。 这是 Python 将读取和修改的表示。 将结果存储在变量中(例如:$DocumentJson$)。 -
打开并应用 Python 逻辑: 打开一个 Python 会话,并将
$DocumentJson$作为输入传递。 会话包含一个函数(示例:<normalize data>),该函数应用提示中描述的转换(请参见以下示例 JSON 脚本)。结果: 结果是,该函数返回与输入相同的 JSON 结构,但字段值已更新。 将返回值存储在变量中(示例:
$UpdatedJson$)。 -
更新文档数据将
$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"
}
}
]
}
}