GPT Image 2.5 Flare & Sunburst が EvoLink で利用可能にGPT Image 2.5 を試す
本文へ移動
青い物体とコーラル色のアクセントを持つアイボリーのデザインが透明な板に分かれる概念図
チュートリアル

Seedream 5.5 レイヤー分解後の再構成と文字編集

Seedream 5.5 の PNG レイヤーを矩形と重なり順で再構成し、取得した OCR を編集可能な文字に変換。広告や別言語版を作る前の確認方法も解説します。

JessieCOO
19 分

Seedream 5.5 のレイヤー分解は、ベース画像、透過 PNG レイヤー、配置メタデータを返します。編集可能なデザインにするには、アプリ側で各レイヤーをリサイズして配置し、重なり順を維持し、取得できた OCR からテキストオブジェクトを作る必要があります。PNG のダウンロードは、その作業の始まりです。

この記事は、EvoLink で広告バリエーション、多言語ポスター、デザイン編集ツールを開発するエンジニア向けです。2026年11月13日に確認したルートのドキュメントに基づきます。図は出典を明記した BytePlus 公式サンプルと説明用の模式図であり、EvoLink API の実測結果ではありません。再利用する切り抜き画像が1枚あればよい場合は、透過 PNG ガイドをご覧ください。

何を編集できる状態にするか決める

承認済みのポスターと、具体的な変更を1つ用意します。商品を動かすのか、見出しを差し替えるのか、別言語版を作るのかによって、必要な成果物は変わります。

成果物変更できるものアプリ側で必要な作業
透過 PNG 1枚画像全体の位置合成と書き出し
ベース画像と PNG レイヤー分離した要素の位置と表示拡大縮小、配置、重なり順、確認
レイヤーとリッチテキスト OCR認識した文字と近似スタイルネイティブなテキストオブジェクト、フォント対応、組版、保存
レイヤー分解は、PSD の直接出力でも、元の制作ファイルの復元でもありません。複数の物体が同じレイヤーに入ることも、文字がラスタ画像のまま残ることもあります。ワークフローを実装する前に、変更したい要素が個別に分離されているか確認してください。モデル選択の説明では、通常生成と Layerize の使い分けを整理しています。

必要な要素をリクエストする

EvoLink では doubao-seedream-5.5-layerize に、アクセス可能な PNG または JPEG を必ず1枚だけ渡します。通常生成とは入力条件が異なるため、複数参照画像の設定をそのまま使わないでください。API キーはサーバー側で保持します。
最初に要素を確認するときは、任意の prompt を省略し、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 の n は2〜100で、実際の出力はそれより少ないことがあります。解像度は quality: auto、1K、1.5K、2K で指定し、16:9 などの比率は使いません。
返されたタスクの id を保存し、GET /v1/tasks/{task_id} で完了を確認するか、失敗を処理します。配列の長さを固定せず、実際の result_data を読み取ります。ルートの仕様では、1レイヤーでも失敗するとリクエスト全体が失敗し、返金されます。結果リンクの有効期間は24時間なので、完了したファイルは速やかに保存してください。全仕様はLayerize API ドキュメントにあります。

Seedream 5.5 の PNG レイヤーを再構成する

ベース画像は z_index: 0 で、値が大きいレイヤーほど上に重なります。配置は bounding_box から求め、座標の基準は出力されたベース画像です。入力ポスターやレイヤーファイル自体の座標系に置き換えてはいけません。
BytePlus 公式ポスター、ベース画像、再構成した合成画像
BytePlus 公式ポスター、ベース画像、再構成した合成画像
BytePlus Seedream 5.5 公式サンプルの入力が左、ベース画像が中央、提供 PNG をローカルで合成した画像が右です。表示用に縮小しています。公式サンプルのファイル合成であり、EvoLink の生成テストやピクセル単位の完全復元を示すものではありません。
[left, top, right, bottom] の表示幅は right - left、高さは bottom - top です。この矩形にレイヤーをリサイズしてから、(left, top) に配置します。後ろの2値を幅と高さと解釈したり、ダウンロードしたファイルをすべて原寸で貼ったりしないでください。
例えば公式サンプルの登壇者情報レイヤーは1166×899のファイルですが、ベース上の矩形は [1142, 528, 1474, 784]、つまり332×256ピクセルです。ファイル寸法だけでは配置を再現できない理由が分かります。この数値は公開サンプルの属性であり、他の出力寸法を保証しません。
次のローカルマニフェストはアプリ用の変換形式で、API レスポンスではありません。ダウンロード後、ベースと各レイヤーのファイル、矩形、z_index をこの形式に対応付けます。座標は説明用なので、自分の結果のメタデータに置き換えてください。
タスク仕様の results が画像 URL、Layerize の説明にある result_data が配置や OCR を扱います。完全な応答とファイルを保存し、両者の対応を確認してからマニフェストを作ります。ベースは推測した名前ではなく z_index: 0 で識別します。現在の応答仕様に明記されていない限り、配列の添字で2つの情報を結び付けないでください。不明なら実際のタスク仕様を確認します。本ガイドは 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")
信頼できる矩形がない、順序が重複する、座標が無効といった場合は処理を止めて確認します。黙って原点に配置しないでください。拡大縮小と合成では PNG のアルファを保ち、アルファと輪郭の確認方法で縁の色にじみや細い構造を点検します。

OCR から編集可能な文字を作る

整った文字のレイヤーでは、text_recognition に全文、lines、各行の bounding_box、スタイル付きの runs が含まれることがあります。公式ガイドでは行の矩形もベース画像座標です。親レイヤーの位置をもう一度加算しないでください。
認識した文字を出発点として、内容と読み順を確認します。similar_font_family を利用可能で使用許諾のあるフォントに対応付け、foreground_color とエディターが対応するスタイル属性を反映します。フォントと属性は推定です。装飾文字や手書き文字には OCR がないことがあるため、手作業での再構築か画像レイヤーの維持を選びます。

画像の文字をネイティブな文字に置き換えるときは、対応するラスタ文字を非表示にし、新旧が重ならないようにします。複数行を含むレイヤーの1行だけを差し替えるなら、その行だけをマスクまたは除去し、他の行を残してください。あるいは必要な全文を再構築してから、元のラスタレイヤー全体を非表示にします。文字オブジェクト、フォント選択、レイアウトはアプリの文書として保存します。OCR データだけでは、保存済みの編集可能デザインにはなりません。

similar_font_family が unknown なら、必要な字形と使用許諾を満たす代替フォントを明示的に選び、配置を確認します。スタイルの false はモデルがその特徴を認識しなかったという意味で、原稿に存在しない証明ではありません。正確なデザイン属性ではなく認識の手掛かりとして扱います。

デザインを歪めずに別形式へ展開する

ベース画像座標と別レイアウトの模式図
ベース画像座標と別レイアウトの模式図
座標の模式図で、モデル出力ではありません。等比拡大縮小は相対位置を保ちますが、縦横比の変更にはレイアウトの判断が必要です。
縦横比を変えない場合は、全体に共通の倍率を適用します。正規化矩形では両方の角について x = normalized_x × target_width / 1000、y = normalized_y × target_height / 1000 を計算します。絶対矩形なら、実際の出力ベース画像の寸法を基準に換算します。全工程で一貫した座標変換を使ってください。

正方形のポスターを縦長広告にするには、座標を掛け算するだけでは不十分です。余白を付けて収めるのか、切り抜くのか、要素を並べ直すのかを選びます。縦横を別々に伸縮すると商品や文字が歪むことがあります。物体を動かすと再構築された背景の不備が見える場合もあるため、新しく露出した領域を点検してください。元々隠れていた実景が復元されたとは限りません。

別言語版では、まず見出しを1つ置き換えます。字形の対応、改行、テキスト枠の高さ、視覚的な優先順位、前景との重なりを確認します。元の状態と編集状態は別に保存し、比較できるようにしてください。翻訳や組み直しはアプリの仕事であり、OCR が返るだけで自動的に完了しません。

バリエーションを増やす前に確認する

症状最初の確認点次の対応
レイヤーが大きすぎる、位置がずれる矩形の解釈、ベース寸法、ファイルを矩形に合わせてリサイズ再リクエストの前に合成の変換を修正
重なり方が違うz_index の昇順と表示状態意図した順序に戻す
文字が二重、行が消えるラスタ文字の表示と置換範囲各行の表現を1つに整理
OCR がない、スタイルが不正確整った文字か、どの OCR フィールドがあるか手作業で再構築するかラスタを残す

変更前に再構成した元の画面を確認し、変更後は納品サイズで点検します。商品の同一性、輪郭、背景の補完、遮蔽、文章、最終書き出しを確認してください。座標が正しくても、ピクセル単位の復元やデザイン品質が保証されるわけではありません。

予算は実際の出力画像を基準に考えます。EvoLink は入力1枚と n 枚の2K出力相当を予約し、実際の出力数と各画像のピクセル区分で精算すると説明しています。大きな上限は多くの残高を予約しますが、変更に必要とは限りません。料金は既存の価格セクションで確認し、このガイドでは別の料金表を設けません。
次のタスクには Seedream 5.5 Layerize を開いてください。EvoLink ではモデル選択、キー、残高、非同期タスクを同じ接続で扱えます。合成、編集可能な文書、確認工程はアプリが担当します。

よくある質問

Seedream 5.5 は PSD を返しますか?

EvoLink のルート仕様は画像とメタデータの出力で、ネイティブ PSD ではありません。文書はエディターや書き出し機能で作成します。

n: 30 は前景レイヤーが30枚という意味ですか?

いいえ。ベースを含む全出力の上限です。実際は少ないことがあるため、返された項目を読み取ります。

レイヤー PNG の原寸を使うべきですか?

配置にはベース上の矩形を使います。ファイルが矩形より大きい場合は、合成前にリサイズします。

正規化座標でも再構成できますか?

はい。0〜1000の各角を対象キャンバスの寸法へ変換します。縦横比を変更する場合は、収める、切り抜く、並べ直すといった選択も必要です。

すべての文字レイヤーに OCR がありますか?

いいえ。認識を要求したうえで text_recognition の有無を確認します。整った文字が対象で、装飾文字や手書きには手作業が必要な場合があります。

OCR は元のフォントを正確に特定しますか?

いいえ。similar_font_family は近似であり、同一性やライセンスの証明ではありません。利用可能なフォントを選び、結果を確認します。

位置が合わないときは再生成すべきですか?

まず順序、矩形の解釈、倍率を確認します。合成ミスならローカルで直せます。画像内容が不足したり使えなかったりする場合は、編集や再分解が必要になることがあります。

いいえ。公式サンプルとローカル処理で仕様上の手順を説明しており、API 成功率、復元精度、速度を測定していません。

出典

統一APIでAIモデルを利用する

モデルの機能と現在の料金を比較し、APIドキュメントに沿って用途に合うモデルを組み込みましょう。