
Seedream 5.5 图层拆分后,如何重组画面与修改文字
按位置框和叠放顺序重组 Seedream 5.5 PNG 图层,将可用 OCR 转为可编辑文字,并在制作广告或语言变体前检查排版与交付。
文章目录
Seedream 5.5 图层拆分返回底图、透明 PNG 图层和位置元数据。要把这些结果变成可编辑设计,应用还需要缩放并定位图层、保留叠放顺序,并根据可用的 OCR 创建文字对象。下载 PNG 只是这项工作的起点。
先确定哪些内容需要保持可编辑
从一张已确认的海报和一个具体修改开始:移动商品、替换标题,或制作另一种语言的版本。修改任务决定了你需要什么交付物。
| 交付物 | 可以改什么 | 应用还要完成什么 |
|---|---|---|
| 一张透明 PNG | 整张图片的位置 | 构图与导出 |
| 底图与 PNG 图层 | 独立元素的位置和可见性 | 缩放、定位、叠放与检查 |
| 图层与富文本 OCR | 已识别文字及近似样式 | 原生文字对象、字体映射、排版与保存 |
请求工作流真正需要的元素
doubao-seedream-5.5-layerize,输入必须恰好是一张可访问的 PNG 或 JPEG。普通生成接受的输入不同,不要把多参考图设置直接带入这个路由。密钥保存在服务端。model_params.text_recognition: true 请求 OCR。需要特定元素时,采用文档支持的自然语言或 bbox 定位,不要假定所有可见物体都会独立拆出。即使请求了 OCR,也必须允许响应不包含该字段。curl -X POST https://api.evolink.ai/v1/images/generations \
-H "Authorization: Bearer $EVOLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedream-5.5-layerize",
"image_urls": ["YOUR_PUBLIC_IMAGE_URL"],
"quality": "auto",
"output_format": "png",
"n": 30,
"model_params": {"text_recognition": true}
}'YOUR_PUBLIC_IMAGE_URL 替换为服务器可访问的图片 URL。n: 30 是包含底图的输出上限,不承诺一定返回 30 张。EvoLink 接受 2 至 100 的 n,实际输出可能更少。清晰度使用 quality: auto、1K、1.5K 或 2K,不使用 16:9 这样的比例。id,通过 GET /v1/tasks/{task_id} 查询完成情况或处理失败。读取实际 result_data,不按固定数组长度处理。按路由文档,任一图层失败会导致整项请求失败并退款。完成后及时保存文件,结果链接有效期为 24 小时。完整契约见图层拆分 API 文档。重组 Seedream 5.5 拆出的 PNG 图层
z_index 为 0,更大的值叠放在上方。图层位置来自 bounding_box,坐标基准是输出底图。输入海报、输出底图和图层文件本身,不能被当作同一个坐标系统。
[left, top, right, bottom],展示宽度是 right - left,高度是 bottom - top。先把图层缩放到这个矩形,再放到 (left, top)。不要把后两个数当成宽高,也不要按每个下载文件的原尺寸直接粘贴。[1142, 528, 1474, 784],即 332×256 像素。这说明仅凭文件尺寸无法恢复排版。这是该公开样例的属性,不是对实际输出尺寸的承诺。z_index 映射为该格式。这里的坐标仅作示例,需要换成你自己结果中的元数据。results 提供图片地址,Layerize 说明中的 result_data 补充位置与 OCR。先保存完整响应并下载文件,确认文件与元数据的对应关系后再制作清单。底图按 z_index: 0 识别,不靠猜文件名。除非当前响应契约有明确规定,不要自行按数组下标拼接两组信息;对应关系不清楚时应核对实际任务文档。本文未执行 EvoLink 生成请求,只运行了本地样例文件合成。{
"base": "base.png",
"layers": [
{"file": "layer-1.png", "box": [120, 80, 420, 280], "z": 1}
]
}python -m pip install pillow 安装 Pillow。将下段保存为 reassemble.py,把 layers.json 与图片放在一起,然后运行 python reassemble.py layers.json。脚本检查本地几何和叠放信息,输出供视觉检查的预览;不会重建可编辑文字,也不能认证模型画质。import json
import sys
from pathlib import Path
from PIL import Image
manifest = Path(sys.argv[1])
data = json.loads(manifest.read_text())
root = manifest.parent
with Image.open(root / data["base"]) as image:
canvas = image.convert("RGBA")
width, height = canvas.size
layers = data["layers"]
orders = [item["z"] for item in layers]
if any(type(z) is not int or z <= 0 for z in orders):
raise ValueError("Layer order must be a positive integer")
if len(set(orders)) != len(orders):
raise ValueError("Duplicate layer order")
for item in sorted(layers, key=lambda layer: layer["z"]):
box = item["box"]
if len(box) != 4 or any(type(v) is not int for v in box):
raise ValueError("Expected four integer box coordinates")
left, top, right, bottom = box
if not (0 <= left < right <= width and 0 <= top < bottom <= height):
raise ValueError("Box outside the base image or empty")
with Image.open(root / item["file"]) as image:
layer = image.convert("RGBA").resize(
(right - left, bottom - top), Image.Resampling.LANCZOS
)
canvas.alpha_composite(layer, dest=(left, top))
canvas.save(root / "reassembled.png")将 OCR 转成可编辑文字
text_recognition 可以包含完整文本、lines、每行的 bounding_box 和带样式的 runs。官方指南也将文字行位置框定义在底图坐标中,不要再加一次父图层的位置偏移。similar_font_family 映射到可用且已获授权的字体,再应用编辑器支持的 foreground_color 与样式标记。字体和属性都是估计值。艺术字、手写字可能没有 OCR;缺失时,应转人工重建文字或保留图片图层。用原生文字替换文字图层时,隐藏对应的栅格版本,避免新旧文字重叠。如果一张栅格图层含多行,而你只替换其中一行,应只遮盖或移除该行的栅格文字,保留其余行;也可以先重建所有需要保留的文字,再隐藏整张栅格图层。将文字对象、字体选择和排版保存进应用文档,OCR 数据本身不等于已保存的可编辑设计。
similar_font_family 为 unknown 时,应明确选择覆盖所需字形且具备使用授权的回退字体,再检查排版。样式标记为 false 表示模型没有识别到该样式,不证明原图一定没有它。这些值是识别提示,不是精确设计属性。改编设计时避免拉伸

x = normalized_x × target_width / 1000、y = normalized_y × target_height / 1000。使用绝对框时,以实际输出底图尺寸换算。全流程使用一致的坐标路径。方形海报改成长版广告,不能只乘坐标。你需要选择保留留白、裁剪,还是重新安排元素。横向和纵向独立缩放可能拉伸商品与文字。移动物体也可能露出重建背景的瑕疵,应检查新露出的区域,不能假定它就是原始被遮挡场景。
制作语言变体时,先替换一个标题,检查字形覆盖、换行、文本框高度、视觉层级和前景遮挡。分开保存源状态与修改状态,便于审阅者对照。翻译和重排由应用完成,不会因返回 OCR 自动完成。
批量制作变体前先验收
| 现象 | 先检查什么 | 下一步 |
|---|---|---|
| 图层过大或位置错误 | 位置框定义、底图尺寸、文件到框的缩放 | 再请求模型前先修正合成变换 |
| 遮挡顺序错误 | 递增 z_index 与保留的可见性 | 恢复正确叠放 |
| 文字重影或缺行 | 栅格文字可见性与替换范围 | 确保每行只保留一种呈现,避免栅格字与原生字重复 |
| 无 OCR 或样式不准 | 是否规整文字及实际 OCR 字段 | 人工重建文字或保留栅格图层 |
先检查重组的源画面,再修改;修改后按交付尺寸检查商品身份、边缘、背景补全、遮挡、文字与最终导出。坐标正确,不代表像素级复原或设计已达到可用标准。
n 张 2K 输出图预留,最终根据实际生成图片及各自像素档位结算。较大上限可能多预留余额,却未必是当前修改所需。费率使用现有价格区,本文不另建价格表。常见问题
Seedream 5.5 会直接返回 PSD 吗?
EvoLink 当前路由文档描述的是图片和元数据,不是原生 PSD。设计文档需要编辑器或导出程序来创建。
n: 30 表示 30 个独立前景图层吗?
不是。它限制包含底图的全部输出图片数,实际可能更少,应读取返回项目。
应该按图层 PNG 的原尺寸放置吗?
以它在底图中的位置框为准。文件可能比该矩形更大,需要先缩放再合成。
可以使用归一化坐标重组吗?
可以,按目标画布尺寸换算 0–1000 坐标中每个角的位置。改变宽高比时,仍需明确选择适配、裁剪或重排。
每张文字图层都会包含 OCR 吗?
text_recognition 是否存在。规整文字受支持,艺术字和手写字可能需要人工处理。OCR 能认出准确的原始字体吗?
similar_font_family 是近似匹配,不证明字体身份或使用授权。应选择可用字体并检查效果。图层没对齐时应该重新生成吗?
先查叠放、位置框理解与缩放,这些合成错误可以本地修正。视觉内容缺失或不可用时,才可能需要编辑或重新拆分。
这些示例证明 EvoLink 的输出质量吗?
不证明。它们使用官方样例和本地文件操作解释文档中的工作流,没有测量 API 成功率、复原精度或速度。
来源
- BytePlus Seedream 5.5 指南:官方图层/OCR 能力和示例包,供应商字段名与 EvoLink 不同。
- EvoLink 图层拆分 API 文档:模型 ID、输入、限制、任务处理与结算。
- Pillow Image 文档:本地缩放与 Alpha 合成。


