实际效果
1.上传一张随手拍的产品照片
2. 视觉分析格式化提取商品信息, 允许用户审核调整
3.设置生图选项
4.生成电商套图
项目开源地址
1. 核心思路与整体流程
本系统的核心思路是将“人类视觉分析师”与“专业摄影师/美工”的工作流程数字化。通过多步串联的 AI 任务,将一张普通的商品实拍图转化为一整套符合电商逻辑的营销素材。
整体流程分为以下五个核心步骤:
- 图片视觉分析(Visual Analysis):利用 Vision LLM 对输入图片进行全方位扫描,识别商品属性。
- 结构化内容提取(Content Extraction):将分析结果转化格式化标准化的 JSON 数据,包含卖点、场景、目标人群等。
- 输出格式化信息:为后续生成任务准备精确的 Prompt 组件,如材质细节、印花约束等。
- 用户交互与描述微调:(可选)允许用户在生成前修改 AI 提取的描述,确保生成的方向符合预期。
- 逐个生成专业套图(Sequential Generation):基于提取的信息,针对不同营销场景(白底、模特、卖点、场景等)生成对应的专业图片。
2. 步骤拆解与核心逻辑分析
2.1 视觉分析与内容提取
这是整个链路的“大脑”。我们不仅仅是识别图片里有什么,而是要求 AI 扮演一位“资深电商视觉分析师”。
核心逻辑:
通过构造复杂的 System Prompt,强制模型以特定的 JSON 结构输出。这保证了后续逻辑可以稳定地解析出商品的颜色、材质、版型、卖点(Selling Points)等。
关键 Prompt 片段:
在 /app/Services/AnalyzeService.php 中定义了核心提示词:
private const ANALYSIS_PROMPT_ZH = '
你是一位拥有15年以上电商经验的顶级视觉分析师和爆款文案策划师。
请仔细观察图片中的商品,按以下 JSON 格式输出分析结果,只输出 JSON,不要输出其他内容:
{
"product_name": "商品详细名称,包含品类、材质、款型等关键词",
"product_description_for_prompt": "英文描述,用于图像生成 Prompt,包含颜色/款型/印花/材质等视觉细节,50词以内",
"product_type": "服装 | 3C数码 | 家居 | 美妆 | 食品 | 其他",
"garment_position": "top | bottom | full-body | non-apparel(非服装统一填 non-apparel)",
"visual_features": ["视觉特征1", "视觉特征2"],
"selling_points": [
{"icon": "fabric|fit|design|comfort|quality|function|scene", "zh": "中文卖点标题", "en": "English title", "zh_desc": "中文说明≤15字", "en_desc": "English desc ≤12 words", "visual_keywords": ["English keyword1", "English keyword2"]}
],
"target_audience": "目标人群描述",
"target_scenes": ["使用场景1", "使用场景2"],
"product_style": "商品风格(如:法式浪漫 / 日系可爱 / 简约商务 / 运动休闲)",
"color": "精确英文色值描述(如 pure white、lavender purple)",
"material": "主要材质(若可识别)",
"style": "版型描述(宽松oversized、修身等)",
"print_design": "印花/设计描述",
"print_design_lock": "精确约束短语,要求 exact same print pattern, color and position must not change",
"product_name_zh": "中文商品名(简短版,用于文案叠加)"
}
selling_points 请提炼 3-5 条,优先级:材质 > 版型 > 设计感 > 舒适性 > 使用场景。从图片可见特征推断,不要凭空捏造。';
调用与解析:
系统调用 OpenAI (GPT-4o) 或 Claude 等视觉接口,获取原始文本后,通过 extractJson 方法进行清洗和解析:
private function extractJson(string $text): array {
// 处理 Markdown 代码块包裹的情况
$raw = trim($text);
if (strpos($raw, '```json') !== false) {
$raw = explode('```json', $raw, 2)[1];
}
// ... 解析并返回数组
return json_decode($raw, true);
}
2.2 提示词工程(Prompt Engineering)的精细化构建
生成的图片质量取决于 Prompt 的专业程度。我们采用了“乐高式”的构建方式。
质量锁(Quality Lock):
为了保证生成的图片具有专业摄影感,我们在每个 Prompt 后追加了高质量约束:
$QUALITY = "shot on Sony A7R V, 85mm f/2.0 lens, natural diffused studio lighting, authentic commercial product photography... CRITICAL: Keep the EXACT same product design, color, print...";
一致性锁(Consistency Lock):
这是电商图生成的难点。我们通过“参考图约束”和“文字锁定”来保证生成的商品不走样:
$PRODUCT_REF_LOCK = "CRITICAL HIGHEST PRIORITY: Product reference image is provided... Keep EXACT same: silhouette, print pattern, print position, all colors...";
2.3 针对性场景生成逻辑
根据不同的 typeId(如 model, lifestyle, key_features)动态构建完全不同的 Prompt 结构。
- 卖点图(Key Features):会自动设计“放大镜”效果或“标注线”效果。
- 模特图(Model Shot):会根据提取的
target_audience自动匹配模特肤色(Asian/Western)和性别。 - 多场景图(Multi-scene):会构建“3-panel collage”类似的指令,要求模型在同一张图中生成多个场景。
2.4 逐个生成与资源调度
生成任务是异步或逐个进行的,以应对接口频率限制和长耗时问题。
foreach ($types as $typeId) {
// 间隔调用,避免触发速率限制
if (!$isFirst) usleep(1500000);
// 构建特定类型的 Prompt
$prompt = $this->promptBuilder->buildPrompt($typeId, $desc, $sellingPoints, $options);
// 调用 AI 提供商生成图片
$imgBytes = $providerInstance->generate($key, $prompt, $baseUrl, $model, $refImg, $options);
// 保存并记录结果
ImageHelper::saveImage($imgBytes, $outPath);
}
3. 技术总结
本系统的成功在于将 LLM 的理解能力 与 Diffusion 模型的表现能力 进行了深度解耦与配合:
- Vision LLM 负责“审稿”,提取灵魂(特征与文案)。
- PromptBuilder 负责“编剧”,将灵魂转化为 AI 绘画能听懂的摄影语言。
- Image AI 负责“拍摄”,在严格的一致性约束下输出成片。
这种全链路自动化的方式,极大地降低了电商卖家的素材制作门槛,实现了从“拍一张样衣”到“出一套大片”的质变。