360 Secure SkillHub
360 安全技能中心

only for test

这是只读提取工具,核心功能是将docx/xlsx/pdf/图片的内容提取并转换为Markdown格式,扫描型PDF及图片支持MCP OCR识别。典型场景包括提取需求文档、规格书、Excel测试用例内容,识别手写扫描件、代码截图文字。输入为指定文件路径,输出含文档元信息的结构化Markdown内容,不支持文档创建或编辑。

sinoslug
sinoslug
热度 30.48
最近更新 2026-05-11 17:47:13
分类:效率依赖:代码执行 / 读写文件 / MCP 服务应用场景:文件转换 / 数据处理

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add slugtest
Metadata
name
extract-doc
description
提取 .docx/.xlsx/.pdf/图片 文档内容,转换为 Markdown 格式(支持 OCR 识别)。 这是**只读提取工具**,专注于将现有文档转换为 Markdown。 TRIGGER when: 用户要求提取文档内容、读取 Word/Excel/PDF 内容、提取图片文字、 OCR 识别、文档转 Markdown、读取需求文档、提取规格书内容、把 docx 转成 md、 把 xlsx 转成 markdown、PDF 内容提取、扫描件识别、"帮我看看这个文档里有什么"、 "把这个 Word 转成 Markdown"、"读取 Excel 里的数据"、"识别图片中的文字"。 DO NOT TRIGGER when: 用户要求**创建**或**编辑**文档(用 document-skills:docx/xlsx/pdf)、 生成新的 Word/Excel/PDF 文件、修改现有文档内容、添加表格/图表到文档、 格式化文档排版、合并多个 PDF。此 skill 仅用于**读取和提取**,不用于创建或修改。
user-invocable
true
allowed-tools
Read, Grep, Glob, Write, Bash, mcp__zai-mcp-server__extract_text_from_screenshot

Extract Doc

提取 .docx/.xlsx/.pdf/图片 文档内容,转换为 Markdown 格式。

触发

/extract-doc <file_path>

参数:

  • file_path: 文档路径(支持 .docx/.xlsx/.pdf/.png/.jpg/.bmp)

支持格式

格式 扩展名 提取方法 特殊处理
Word .docx python-docx 段落、表格、列表
Excel .xlsx openpyxl 多 Sheet、表格
PDF .pdf pymupdf + MCP OCR 文本型/扫描型
图片 .png/.jpg/.bmp MCP OCR 中文/英文/代码

OCR 规则

必须使用 MCP OCR,禁止安装本地 OCR 库 (pytesseract 等)。

工具: mcp__zai-mcp-server__extract_text_from_screenshot

参数:
  image_source: 图片路径或 URL
  prompt: 提取指令 (如 "提取所有文本内容,保持原有排版")
  programming_language: 代码语言 (可选,如 "python")

依赖安装

首次使用前执行

pip install python-docx openpyxl pymupdf
库 版本 用途
python-docx >=0.8.11 Word 解析
openpyxl >=3.1.0 Excel 解析
pymupdf >=1.23.0 PDF 解析

执行流程

Step 1: 按类型提取

验证文件存在后,根据扩展名选择提取方法。

.docx 文件

from docx import Document
doc = Document(path)

# 段落: 识别标题层级
for para in doc.paragraphs:
    if para.style.name.startswith('Heading'):
        level = para.style.name.split()[-1]
        # 输出: {'#' * int(level)} {para.text}
    else:
        # 输出: para.text

# 表格: 转 Markdown 表格
for table in doc.tables:
    # 第1行为表头, 其余为数据行

.xlsx 文件

from openpyxl import load_workbook
wb = load_workbook(path)

for sheet_name in wb.sheetnames:
    sheet = wb[sheet_name]
    # 第1行检测表头, 第2行起为数据, 转为 Markdown 表格

.pdf 文件

import fitz  # pymupdf
doc = fitz.open(path)

for i, page in enumerate(doc, 1):
    text = page.get_text().strip()
    if text:
        # 文本型 PDF - 直接提取
    else:
        # 扫描型 PDF - 渲染为图片 + MCP OCR
        pix = page.get_pixmap(dpi=150)
        pix.save(f"/tmp/pdf_page_{i}.png")
        # 调用 mcp__zai-mcp-server__extract_text_from_screenshot(...)

图片文件 (MCP OCR)

直接调用:
mcp__zai-mcp-server__extract_text_from_screenshot(
    image_source="D:/docs/scan.png",
    prompt="提取图片中的所有文字,保持原有排版和表格结构"
)

Step 2: 格式化输出

转换为 Markdown,保持原有结构。


输出格式

# 文档名称

## 元信息
- 类型: [Word/Excel/PDF/图片]
- 页数/工作表: [N]
- OCR: [是/否]

## 内容

[提取的文本内容,保持原始结构]

### 表格 1

| 列1 | 列2 | 列3 |
|-----|-----|-----|
| ... | ... | ... |

错误处理

错误 处理
文件不存在 验证路径,搜索相似文件名
库未安装 显示 pip install 命令
大文件 (>10MB) 警告并建议分段提取
编码问题 尝试 UTF-8/GBK 解码
PDF 加密 提示需要密码
OCR 失败 检查图片清晰度,建议 DPI >= 150
不支持的格式 列出支持的格式列表

B6x 项目典型用例

文档类型 用例
需求文档 (.docx) 提取功能需求转 Markdown
规格书 (.pdf) 提取芯片规格、寄存器描述
测试用例 (.xlsx) 提取测试项转为可读格式
扫描件 (.png) OCR 识别手写笔记
代码截图 提取代码文本