HiAPI
博客

使用指南

用于电商产品图片的 Recraft 背景移除

针对 recraft/remove-background 的真实批量运行,包含实际请求、输出以及适用于完整产品目录的脚本。

2026年11月3日
用于电商产品图片的 Recraft 背景移除

手工抠出产品背景在超过几十个 SKU 后就无法扩展。hiapi 上 Recraft 的背景移除模型把这项工作变成一次 API 调用:发送产品照片,返回一张干净的透明背景 PNG,再把它放到你的市场或店面所需的任意背景上。本文带你走一遍针对 recraft/remove-background 的真实批量运行,包括实际请求、实际输出,以及一个可以指向完整产品目录的脚本。

为什么背景移除仍然是一个真实的瓶颈

大多数产品图片流水线都差不多:摄影师或供应商发来的照片带着当时手边的任意背景——影棚无缝背景纸、仓库地面、运输托盘——必须有人先把产品分离出来,它才能放进白底列表页、生活场景合成图,或必须按品类使用特定背景色的市场模板。

一旦每周超过少量图片,在 Photoshop 里做这件事就无法扩展,而通用的“AI 背景移除”网页工具意味着要通过浏览器一张一张上传产品照片,既慢又难以自动化。基于 API 的抠图模型解决了这两个问题:单张图片处理速度快,且从脚本调用极其简单,因此能直接融入你现有的产品照片目录流水线。

recraft/remove-background 实际做什么

该模型只接受一个输入:产品照片 URL。它返回一张已移除背景并以透明区域替代的 PNG——没有提示词、没有遮罩、没有额外参数需要调整。整个请求就是:

{
  "model": "recraft/remove-background",
  "input": {
    "image_url": "https://your-cdn.example.com/products/sneaker-001.jpg"
  }
}

对目录任务来说,狭窄的输入面是一个优点:没有提示词工程步骤,同样的调用对你丢给它的每张产品照片都以同样的方式工作,这在无人值守地跑数千个 SKU 时很重要。

一次真实运行:前后对比

下面是一张通过实时 API 运行的真实产品照片,以及它返回的抠图:

右侧的棋盘格图案表示透明,而不是灰色背景——PNG 输出完全去掉了背景,因此你可以把产品合成到下游的任何东西上:纯白列表背景、品牌色块或生活场景。

保存为透明 PNG 的独立抠图如下所示:

这个文件可以直接放进列表模板、符合市场要求的白底图框,或设计工具的图层堆栈,无需再做任何遮罩工作。

直接调用

请求发送到 hiapi 的标准异步任务端点。提交任务,然后轮询直到其完成:

curl -X POST "https://api.hiapi.ai/v1/tasks" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "recraft/remove-background",
    "input": {
      "image_url": "https://your-cdn.example.com/products/sneaker-001.jpg"
    }
  }'

它会返回一个 taskId。轮询 GET https://api.hiapi.ai/v1/tasks/{taskId} 直到 status 为 success,然后立即从 output[0].url 下载 PNG——输出 URL 会过期,所以在对其进行任何其他操作之前,先把字节拉到你自己的存储中。

在整个目录上批量处理

单次抠图调用并不是有趣的部分——在整个产品目录上运行它才是。下面是一个真实的批量脚本,它把一列图片 URL 分发到线程池,等待每个任务,并返回源照片到抠图 URL 的映射:

import concurrent.futures
import os
import time
import requests

API_KEY = os.environ["HIAPI_API_KEY"]
BASE_URL = "https://api.hiapi.ai/v1/tasks"


def remove_background(image_url: str) -> str:
    resp = requests.post(
        BASE_URL,
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={"model": "recraft/remove-background", "input": {"image_url": image_url}},
        timeout=60,
    )
    resp.raise_for_status()
    task_id = resp.json()["data"]["taskId"]

    while True:
        poll = requests.get(
            f"{BASE_URL}/{task_id}",
            headers={"Authorization": f"Bearer {API_KEY}"},
            timeout=30,
        )
        task = poll.json()["data"]
        if task["status"] == "success":
            return task["output"][0]["url"]
        if task["status"] == "fail":
            raise RuntimeError(f"{image_url}: {task['error']}")
        time.sleep(3)


def batch_remove_background(image_urls, max_workers: int = 5):
    results = {}
    with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as pool:
        futures = {pool.submit(remove_background, url): url for url in image_urls}
        for future in concurrent.futures.as_completed(futures):
            url = futures[future]
            try:
                results[url] = future.result()
            except Exception as exc:
                print(f"failed: {url} -> {exc}")
    return results

max_workers=5 是目录任务合理的起始并发数——如果你的账户速率限制允许更多并行任务,可以提高它,并始终保留每张图片的 try/except,这样一个坏源照片不会拖住批次中的其余部分。每个结果 URL 一返回就立即下载到永久存储;不要假设输出 URL 稍后仍然有效。

目录规模下的成本

截至 2026-09,recraft/remove-background 在 hiapi 上的定价为每张图片 $0.01。对于 500 个 SKU、每个一张主图的目录,抠完整批只需 $5;对于每个 SKU 需要抠三个角度的目录,则是 $15。在规划大批量之前,请查看实时定价页面,因为费率可能变化。

常见问题

它需要提示词或遮罩吗? 不需要。唯一的输入是 image_url。没有需要逐图调整的内容,这正是它能在大型目录上无人值守运行的原因。

输出是什么样的? 一张背景被替换为透明区域的 PNG,尺寸与输入照片的主体取景相匹配。把它合成到你的列表模板所需的任何背景上。

我可以喂给它背景杂乱的生活场景照片,而不只是影棚照片吗? 可以——它适用于任何产品照片 URL,不只是干净的影棚布置,尽管清晰分离的主体(如大多数产品摄影中那样)能给出最干净的边缘。

一个任务有多快? 单个任务通常在几秒到一分钟内完成;上面的批量脚本每任务每 3 秒轮询一次并并行运行多个任务,所以几百张图片在单次脚本运行中就能完成。

价格会随图片分辨率变化吗? 该模型按任务收取固定费率,而非按分辨率分级。在承诺大批量运行之前,请在定价页面确认当前费率,因为公布的费率可能会变化。

下一步去哪里

直接在 recraft/remove-background 模型页面试用该模型,或者如果你还需要生成新的产品场景而不只是抠出已有照片,可以查看相关生成侧工作流使用 Qwen Image 生成电商产品图片。关于任务 API 支持的其他所有内容,快速入门文档涵盖了身份验证和完整的任务生命周期。

立即开始构建持久 AI 产物

获取 API 密钥,通过一个基于任务(task)的 API 调用图像、视频和音频模型。

阅读 API 文档