Skip to content
 
 

Repository files navigation

DrawAI:让位图可编辑

Repository Demo Website arXiv Python License English

DrawAI 把一张位图论文图、技术图或幻灯片截图,重建成可编辑的 SVG 和 PPTX。

它会把输入图片拆成结构、文字和局部素材,再生成更容易继续编辑的矢量结果。你可以把它当成一个 CLI,也可以启动 Workbench,在浏览器里批量上传、查看进度和管理结果。

🎬 演示

drawai-workbench-demo-with-audio.mp4

🗺️ 规划

为了开源版本的稳定性,DrawAI 暂时收起了一些仍在验证中的能力。它们会在跨平台测试、依赖整理和协议确认之后逐步测试并开放。

  • 支持 Windows 系统(已支持原生部署,Mac 和 Linux 保持兼容)
  • 支持多边形和不规则 Mask
  • 支持用 GPT-Image-2 重绘素材
  • 支持更复杂的生成模式(各种图像生成 Skill 等)
  • 支持以 Skills 方式使用
  • 支持其他 Agent 和模型(已支持 codex cliclaudekimi-codeOpenClawHermesOpenHands ACP

备注:由于目前删减了 Mask 和重绘能力,对于全图复杂背景的鲁棒性有下降,目前正在火速支持中。

⚡ 快速上手

方式一:🧑‍💻 Workbench 图形化工作台

Workbench 会一起启动模型服务、后端 API 和前端页面。它更适合反复测试、批量上传、看阶段进度和检查中间结果。

uv run drawai setup local
uv run drawai workbench

浏览器打开:

http://127.0.0.1:5174/

如果要让局域网里的其他机器访问 Workbench,把服务监听到所有网卡:

uv run drawai workbench --host 0.0.0.0

然后用服务器真实 IP 访问,例如:

http://192.168.50.10:5174/

更细的远程模型服务、Workbench API 分离部署、端口和配置文件分阶段运行,统一放在运行参数文档里。

方式二:🖥️ CLI 命令行终端

最简单的单机方式,适合先确认项目能不能跑通。

uv run drawai setup local
uv run drawai run examples/demo_figure.png --local

setup local 完成后会自动执行一次 doctor 检查。

换成自己的图片:

uv run drawai run /path/to/your/image.png --local --run-name my_first_drawai_run

如果你想用 GPU 或 Apple Silicon MPS,可以在 setup 和 run 时使用同一个设备配置:

uv run drawai setup local --device gpu
uv run drawai run /path/to/your/image.png --local --device gpu
uv run drawai setup local --device mps
uv run drawai run /path/to/your/image.png --local --device mps

🧰 运行前需要准备什么

  • Python 3.12+
  • uv
  • Node.js 20.19+ 或 22.12+,仅 Workbench 前端需要
  • 可用的 Codex/OpenAI 认证,或已登录/配置的 Agent CLI/ACP Agent,例如 Kimi(kimi)、Claude(claude)、Codex(codex exec)、OpenClaw(openclaw agent)、Hermes(hermes chat)或 OpenHands(openhands acp),用于 run0 资产分析和 SVG 生成阶段
  • 8GB 磁盘空间以保存模型和安装环境

模型和运行时默认放在:

.local/drawai_runtime/

它不会被提交到 git。模型下载默认走 ModelScope;如果你希望用 Hugging Face、手动模型目录、不同 Torch 后端或自定义端口,请看运行参数文档

选择 Codex SDK、Agent CLI 或 ACP Agent

默认配置继续使用 Codex Python SDK。要改用直接 CLI,把配置中的 SVG backend 和 runtime provider 切到 agent_cli,再在 model_runtime.cli 里选择 kimiclaudecodexopenclawhermes 或自定义命令:

svg:
  generation_backend: agent_cli
model_runtime:
  provider: agent-cli
  connection_id: kimi
  cli:
    agent: kimi
    command:
      - kimi

Agent CLI 路径会同时用于 run0 资产分析和 SVG 生成;继续使用 Codex SDK 时无需改动默认配置。Claude/Codex/OpenClaw/Hermes CLI 只需要把 agentcommand 换成对应命令,例如 claudecodex execopenclaw agenthermes chat

OpenHands 通过 ACP 的 JSON-RPC stdio 协议接入。安装并完成 OpenHands 自己的 ChatGPT 订阅授权后,可使用内置 openhands preset;默认命令为 openhands acp --always-approve

svg:
  generation_backend: acp_agent
model_runtime:
  provider: acp-agent
  connection_id: openhands
  acp:
    agent: openhands

OpenHands 使用 ~/.openhands 中的独立 OAuth 凭据,不应复制 ~/.codex/auth.json。当前已验证的安装、授权与兼容版本命令见运行参数文档

📦 输出结果在哪里

CLI 默认写到:

runs/<date>/<time>_<run-name>/

你最常看的文件通常是:

reports/run_summary.json
outputs/case_001_*/
  reports/pipeline_summary.json
  drawai_package.json
  elements/E001/element.json
  elements/E001/asset_package.json
  reports/svg_validation_report.json
  reports/svg_to_ppt_export_report.json
  svg/semantic.svg
  svg/rendered.png
  exports/

drawai_package.json 是运行级索引,elements/<element_id>/asset_package.json 是元素级素材包。Workbench 会保留旧版本结果的展示和下载入口;这类历史结果不会再进入 asset processcomposeexport 的二次处理链路。

Workbench 的任务和上传文件默认写到:

.local/workbench/

💬 联系我们

欢迎通过 GitHub Issue 反馈问题,也欢迎直接提交 PR。想参与测试或了解最新进展,也可以扫码加入 DrawAI 微信群。

DrawAI 微信群二维码

🧩 结果是什么形态

DrawAI 的目标不是把原图简单塞进 PPT,而是尽量生成可编辑、可检查、可继续加工的结果:

  • package:完整运行数据包,记录元素、素材、处理结果和导出状态
  • svg:主要可编辑矢量结果
  • pptx:可直接进入幻灯片流程的导出结果
  • psd:TODO

当前 PPTX 导出固定使用内置 native-shape converter,将 SVG primitives、文本和局部图片转成 PowerPoint 原生 DrawingML 形状和图片;不再提供 SVG 嵌入或外部转换器切换。

📚 更多文档

❓ FAQ

Q:出现 Refresh Codex login or set a working OPENAI_API_KEY before SVG generation. 怎么办?

A:重新登录 Codex 再进行 setup:

codex login

🙏 致谢

DrawAI 的设计和实现参考了这些开源项目的思路与实践:

⚖️ 协议和商用

DrawAI 源码以 Apache-2.0 发布,源码层面允许商用、修改和再分发。

第三方模型、模型权重、字体和外部服务分别遵循各自许可证。

About

Make raster image ediatble. 将生成图像(如GPT-Image-2或Nano Banana)或截图变为可编辑的格式,实现高质量PPT、论文图直出。

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages