更新时间:2025-06-17 14:55:55
Python节点概述
› Python节点作用
在数据流中使用Python节点,可以通过代码完成自定义的逻辑操作,完成当前数据流已有的节点未提供的能力。
›背景
DIP有内置Python节点,如果内置不能满足用户需求,可选择Python节点上传安装。
安装Python依赖包
在数据流中运行Python节点/自定义节点时,需要安装Python依赖包。上传安装包,可执行此接口,接口信息如下:
› 配置流程管理员
接口:/api/automation/v1/admin
› 流程管理员上传安装包
/api/coderunner/v1/py-package
PUT Bearer token 需管理员身份调用
请求体(form/data)
参数名 | 类型 | 前提条件 |
file | object |
待上传的安装包 |
›制作安装包
用户环境存在无网情况,为了统一安装方法需用户手动制作安装包,安装包制作步骤分为以下几步:
- 步骤1:寻找一个有网络的服务器,执行命令 pip3 downlaod [包名] -d [任意目录]
- 步骤2:将步骤1中下载的文件打包成tar包,安装包制作完成
在数据流中使用Python节点
注意:使用Python节点,需要拥有一定的编码能力,并且了解AnyShare OpenAPI的相关调用。
- 下面给出一个在Python代码中实现调用OCR接口的示例:
from aishu_anyshare_api.api_client import ApiClient
import aishu_anyshare_api_efast as efast
from datetime import datetime
import requests
import json
import re
import base64
def main(doc_id):
client = ApiClient(verify_ssl=False)
try:
json_file = file_download(client, doc_id)
text = json_file.content
url = 'http://10.4.132.197:8507/lab/ocr/predict/general'
b64 = base64.b64encode(text).decode()
data = {'scene': 'chinese_print', 'image': b64}
res = requests.post(url, json=data).json()
texts = res['data']['json']['general_ocr_res']['texts']
return texts
except Exception as e:
return str(e)
def file_download(client: ApiClient, doc_id: str) -> requests.Response:
resp = client.efast.efast_v1_file_osdownload_post(efast.FileOsdownloadReq.from_dict({"docid":doc_id})) #
type: ignore
method, url, headers = resp.authrequest[0], resp.authrequest[1], resp.authrequest[2:]
header = {}
for val in headers:
arr = val.split(": ")
header[arr[0]] = arr[1].strip()
resp = requests.request(method, url, headers=header, verify=False) # type: ignore
return resp
- 代码说明:代码实现了获取文件的内容,交给ocr处理之后,基于ocr的处理结果json返回值,提取业务需要的数据。具体提取规则以及ocr返回的json数据格式会因为ocr的模型不同而有差异,请根据具体的业务进行调试。以上代码给出基础的实现示例代码。
- 代码原理:数据流框架内部将DIP的文档操作相关OpenAPI封装成Python sdk,可以直接调用,框架会自动处理用户token代码主函数的输入输出值都会记录在数据流的context中,在一个流程的生命周期中可以使用其值,其数据流配置如下:
说明:
1)数据流在上传文件时触发;
2)Python节点设置一个输入变量,示例为doc_id,其值为触发该流程的文件docid,在Python节点中会基于此输出变量进行操作;
3)Python节点可以设置若干的输出变量,输出变量与Python节点中的main方法的return值一一对应;
4)在 Python节点中处理数据之后,将需要在后续流程进行处理的数据作为返回值输出,在后续流程中即可使用该数据,比如设置编目和标签等。
< 上一篇:
下一篇: >