更新时间:2024-01-23 15:47:38

在工作流中使用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的模型不同而有差异,请根据具体的业务进行调试。以上代码给出基础的实现示例代码原理:工作流框架内部将AnyShare的文档操作相关OpenAPI封装成python sdk,可以直接调用,框架会自动处理用户token代码主函数的输入输出值都会记录在工作流的context中,在一个流程的生命周期中可以使用其值其工作流配置如下:

  • 说明:

工作流在上传文件时触发;

python节点设置一个输入变量,示例为doc_id,其值为触发该流程的文件docid,在python节点中会基于此输出变量进行操作;

python节点可以设置若干的输出变量,输出变量与python节点中的main方法的return值一一对应;

在python节点中处理数据之后,将需要在后续流程进行处理的数据作为返回值输出,在后续流程中即可使用该数据,比如设置编目和标签等;