慣性聚合 高效追蹤和閱讀你感興趣的部落格、新聞、科技資訊
閱讀原文 在慣性聚合中打開

推薦訂閱源

小众软件
小众软件
博客园 - 叶小钗
有赞技术团队
有赞技术团队
大猫的无限游戏
大猫的无限游戏
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LangChain Blog
Hugging Face - Blog
Hugging Face - Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
aimingoo的专栏
aimingoo的专栏
Blog — PlanetScale
Blog — PlanetScale
爱范儿
爱范儿
T
Tailwind CSS Blog
Jina AI
Jina AI
量子位
Stack Overflow Blog
Stack Overflow Blog
人人都是产品经理
人人都是产品经理
J
Java Code Geeks
V
Visual Studio Blog
月光博客
月光博客

博客园_首页

Plist 二进制格式 第30篇文章:一个大三计科生的自白 Manim如何在数学公式中完美显示中文? Docker 部署 RocketMQ 5 并发编程核心概念辨析 C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生 CLI 是什么?为什么大厂突然集体卷命令行? 【从0到1构建一个ClaudeAgent】协作-自主Agent # linux红帽教程-手把手教学 UIImageView 设置图片不生效的原因排查 .NET生态下Native AOT兼容的Cron任务调度框架 Python 潮流周刊#147:Python 和 Ruby 的 JIT 故事 - 豌豆花下猫 可持久化线段树/主席树 学习笔记 如何实现 Claude Code 和 Codex 等 Agent CLI 的自动重试 - Newbe36524 WebSocket 连接池生产级实现:实时行情高可用与负载均衡 - Walter先生 关于代码注释的思考 MicroPython对接大模型:uopenai + 火山方舟实现文字聊天和图片理解 从词向量到大模型:NLP 技术演进浅记 LangChain使用deep agent并且加载SKILL 零成本打造专业域名邮箱:Cloudflare + Gmail 终极配置保姆级全攻略 【从0到1构建一个ClaudeAgent】协作-团队协议 - 程序员Seven 最小二乘问题详解20:无先验约束下的增量式SFM自由网平差 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里实现可靠Flash IAP的方法 AI Chat 封装, SemanticKerne.AiProvider.Unified 已发布 Windows下右键编辑js文件无法打开记事本——在注册表中使用环境变量 在后台服务中使用 Scoped 服务,为什么总是报错? H200 安装驱动并使用sglang启动模型 wireshark 抓包Trap上报告警内容 我用 AI 辅助开发了一系列小工具(2):图片压缩工具 [A Primer On MC and CC] 2.1 Memory Consistency 1 - 指令重排序和 SC 模型 Oracle数据库SCN推进技术详解与实践指南 玩转控件:封装个带图片的Label控件 Claude Code 4.7 真正该升级的不是模型,而是你的工作流 我用AI写了一个颜值拉满的桌面媒体播放器,全程没动一行代码,这就是AI编程新范式 5. WorkBuddy: 小龙虾的灵魂三件套,让你的小龙虾不只是工具 SQLite 分片方案实战:三种分片策略的深度对比 告别简陋 UI!一款基于 Fluent Design 和基于 WinUI 的开源免费、现代化的 Avalonia UI 控件库 关于二进制排列组合枚举的总结 AI开发-python-LangGraph框架(3-27-LangGraph从零实现大模型智能决策工作流) ElasticSearch主分片和副本分片概念详解 【002】HTTPS 粗解:证书、TLS 握手与对后端配置的影响 Hermes Agent 一周暴涨五万 Star,但我劝你别急着追 一个面向产品化的 Electron + Vue 3 桌面应用脚手架 明明连接的是Redis的DB0,为什么能查到DB3的数据? 【从0到1构建一个ClaudeAgent】协作-Agent团队 熟悉电子元器件之后,电子小白下一步该怎么走? MAF快速入门(23)通过C#类定义Skills .NET 高级开发 | 手写一个对象映射框架 FastAPI数据库ORM怎么选?我肝了三个Demo后,终于不再纠结了 mysqldump 参数拾遗:在遗忘与铭记之间
和AI一起搞事情#6. 如何實現AI生圖文字可編輯?
风雨中的小七 · 2026-05-27 · via 博客园_首页

最近刷到 Lxxxxt 新功能的時候,我是震驚的。它可以:

✅ 一鍵拆分圖片圖層

✅ 一鍵拆分文字元素

✅ 文字可直接編輯內容、字體、顏色、對齊方式

第一眼看上去我的反應是:

"哇塞!太厲害了!怎麼做到的!"

第二眼看上去我的反應是:

"作為一個零付費用戶,好用的功能我都要自己擁有!"

哎喲,然後就讓我看到拆分圖層後的文字,其實和原始圖片中的文字字體和顏色並不一致……

哈哈哈,再加上被同事寫PPT的思路(讓AI生圖畫色塊,再在上面疊加文本框)點亮了靈感,我就想出了下面的方案。

當然,完全不保證Lxxxxt就是這麼做的,只能說效果上有些類似。

復現的代碼已經上傳到Github:poster-text-editor

模型部分文字識別和圖像編輯使用的模型只能大家去代碼裡看了,審核不讓說,都是用的老張NLP中轉站(好處就是可以各取所長,三大巨頭每家模型都各有所長)。

但是項目需要大家自己提供Key才能使用——哈哈畢竟我只充值了30塊(老張廣告費請結算一下)~

先來看看效果對比

Lxxxxt 效果

Step 1: 用Gxxxxx2生成一個有很多文字的圖片
Step 2: 使用Lxxxxxt編輯元素,就會得到下面擁有圖層拆分的文件
圖片
Step 3: 文字部分支持內容、字體、顏色、對齊方式的調整
圖片

復現效果

有了思路做就很快了,和CC一起整了1個多小時,就有了下面的效果。

一個簡易的網站,提供:

  • 圖片上傳
  • 識別文字
  • 抹除文字
  • 文字編輯

截圖_選擇區域_20260524150032

下面是效果
圖片

實現思路拆解

Lxxxxxt 很可能並不是在“真的拆圖層”。它可能是在:
✅ 識別文字
✅ 把原文字抹掉
✅ 在前端疊加新的文字層
——一種“假圖層編輯”。

1. Bounding Box識別(找到文字在哪)

這個任務的核心其實是大家很熟悉的目標檢測任務。

關鍵看當前的多模態模型能否對文字位置進行精準識別。

需要注意的點:

這裡需要剔除一些圖片化文字。

本質上,所有無法直接用"字體 + 字號 + 顏色"直接還原的文字,是不應該出現在文字編輯任務中的。

模型選型:

測試了下,至少Gxxxxx3.0以上的模型進行Bounding Box目標檢測輸出,準確率還是很高的。

不排除指令的影響因素,但在我測試的範圍內,Gxxxx5+的效果並不如Gxxxx3。

下面是多模型的效果對比:

圖片

截圖_選擇區域_20260524165231

技術細節補充:Bounding Box座標輸出的兩種格式

這裡在頁面上增加了"縮放按鈕",因為Bounding Box的座標輸出有兩種形式:

格式 說明 需要處理
相對位置 標準化到0-1000的相對位置 需要根據圖片像素進行縮放
絕對位置 直接輸出和圖片大小一致的絕對位置 無需額外處理

不同模型,甚至不同版本的模型處理方式都不完全一致,所以需要做好兼容。

2. 補充文字Meta屬性(讓文字有樣子)

為文字補充字體+顏色+字號等相關信息。

需要承認的是,多模態模型在這些任務中有一定的侷限性,準確率並不算高。

屬性 模型推理準確率 我的方案
顏色 一般 更好的方案是使用取色器
字體 較低 需要人工調整
字號 很不準 直接根據Bounding Box的尺寸和文字數量計算得到,不讓模型推理

相關論文推薦:
最近有篇論文對多模態模型在設計領域的很多相關任務都做了評測,可以先去看看,瞭解下當前多模態模型在設計領域的邊界:不過也不用太著急——畢竟每過幾個月邊界就會大幅向前推動。

Graphic-Design-Bench: A Comprehensive Benchmark for Evaluating AI on Graphic Design Tasks

圖片

3. 抹除原圖文字(把底子擦乾淨)

使用 Gxxxxxxx2 對原始圖片中對應文字進行抹除。

為了和前面LLM識別的文字框保持一致,這裡需要傳入Bounding Box識別到的文字信息。

如果想做得更加精細:可以把文字內容和位置信息都傳入(避免圖片中不同位置存在相同內容時的誤抹除)。

4. 畫布中疊加圖片和文本框(合體!)

把抹除圖片的文字,和bounding box識別出的文本框疊加在一起,看起來就有點像是Lxxxxxt文字元素識別的效果啦

當前Demo的侷限性

這裡只是一個初步的Demo,還有一些需要額外處理的細節:

  • 超大圖片處理:對於超過生圖模型尺寸的圖片,需要進行合理的chunking再處理
  • 字體匹配優化:目前字體識別還是靠人工調整,後續可以接入字體相似度匹配模型
  • 顏色精準提取:可以用取色器替代模型推理

其他思路:跳出"圖像編輯"的思維定式

最近發現一個很有意思的點:

不僅模型有思維慣性,人也有思維慣性。

之前設計的工作模式,是"先出設計稿,然後通過PS進行修改"。

於是在針對"如何修改圖片上文字"這個任務時,我們第一時間想到的也是 "圖片編輯"任務

但是,這一定是個圖片編輯任務嗎?

哈哈,當然不一定是。

之所以要做圖片編輯,無外乎兩點:

  • 一致性:只修改需要修改的地方,並保持其他位置不變
  • 修改成本低:無需對其他內容進行重新繪製或生成

所以針對以上兩點,我們可以分別想另外兩種歪著

思路1:結構化繪圖指令(在文本階段完成文本修改)

最近測試發現,Gxxxxxx2對於結構化的繪圖指令,有很好的實現效果。

舉個之前看到很火的城市結構圖的例子:

圖片

繪圖指令如下

{
  "type": "complex urban systems atlas infographic",
  "style": "{argument name=\"color palette\" default=\"dark background with glowing blue, gold, and purple accents\"}, highly detailed technical illustration, 3D isometric cutaway",
  "header": {
    "title": "{argument name=\"chinese city name\" default=\"上海\"}城市系統剖面 {argument name=\"english city name\" default=\"SHANGHAI\"} URBAN SYSTEMS ATLAS",
    "subtitles": [
      "地表之上,是城市;地表之下,是秩序 {argument name=\"english subtitle\" default=\"Beneath the skyline lies the machine.\"}",
      "一座城市如何運轉 How a Megacity Actually Works"
    ]
  },
  "layout": {
    "top_left": "Compass rose and city map labeled '上海市域位置 SHANGHAI LOCATION'",
    "top_right": "Data table titled '城市數據 CITY DATA' with 7 rows of statistics",
    "centerpiece": {
      "description": "{argument name=\"centerpiece style\" default=\"highly detailed 3D isometric cutaway render\"} of a megacity river landscape",
      "layers": [
        "地面層 SURFACE",
        "排水層 DRAINAGE LAYER",
        "電力層 POWER LAYER",
        "通信層 COMMUNICATION LAYER",
        "軌道交通層 METRO LAYER",
        "道路隧道層 ROAD TUNNEL LAYER",
        "管廊綜合層 UTILITY CORRIDOR LAYER"
      ]
    },
    "side_panels": [
      { "id": "01", "title": "城市主骨架 URBAN SKELETON", "elements": "Map with 8 legend items" },
      { "id": "02", "title": "排水與地下水網 DRAINAGE + STORMWATER", "elements": "Cross-section diagram '典型排水剖面 DRAINAGE SECTION' with 5 legend items" },
      { "id": "03", "title": "電網與能源分配 POWER GRID + ENERGY", "elements": "Cross-section diagram '典型變電站剖面 SUBSTATION SECTION' with 6 legend items" },
      { "id": "04", "title": "通信與網絡骨幹 TELECOM + INTERNET", "elements": "Cross-section diagram '數據中心剖面 DATA CENTER SECTION' with 6 legend items" },
      { "id": "05", "title": "地鐵與地下交通 METRO + SUBSURFACE MOBILITY", "elements": "Cross-section diagram '人民廣場站剖面 PEOPLE'S SQUARE STATION' with 6 legend items" },
      { "id": "06", "title": "道路、高架與循環 ROADS + ELEVATED MOBILITY", "elements": "Cross-section diagram '南浦大橋剖面 NANPU BRIDGE SECTION' with 6 legend items" },
      { "id": "07", "title": "管廊與地下設施 UTILITY CORRIDORS + PLUMBING", "elements": "Cross-section diagram '綜合管廊 UTILITY CORRIDOR' with 8 legend items" },
      { "id": "08", "title": "城市流量與系統協同 URBAN FLOWS + COORDINATION", "elements": "Map diagram '城市運行指揮中心 CITY OPERATIONS CENTER' with 6 legend items" }
    ],
    "bottom_panels": {
      "system_logic": {
        "title": "城市系統協同邏輯 SYSTEM COORDINATION LOGIC",
        "steps": 4,
        "labels": ["感知層 SENSING LAYER", "網絡層 NETWORK LAYER", "平臺層 PLATFORM LAYER", "應用層 APPLICATION LAYER"]
      },
      "city_brain": {
        "title": "城市大腦 CITY BRAIN",
        "central_node": 1,
        "peripheral_nodes": 8
      },
      "references": {
        "depth_scale": { "title": "深度與尺度 DEPTH & SCALE REFERENCE", "icons": 5 },
        "map_scale": { "title": "比例尺 SCALE", "markers": 4 }
      }
    }
  }
}

結構化指令的核心優勢:

  • 指令本身可以完美實現文字內容和繪圖內容的隔離
  • 相對無損地呈現佈局信息
  • 所有文字層面的修改,完全可以通過修改生圖指令來實現

所以,當不需要考慮保證每次生圖完全一致,還在前期創意生圖階段時:

文本任務請在文本階段完成,何必進入圖像任務呢?

思路2:一切編輯任務都是生成任務(Image-Mask)

針對已經進入最後精修階段,不能接受圖片有大範圍變化的情況,那隻能考慮使用圖像編輯功能了。

Gxxxxxx2的圖像編輯機制:

支持上傳和圖片大小相同的遮罩層(Mask),進行圖像編輯。

需要注意:

實現本質上依舊是圖像生成任務。

所以官方已經說明:無法保證圖像編輯前後,非遮罩的位置完全不變。

不過我初步嘗試,感覺只修改局部文字,似乎對圖片影響很小。

當然肯定存在很多人眼無法觀測的變化,但太誇張的改變我也還沒試出來過。
圖片

寫在最後

這一章就聊這麼多了。

至於網傳Cxxxx可以拆分PSD文件——哈哈我也已經有思路了。

還是那句話:

當你擺脫"圖像編輯"任務的桎梏,天高海闊~

當然,進一步提高Bounding Box準確率、字體準確率,在當前模型能力下,可以進一步使用Agent來實現效果優化:

比如後面接一個多模態模型對比字體差異,給出優化建議,然後進入iteration的優化環節, 用更多token、更多校驗邏輯、更長的延時來換取更好的效果。關鍵還是看業務場景