Image to PPT
SkillDocs & knowledge将图片、PDF、图片版 PPTX 或含原生对象的混合 PPTX 转换为严格质量校验、分层可编辑的 PowerPoint;保留既有原生文字、形状、表格和图表,并支持宿主视觉 Agent 或显式安装的本地视觉 Agent。用于截图、设计稿、科研图和幻灯片页面的组件重建、残影检查与可编辑输出。
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Image to PPT skill
What this skill tells your AI
The instructions your AI receives, as published by dsy-xueai/image2editable in skills/image-to-ppt/SKILL.md and read by ahel’s review.
把输入图片重建为分层 PPTX。保持严格语义拆分;质量校验失败时停止,不要将整页 flatten 为单张图片。
环境
-
使用 Python 3.10–3.12;该范围与当前项目测试和分发契约一致。
-
安装
torch>=2.5.1、torchvision>=0.20.1、Transformers 和 SAM 2.1。运行pip install -r references/requirements.txt。 -
LaMa 由内置的本地 TorchScript adapter 调用,依赖随
references/requirements.txt中的torch>=2.5.1,<3安装。产品安装默认从已验证的 runtime receipt 解析模型;独立 skill 必须通过绝对路径设置LAMA_MODEL,且文件须匹配固定 Big-LaMa 身份。 -
若 OCR 不可用,先让用户选择:PaddleOCR(中文、英文和复杂版面识别通常更好,执行
python -m pip install "paddleocr==3.7.0" "paddlepaddle==3.3.1" "PaddleX==3.7.2" "PyYAML==6.0.2")或 Tesseract(较轻量,但还要安装系统 Tesseract,执行python -m pip install pytesseract)。未经用户确认,不要安装任何 OCR。 -
完整仓库或已安装
image2editable产品包时,OCR 就绪后先让用户确认,再依次运行image2editable models install runtime和image2editable doctor。前者下载并校验固定的 SAM、LaMa、DINO runtime receipt;取消时不得下载。 -
如果用户明确选择
local,再依次运行python -m pip install ".[agent-local]"、image2editable models install agent和image2editable doctor --agent-local;模型下载仍须先获得用户确认,仓库不包含模型权重。 -
纯 standalone 环境中,独立 skill 不假设该包存在,也不运行
image2editable doctor。开始转换前,必须把SAM2_MODEL、LAMA_MODEL和GROUNDING_DINO_MODEL设置为绝对本地路径;SAM2_MODEL、LAMA_MODEL必须指向文件,GROUNDING_DINO_MODEL必须指向目录,并运行最小只读预检:python -c "import os; from pathlib import Path; names=('SAM2_MODEL','LAMA_MODEL','GROUNDING_DINO_MODEL'); raw={name: os.environ.get(name, '') for name in names}; paths={name: Path(value) for name, value in raw.items()}; assert all(raw.values()) and all(path.is_absolute() for path in paths.values()) and paths['SAM2_MODEL'].is_file() and paths['LAMA_MODEL'].is_file() and paths['GROUNDING_DINO_MODEL'].is_dir(); print('runtime model paths: ok')" -
优先使用当前平台已正确安装的硬件加速环境;产品环境须通过
doctor,所有环境须通过下列设备预检。不要仅为 WSL 建议离开已经可用的环境:python -c "import sys, torch; print({'platform': sys.platform, 'cuda': torch.cuda.is_available(), 'rocm': torch.version.hip})" -
Windows/Linux 沿用 PyTorch 的设备接口:PyTorch 报告 CUDA 可用时使用 CUDA,ROCm 环境使用 PyTorch 提供的兼容设备接口。
-
macOS 保持当前受支持的设备选择;在完成真实 Apple Silicon 回归前,不把 MPS 自动设为新默认。
-
CPU 仍运行完整模型和相同质量门禁,包括 SAM 2.1 large,不替换为轻量分割模型,但推理会显著较慢。
推理不会下载模型或回退 Hugging Face cache。产品环境先安装并验证 runtime 模型;独立 skill 必须把 SAM2_MODEL、LAMA_MODEL 和 GROUNDING_DINO_MODEL 设置为绝对本地路径,其中前两者校验固定文件身份,DINO 目录视为操作者显式信任的 override。源码和权重不存放在此 skill 中。大/深遮罩需要 LaMa;依赖缺失或初始化失败时明确失败,不降级到容易产生条带拖影的 OpenCV 修复。
命令行
从 skill 根目录执行 module,不要直接运行 scripts/image_to_ppt.py:
cd skills/image-to-ppt
python -m scripts.image_to_ppt input.png
python -m scripts.image_to_ppt input.png --slide-size original
python -m scripts.image_to_ppt input.png --slide-size 16:9
python -m scripts.image_to_ppt input.png --slide-size both
python -m scripts.image_to_ppt img1.png img2.png -o slides.pptx --slide-size both
python -m scripts.image_to_ppt input.png --lang en --reference
CLI 默认 --slide-size both。单图输出 <stem>_original.pptx 和 <stem>_16x9.pptx;批量输出 <base>_16x9.pptx,并在 <base>_original/ 中为每张输入生成原比例单页 PPTX。--period、--diff-threshold 和 --min-area 仅为兼容保留,strict SAM 管线会忽略它们。
Python API
从 skill 根目录导入:
from scripts.image_to_ppt import (
convert,
convert_batch,
convert_batch_variants,
convert_variants,
)
convert("input.png", output_path="output.pptx")
convert_variants("input.png")
convert_batch(["img1.png", "img2.png"], output_path="slides.pptx")
convert_batch_variants(["img1.png", "img2.png"], output_path="slides.pptx")
旧 convert() 保持兼容:默认返回单个 16:9 PPTX 路径字符串;CLI 默认输出两种尺寸。
统一 Runtime Agent 模式
在完整仓库环境中,先按运行环境选择 Provider。Provider 写入 Run 后不可切换,两种模式共享同一套严格组件动作、最多五轮修复和质量门禁;质量没有改善时会提前停止,不会为了耗尽轮数重复执行。
优先选择 host:当前 Codex、Claude Code 等宿主必须支持视觉识别、本地文件读取、工具调用和结构化 JSON;该模式直接使用当前 AI,不探测、加载或下载本地组件决策模型。
Host 可能把诊断图交给宿主服务处理,敏感内容应选择用户已准备好的本地模型路径(local 或 local-service)。三种 Provider 当前都保持 experimental,直到使用相同真实文件完成视觉、结构和资源验收。
local 使用用户自行安装并校验的 Qwen 完成候选判断和组件计划,必须先安装 agent-local 依赖、固定模型和完整性凭据;任一预检或推理失败都停止,不回退到其他 Provider。仓库和发行包不包含模型权重。
只有用户已经部署本地视觉模型服务时才选择 local-service。该服务必须支持图像输入、JSON 输出和 OpenAI 兼容的 Chat Completions 接口。优先读取项目根目录 .env 中的 IMAGE2EDITABLE_LOCAL_BASE_URL、IMAGE2EDITABLE_LOCAL_MODEL 和可选 IMAGE2EDITABLE_LOCAL_API_KEY;同名环境变量可临时覆盖 .env。缺少地址或模型名时,说明缺少的配置并停止,不要猜测模型名、下载模型或回退到 Local 或 Host。
每张图片、每一页都必须重新查看证据并独立决策,不能跨图片套用拆分决策。
Local 运行由 Runtime 内部串行完成:
image2editable convert input.pdf -o output.pptx --agent-provider local
image2editable prepare input.pptx --run-dir runs/pptx-job --agent-provider local
image2editable run execute runs/pptx-job
使用已部署的 OpenAI 兼容服务时,把上述命令中的 Provider 改为 --agent-provider local-service。
Host 运行先准备并推进到 awaiting_agent:
对 PPTX,prepare 后循环调用 run next。每个非 null 的 candidate 都必须查看 image_path,按 --page candidate.page_id --object candidate.source_shape_id 执行 decision record,然后继续 run next。仅当返回对象的 candidate 字段为 null 时才退出路由循环,随后首次执行 run execute。进入 awaiting_agent 后,再循环执行 agent next、agent record 和 run execute。
image2editable prepare input.pptx --run-dir runs/pptx-job --agent-provider host
image2editable run next runs/pptx-job
# candidate 非 null:查看 image_path;--page candidate.page_id --object candidate.source_shape_id
image2editable decision record runs/pptx-job \
--page candidate.page_id --object candidate.source_shape_id \
--decision replace --confidence 0.96 \
--category full_slide_screenshot \
--evidence "complete slide layout"
# 对每个后续非 null candidate,重复 decision record,然后继续 run next
image2editable run next runs/pptx-job # 响应对象的 candidate 字段为 null,退出路由循环
image2editable run execute runs/pptx-job
image2editable agent next runs/pptx-job
image2editable agent record runs/pptx-job --plan response.json
image2editable run execute runs/pptx-job
第一次 agent next 返回视觉 challenge。必须实际查看 image_path,把观察到的 shape/color/count 写入 host_capability_response 后记录;不能从 metadata 或文件名猜答案。后续 agent next 返回当前组件请求及绝对证据路径。必须先验证并遵循完整 request、组件图、evidence map、全部 hash、候选和冻结状态,只查看并逐项核验 request 的有序 review_evidence,不得再按固定文件清单重复打开未列入本轮审查的图片。首轮 review_evidence 仍包含全部视觉证据;后续轮的 round-review.png 以相同坐标提供本轮失败或重开节点及依赖邻居的 source、isolation、ownership、reconstructed、difference 和 residual 无损视图。若 request 回退为完整 review_evidence,必须逐项查看;quality-report.json 仍作为完整质量证据读取,不能当图片发送,也不得跳过任何质量门禁。再生成绑定当前 request_sha256 的严格 component_plan。Host 与 Local 使用同一门禁,Agent confidence 不能放宽硬失败。
每页最多 5 个重修批次。已通过组件冻结;失败子组件折叠为完整父组件,父组件仍失败时只保留该页并报告 preserved_with_warning。不得用清空组件或栅格文字换取成功。可靠 OCR 文字必须全部由原生可编辑文本框贡献且仅出现一次;视觉组件和背景不得残留文字像素。重建组件通常是透明图片对象,不承诺把任意图形转换为原生矢量或 SmartArt。
prepare 会在全页 OCR 和首轮视觉候选完成后,对小型候选做两个最长边分别不超过 512 与 448 像素的确定性视图串行 OCR。比较文本只做 NFKC、casefold 和去空白,不删除语义标点;同候选多项文字按页坐标一一匹配,已知文字逐项去重,一致项逐条回灌并从 source 重建全部资产。高置信冲突按确定顺序最多写入 96 条绑定 source SHA-256、稳定 candidate_id 和文字 bbox 的 unowned_raster_text;超出部分截断但页面仍硬失败。后续 native-check 必须与初始哈希证据中的 diagnostics 结构和内容完全一致。页级硬失败不解冻已通过叶组件;没有真实失败组件时立即 preserved_with_warning,否则最多执行五批真实修复。不要根据文件名、语言或具体标签添加特例。
{
"schema_version": 1,
"kind": "host_capability_response",
"challenge_id": "agent next 返回的值",
"observed": {"shape": "circle", "color": "#2b8a3e", "count": 3}
}
组件计划固定包含 schema_version/kind/page_id/provider/repair_round/request_sha256/actions;每个 action 固定包含 action/object_ids/parameters/confidence/evidence。只使用请求组件图中的候选 ID;collapse_to_parent 和 absorb_into_parent 可使用候选子组件关联的父 ID。既定十四类动作包括 accept/discard/merge/split/expand/shrink/retry_with_box/retry_with_points/attach_text/suppress_text/collapse_to_parent/rebuild_background/absorb_residual/absorb_into_parent,不添加未知字段。accept、retry_with_box 和 retry_with_points 仅在视觉证据确认对象是可单独移动的视觉元素、而非当前语义父级的子组件时,才可在既有参数中额外写入 "independent": true;不得按固定面积自动解除父关系。rebuild_background 可把已冻结视觉组件列为仅清理背景重复像素的对象,不得改变其冻结资产。
当 quality-report.json 包含 unexplained_visual_residual 时,必须查看 unexplained-mask.png。每个显著区域都必须由 active visual owner 覆盖;若区域是候选边界框内经验证的结构碎片,使用 absorb_residual 将绑定残差精确并入最小包含候选;否则对最接近的 inactive visual candidate 执行 retry_with_box / retry_with_points。不得用 accept、discard 或将其归为背景来消除违规。当 background_text_residual 是唯一阻断项时,对诊断命中的冻结文字或视觉 ID 执行 rebuild_background。
PPTX 的整页截图候选先使用决策路由:
image2editable run next runs/pptx-job
image2editable decision record runs/pptx-job \
--page page_001 --object 7 \
--decision replace --confidence 0.96 \
--category full_slide_screenshot \
--evidence "complete slide layout"
每次先查看 run next 返回的绝对 image_path。只有图片覆盖大部分页面、包含标题/多个文字区/图表或卡片等完整页面结构,且明显不是照片、Logo、头像或装饰素材时,才记录 replace + full_slide_screenshot。证据冲突或不确定时记录 preserve 或 ambiguous;不要为了提高拆分数量抬高置信度。
组件计划必须以可独立移动的最小完整视觉单元为单位。使用反事实标准:单独移动一个单元后,该单元及其余视觉单元是否仍各自完整;语义相关不构成合并理由。component-isolation.png 中沿 OCR 字形出现的透明孔洞,或本应连续的底色、填充、线条缺失,都属于残缺分割而不是成功去字;若失活父组件能恢复同一完整视觉单元,应使用 collapse_to_parent,同时保留可独立移动的高层组件且不得恢复源字形。质量报告出现 contained_parent_review 时,必须使用质量证据中的精确 contained_parent_pairs 对照两个隔离单元:若一个只是重复子集,选择唯一像素所有者并丢弃重复层;若两者确实都是可独立移动的视觉单元,双方必须分别使用 accept、置信度不低于 0.92,且每条 evidence 都把该 pair 的两个精确 ID 作为两个独立字符串列出,才允许共同保留,否则门禁继续硬失败。对被更完整组件覆盖、没有独立编辑价值的重复候选使用 discard。absorb_into_parent 只允许合并同一物理实体的重复掩码、碎边、阴影或分割缺口证据,禁止把多个可独立移动对象烘焙为一张父图;语义父级只用于分组,不参与最终像素渲染。仅当外缘画布颜色一致且证据显示背景残影时使用 rebuild_background,margin_ratio 必须在 (0, 0.1]。OCR 文字以冻结的 text_XXXX 节点出现,可作为 attach_text 的第二对象;只有视觉证据足以明确证明 OCR 候选实际为非文字时,才可对该文字节点使用 suppress_text,不确定或真实文字不得抑制。被抑制文字会从后续可编辑文字、文字蒙版、质量检查和 PPTX 中移除,并以该 OCR 边界框执行同质量 SAM,生成必须继续通过质量门禁的独立视觉候选;文字区域不能挖透明文字框,也不能只留在背景。任何动作仍需通过确定性重建、独占像素、残影/重影/缺损和 PPTX reopen 门禁;Agent 置信度不能放宽硬失败。
Runtime 只有在 confidence >= 0.92 时才重建完整截图。通过门禁后只原位替换命中的截图对象;既有原生文字、形状、表格、图表、备注、z-order、其他页面和未命中图片保持原生。未通过页面保留原截图并给出 warning,不伪装成可编辑组件。
rebuild_background.margin_ratio 必须由 Agent 根据当前残影和抗锯齿范围自适应选择:使用能完整覆盖残影、又不触及相邻结构线的最小值,禁止固定使用同一数值。
严格管线
- 使用现有 OCR 逻辑检测文字并生成文字遮罩。
- 使用 Grounding DINO 与 SAM 生成首轮视觉候选;对未被文字遮罩覆盖的小候选做资源有界的双视图 OCR,安全恢复后从源图重跑完整视觉准备。
- 使用 Grounding DINO 生成整图与重叠分块语义候选,再用 SAM 2.1 生成对象掩膜,并以无提示 SAM 候选覆盖词表外对象。
- 对候选去重,解析父子关系,为每个像素建立唯一 ownership;结合语义支撑和定向 SAM 复查修补组件内部破洞。
- 导出不含文字的独立透明组件;小/窄遮罩用 OpenCV 修复背景,大/深遮罩用 LaMa。
- 按实际导出的 RGBA 图层重建页面,执行严格视觉质量 QA。
- 组装原比例或 16:9 画布;16:9 使用 contain 居中和四角/边缘颜色渐变,不使用模糊放大的原图副本。
输出与失败
每页从底到顶包含 clean background、可独立移动的透明组件和可编辑文本框。
命令会在处理每张图片前打印绝对 work directory。严格视觉质量失败时,异常包含 mae、p95 和 diagnostics 绝对路径;检查其中的 source.png、ownership.png、reconstructed.png 和 report.json。更早的分割、OCR 或 LaMa 失败仍可通过已打印的 work directory 定位资产。不要在失败后回退为整页图片。
Signals
- GitHub stars
- 39
- Forks
- 3
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
image-to-ppt- Source
- github.com/dsy-xueai/image2editable