跳转到主要内容

功能概述

对于已经处理完成的多图切分任务,如果发现切分后的子文件类别不正确,可以使用 修改文件类别 接口修改切分后的文件类别。
此接口用于修改多图切分任务(task_type = 2,父任务)产生的子文件的类别。需要先获取父任务的 task_id 和子任务的 crop_child_task_id

使用场景

  1. 切分类别修正:自动切分后,某些子文件的类别识别错误,需要手动修正
  2. 类别调整:业务需求变更,需要将切分后的文件重新分类

API 接口

接口地址POST /api/app-api/sip/platform/v2/file/amend_category

请求参数

参数名类型必填说明
workspace_idstring空间ID
task_idstring父任务ID(多图切分任务的ID)
crop_tasksarray多图切分任务列表,每个元素包含 crop_child_task_idcategory

crop_tasks 参数说明

参数名类型必填说明
crop_child_task_idstring多图切分子任务ID
categorystring子任务文件类别

参数说明

  • task_id:父任务的ID(task_type = 2),可以通过 file/fetch 接口获取
  • crop_child_task_id:子任务的ID(task_type = 3),可以从 child_files 中获取
  • category:新文件类别名称,必须是已在 DocFlow 空间配置过的文件类别

示例代码

curl -X POST \
  -H "x-ti-app-id: <your-app-id>" \
  -H "x-ti-secret-code: <your-secret-code>" \
  -H "Content-Type: application/json" \
  -d '{
    "workspace_id": "1234567890",
    "task_id": "1234567890",
    "crop_tasks": [
      {
        "crop_child_task_id": "1981692246135111680",
        "category": "电子发票(普通发票)"
      },
      {
        "crop_child_task_id": "1981692246135111681",
        "category": "火车票"
      }
    ]
  }' \
  "https://docflow.textin.com/api/app-api/sip/platform/v2/file/amend_category"

获取父任务ID和子文件信息

在修改文件类别之前,需要先获取父任务的 task_id 和子文件的 crop_child_task_id。可以通过 file/fetch 接口查询:
curl \
  -H "x-ti-app-id: <your-app-id>" \
  -H "x-ti-secret-code: <your-secret-code>" \
  "https://docflow.textin.com/api/app-api/sip/platform/v2/file/fetch?workspace_id=<your-workspace-id>&file_id=<your-file-id>"

返回结果

成功修改文件类别后,接口会返回成功响应:
{
  "code": 200,
  "msg": "success"
}

完整示例

以下是一个完整的示例,展示如何查询多图切分任务信息,然后修改子文件的类别:
Python
import requests
import json

def get_crop_task_info(workspace_id, file_id, app_id, secret_code):
    """获取多图切分任务信息"""
    url = "https://docflow.textin.com/api/app-api/sip/platform/v2/file/fetch"
    headers = {
        "x-ti-app-id": app_id,
        "x-ti-secret-code": secret_code
    }
    params = {"workspace_id": workspace_id, "file_id": file_id}
    response = requests.get(url, headers=headers, params=params)
    return response.json()

def amend_crop_category(workspace_id, task_id, crop_tasks, app_id, secret_code):
    """修改多图切分任务的类别"""
    url = "https://docflow.textin.com/api/app-api/sip/platform/v2/file/amend_category"
    headers = {
        "x-ti-app-id": app_id,
        "x-ti-secret-code": secret_code,
        "Content-Type": "application/json"
    }
    payload = {
        "workspace_id": workspace_id,
        "task_id": task_id,
        "crop_tasks": crop_tasks
    }
    response = requests.post(url, headers=headers, json=payload)
    return response.json()

# 使用示例
WORKSPACE_ID = "1234567890"
FILE_ID = "202412190001"
APP_ID = "<your-app-id>"
SECRET_CODE = "<your-secret-code>"

# 1. 获取多图切分任务信息
file_info = get_crop_task_info(WORKSPACE_ID, FILE_ID, APP_ID, SECRET_CODE)
files = file_info.get("result", {}).get("files", [])
if files:
    file_data = files[0]
    parent_task_id = file_data.get("task_id")
    task_type = file_data.get("task_type")
    child_files = file_data.get("child_files", [])
    
    # 确认是多图切分父任务(task_type = 2)
    if task_type == 2:
        print(f"父任务ID: {parent_task_id}")
        print("当前子文件信息:")
        
        # 构建 crop_tasks 参数
        crop_tasks = []
        for child in child_files:
            if child.get("task_type") == 3:  # 多图切分产生的子文件
                crop_child_task_id = child.get("task_id")
                current_category = child.get("category")
                child_name = child.get("name")
                
                print(f"  - 子任务ID: {crop_child_task_id}")
                print(f"    文件名: {child_name}")
                print(f"    当前类别: {current_category}")
                
                # 示例:修改所有子文件的类别
                # 这里可以根据实际需求修改,例如根据文件名或其他条件判断
                crop_tasks.append({
                    "crop_child_task_id": crop_child_task_id,
                    "category": "电子发票(普通发票)"  # 新的类别,可以根据实际需求修改
                })
        
        # 2. 修改文件类别
        if crop_tasks:
            result = amend_crop_category(WORKSPACE_ID, parent_task_id, crop_tasks, APP_ID, SECRET_CODE)
            print(f"修改结果: {json.dumps(result, indent=2, ensure_ascii=False)}")
    else:
        print(f"该任务不是多图切分父任务(task_type={task_type})")

子任务ID说明

  • crop_child_task_id 是子任务的 task_id,可以从 file/fetch 接口返回的 child_files 中获取
  • 每个多图切分产生的子文件都有唯一的 task_id
  • 子文件的 task_type3,表示多图切分产生的子文件

注意事项

  1. 任务类型限制:只有多图切分父任务(task_type = 2)才支持使用 crop_tasks 参数
  2. 类别必须存在:指定的 category 必须在 DocFlow 空间中已经配置过,否则会返回错误
  3. 类别名称匹配:类别名称必须与配置时完全一致(区分大小写)
  4. 子任务ID必须有效:确保 crop_child_task_id 是有效的子任务ID
  5. 修改后重新处理:修改文件类别后,系统会根据新的类别重新进行数据处理