PPT Reader
Overview
读取和解析 PowerPoint 文件(.pptx),提取幻灯片文本内容。
When to Use
- - 用户发送了 .pptx 文件
- 需要提取PPT中的文字内容
- 需要了解PPT的结构和页数
Quick Reference
| 操作 | 命令 |
|---|
| 查看PPT页数 | INLINECODE0 |
| 提取所有文本 |
unzip -p file.pptx "ppt/slides/slide*.xml" \| sed 's/<[^>]*>//g' |
| 逐页提取 | 见下方脚本 |
Implementation
方法1:快速提取所有文本
CODEBLOCK0
方法2:逐页提取(推荐)
CODEBLOCK1
方法3:获取PPT基本信息
CODEBLOCK2
Workflow
- 1. 确认文件路径 - 从
/root/.openclaw/media/inbound/ 获取文件 - 获取页数 - 确定有多少张幻灯片
- 逐页提取 - 循环提取每页内容
- 整理输出 - 汇总成结构化摘要
Common Patterns
处理飞书发送的PPT
飞书发送的文件通常保存在:
CODEBLOCK3
文件名格式:
CODEBLOCK4
提取特定幻灯片
CODEBLOCK5
Limitations
- - 只能提取文本内容,无法提取图片、图表
- 无法获取格式信息(字体、颜色、布局)
- 复杂表格可能提取不完整
- 仅支持 .pptx 格式(不支持旧版 .ppt)
Real-World Example
CODEBLOCK6
技能名称: ppt-reader
详细描述:
PPT 读取器
概述
读取并解析 PowerPoint 文件(.pptx),提取幻灯片中的文本内容。
使用场景
- - 用户发送了 .pptx 文件
- 需要提取PPT中的文字内容
- 需要了解PPT的结构和页数
快速参考
| 操作 | 命令 |
|---|
| 查看PPT页数 | unzip -l file.pptx \ | grep slide[0-9]\.xml \ | wc -l |
| 提取所有文本 |
unzip -p file.pptx ppt/slides/slide.xml \| sed s/<[^>]*>//g |
| 逐页提取 | 见下方脚本 |
实现方法
方法1:快速提取所有文本
bash
unzip -p file.pptx ppt/slides/slide.xml 2>/dev/null | sed s/<[^>]>//g | tr -s \n
方法2:逐页提取(推荐)
bash
cd /path/to/ppt/
for i in {1..N}; do
echo === 第 $i 页 ===
unzip -p file.pptx ppt/slides/slide$i.xml 2>/dev/null | sed s/<[^>]*>//g | tr -s \n
echo
done
方法3:获取PPT基本信息
bash
页数
unzip -l file.pptx | grep -c slide[0-9]*\.xml
文件结构
unzip -l file.pptx | grep -E slide[0-9]+\.xml
工作流程
- 1. 确认文件路径 - 从 /root/.openclaw/media/inbound/ 获取文件
- 获取页数 - 确定有多少张幻灯片
- 逐页提取 - 循环提取每页内容
- 整理输出 - 汇总成结构化摘要
常见模式
处理飞书发送的PPT
飞书发送的文件通常保存在:
/root/.openclaw/media/inbound/
文件名格式:
原始文件名-uuid.pptx
提取特定幻灯片
bash
只提取第1页
unzip -p file.pptx ppt/slides/slide1.xml | sed s/<[^>]*>//g
提取第1-5页
for i in {1..5}; do unzip -p file.pptx ppt/slides/slide$i.xml | sed s/<[^>]*>//g; done
局限性
- - 只能提取文本内容,无法提取图片、图表
- 无法获取格式信息(字体、颜色、布局)
- 复杂表格可能提取不完整
- 仅支持 .pptx 格式(不支持旧版 .ppt)
实际示例
bash
完整提取流程
PPT_FILE=/root/.openclaw/media/inbound/智能体-概述-20260116-xxx.pptx
1. 获取页数
PAGE
COUNT=$(unzip -l $PPTFILE | grep -c slide[0-9]*\.xml)
echo 总页数: $PAGE_COUNT
2. 逐页提取
for i in $(seq 1 $PAGE_COUNT); do
echo === 第 $i 页 ===
unzip -p $PPT_FILE ppt/slides/slide$i.xml 2>/dev/null | sed s/<[^>]*>//g | tr -s \n
echo
done