PPT图片内容识别

SKILL效率
效率 未标注权限 许可证不明确
安装这个技能

读取 PPT 内容:导出每页为 PNG + 用多模态模型识别图片内容。基于 tiangong-wps-ppt-automation。

一句话选型结论

按资料字段整理

PPT图片内容识别是效率类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类效率 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_46974ee3/ppt-image-extract
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

效率
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_46974ee3仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791730762
正文体量8.4 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
整理待办与日程

把零散任务收进清单,排出优先级。

批量处理重复任务

把固定动作做成模板,重复执行。

把流程写成清单

把口头流程整理成可复用的步骤。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在效率场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
PPT图片内容识别当前 未标注权限 未标注 未标注 未标注 有
Nano PDF 文档 联网访问 ClawHub 市场 424.9 万 OpenClaw 有
自动更新程序 浏览器控制 ClawHub 市场 296.4 万 OpenClaw 有
Gemini 助手 联网访问 ClawHub 市场 254.7 万 OpenClaw 有
word DOCX 文档 联网访问 ClawHub 市场 239.6 万 OpenClaw 有
Excel XLSX 前端 联网访问 ClawHub 市场 227.0 万 OpenClaw 有

SKILL.md 全文

8.4 KB
模型实际读到的说明书原文,来自技能仓库

ppt-image-extract

> 读取 PPT 内容(含图片识别):导出每页为 PNG + 调用多模态模型识图。

触发场景

  • 用户说「读取 PPT 内容」「识别 PPT 里的图」「把 PPT 转成文字」
  • PPT 包含梯形图、电路图、实物图、流程图等无法用纯文本提取的内容
  • 需要把图片中的知识点整理为文字

前置条件

  1. Windows 系统(用 WPS/PowerPoint COM 导出图片)
  2. 已安装 tiangong-wps-ppt-automation skill(提供 COM 自动化基础)
  3. 已安装 pywin32:pip install pywin32
  4. 多模态模型(用于识图,任选其一):
    - qclaw/pool-minimax-m3(已验证可用)
    - qclaw/kimi2.6(已验证可用)
    - 其他支持图片输入的模型

核心流程

PPT (.ppt/.pptx)
    ↓ 步骤1: COM 自动化导出每页为 PNG
slides/<ppt名>/slide_001.png ~ slide_NNN.png
    ↓ 步骤2: 多模态模型逐张识图
识别结果(结构化文字)
    ↓ 步骤3: 汇总成文档
output.docx / output.md

步骤 1:导出 PPT 每页为 PNG

1.1 用 WPS COM(推荐,支持 .ppt 旧格式)

import os
import win32com.client

def export_ppt_to_png(ppt_path, output_dir):
    """用 WPS 演示 COM 把 PPT 每页导出为 PNG"""
    assert os.path.exists(ppt_path), f'PPT not found: {ppt_path}'

    ppt_name = os.path.splitext(os.path.basename(ppt_path))[0]
    out_folder = os.path.join(output_dir, ppt_name)
    os.makedirs(out_folder, exist_ok=True)

    print(f'PPT: {ppt_path}')
    print(f'Output: {out_folder}')

    # 优先用 WPS(支持 .ppt 旧格式),fallback 到 PowerPoint
    try:
        app = win32com.client.Dispatch('KWPP.Application')
    except:
        app = win32com.client.Dispatch('PowerPoint.Application')

    app.Visible = True  # WPS 必须可见

    try:
        pres = app.Presentations.Open(ppt_path, ReadOnly=True, WithWindow=False)
        total = pres.Slides.Count
        print(f'Total slides: {total}')

        for i, slide in enumerate(pres.Slides, 1):
            out_path = os.path.join(out_folder, f'slide_{i:03d}.png')
            slide.Export(out_path, 'PNG', 1920, 1080)
            if i % 20 == 0:
                print(f'  exported {i}/{total}')

        pres.Close()
        print(f'✅ Done: {total} slides exported to {out_folder}')
        return out_folder, total
    finally:
        app.Quit()

1.2 批量处理多个 PPT

def export_all_ppts(folder, output_root='slides'):
    """批量导出文件夹下所有 PPT"""
    ppts = [f for f in os.listdir(folder) if f.lower().endswith(('.ppt', '.pptx'))]
    print(f'Found {len(ppts)} PPTs')

    results = {}
    for ppt in ppts:
        ppt_path = os.path.join(folder, ppt)
        out_folder, count = export_ppt_to_png(ppt_path, output_root)
        results[ppt] = (out_folder, count)

    return results

1.3 验证导出

def verify_exports(results):
    """验证每个 PPT 的导出数量"""
    for ppt_name, (folder, expected) in results.items():
        actual = len([f for f in os.listdir(folder) if f.endswith('.png')])
        status = '✅' if actual == expected else '❌'
        print(f'{status} {ppt_name}: expected {expected}, got {actual}')

步骤 2:多模态模型识图

2.1 单张图识别(在主会话中用 read 工具)

重要:模型必须支持图片输入。当前验证可用的模型:
- qclaw/pool-minimax-m3(MiniMax M3,原生多模态)
- qclaw/kimi2.6(Kimi K2.6,视觉理解)

调用方式(在 agent 主循环中):

# 用 read 工具读取 PNG,模型会自动识别图片内容
read(path="C:/path/to/slide_001.png")

注意:read 工具对图片返回的是模型识图结果,不是文件二进制。需要模型本身支持多模态。

2.2 批量识图策略

不要在主会话中逐张识图(会污染上下文 + 速度慢)。

推荐方式:派子 AGENT 处理,主会话只接收汇总结果。

sessions_spawn(
  task=<识图任务描述,包含图片路径清单 + 期望输出格式>,
  model="qclaw/pool-minimax-m3",
  runtime="subagent",
  mode="run"
)

2.3 子 AGENT 识图任务模板

# 任务:识别 PPT 图片内容

## 图片清单
- C:/path/to/slides/plc第七讲/slide_011.png — PLC 三段等效电路
- C:/path/to/slides/plc第七讲/slide_013.png — 核心转换案例
...(列出所有要识别的图)

## 输出要求
对每张图输出:
1. 图片标题(来自 slide 编号)
2. 图片类型(电路图/梯形图/实物图/文字说明/混合)
3. 关键内容描述(200-400 字)
   - 电路图:列出主要元件 + 连接关系
   - 梯形图:列出 LD/AND/OR/OUT 等指令 + 梯形图结构
   - 实物图:列出设备型号 + 关键特征
   - 文字说明:直接摘录关键文字
4. 对应考点(如适用)

## 输出格式
Markdown 文档,每张图一段:

### slide_NNN.png
- **类型**:电路图
- **描述**:...
- **考点**:考点 4

2.4 进度控制

  • 每个子 AGENT 处理 10-20 张图(避免上下文超限)
  • 多个子 AGENT 可并行(OpenClaw 支持 maxConcurrent: 8)
  • 主会话用 sessions_yield 等待全部完成

步骤 3:汇总成文档

3.1 收集子 AGENT 结果

子 AGENT 完成后会把识别结果写文件或返回报告。主会话:

import glob

results = []
for f in glob.glob(r'C:\path\to\work\*_result.md'):
    with open(f, 'r', encoding='utf-8') as fp:
        results.append(fp.read())

final = '\n\n---\n\n'.join(results)

3.2 生成 docx(可选)

如果需要嵌入图片 + 文字到 docx:

from docx import Document
from docx.shared import Inches, Pt, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH

doc = Document()

for item in image_results:
    doc.add_heading(item['title'], level=2)

    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    p.add_run().add_picture(item['image_path'], width=Inches(5.5))

    cap = doc.add_paragraph()
    cap.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = cap.add_run(f"图:{item['caption']}")
    run.italic = True
    run.font.size = Pt(9)
    run.font.color.rgb = RGBColor(0x55, 0x55, 0x55)

    doc.add_paragraph(item['description'])

doc.save(output_path)

常见问题

Q1: WPS COM 启动失败

  • 确认 WPS Office 已安装
  • 试 KWPP.Application(WPS)→ PowerPoint.Application(Microsoft)→ wpp.Application(WPS 新版)
  • WPS 必须设为 Visible=True(COM 限制)

Q2: .ppt 旧格式导出失败

  • WPS 支持 .ppt,Microsoft PowerPoint 需要先另存为 .pptx
  • 也可以先用 LibreOffice soffice --convert-to pptx 转换

Q3: 模型不支持图片识别

  • 当前 qclaw/pool-glm-5.2(默认模型)不支持图片识别
  • 必须切换到多模态模型:qclaw/pool-minimax-m3 或 qclaw/kimi2.6
  • 用 sessions_spawn(model="qclaw/pool-minimax-m3") 指定子 AGENT 的模型

Q4: 子 AGENT 识图超时

  • 单个子 AGENT 处理图片数 ≤ 20 张
  • 大批量(>50 张)拆成多个子 AGENT 并行
  • 用 mode="run" 让子 AGENT 后台运行

Q5: 识别结果不准确

  • 提供清晰的图片标题/上下文("这是 PLC 第七讲第 13 页,主题是核心转换案例")
  • 对关键图可以多次识别取共识
  • 识别后让用户校对

文件路径约定

<工作目录>/
├── slides/                       # 导出的 PNG
│   ├── <PPT名1>/
│   │   ├── slide_001.png
│   │   ├── slide_002.png
│   │   └── ...
│   └── <PPT名2>/
│       └── ...
├── _recognize_results/           # 子 AGENT 输出
│   ├── batch1_result.md
│   └── batch2_result.md
└── output.docx                   # 最终汇总文档

依赖 skill

  • tiangong-wps-ppt-automation(提供 PPT COM 自动化基础,但不含图片识别)
  • 本 skill 补充了「图片识别」能力

限制

  • 仅 Windows(依赖 WPS/PowerPoint COM)
  • 识图精度依赖多模态模型,复杂梯形图可能漏细节
  • 大批量 PPT(>500 页)耗时较长,建议分批处理
  • 导出的 PNG 分辨率默认 1920×1080,可调整

常见问题

5 问
答案由本站依据条目字段整理
PPT图片内容识别怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_46974ee3/ppt-image-extract。安装方式为未标注。装完刷新技能列表或重开客户端。

PPT图片内容识别支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

PPT图片内容识别权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

PPT图片内容识别收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

PPT图片内容识别用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。