Install
openclaw skills install @youbuwei/markitdownUse when converting files (PDF, Word, Excel, PowerPoint, images, audio, HTML, EPUB, ZIP, YouTube URLs) to Markdown. Handles document-to-text extraction for LLM pipelines, indexing, and analysis.
openclaw skills install @youbuwei/markitdownMarkItDown 是微软开源的轻量级 Python 工具(v0.1.6),用于将各种文件格式转换为 Markdown。专为 LLM 管线和文本分析设计,保留文档结构(标题、列表、表格、链接等)。
安装位置: Hermes venv(/root/.hermes/hermes-agent/.venv),全局可用
CLI 路径: markitdown(venv 已在 PATH 中,直接调用)
Python API: from markitdown import MarkItDown(execute_code 中可直接 import)
安全提示: MarkItDown 以当前进程权限执行 I/O,与
open()/requests.get()行为一致。处理不受信任来源的文件时,应对输入进行清洗。处理 YouTube URL 需要外部网络访问。处理本地文件需要对目标文件所在目录有读取权限。
| 格式 | 扩展名 | 说明 |
|---|---|---|
.pdf | 文本提取 | |
| Word | .docx | 文档结构保留 |
| PowerPoint | .pptx | 幻灯片内容提取 |
| Excel | .xlsx, .xls | 表格转 Markdown 表格 |
| 图片 | .jpg/.png/.gif 等 | EXIF 元数据 + OCR |
| 音频 | .wav, .mp3 | EXIF 元数据 + 语音转录(需 flac) |
| HTML | .html | 网页转 Markdown |
| 文本格式 | .csv, .json, .xml | 原生支持 |
| EPUB | .epub | 电子书提取 |
| ZIP | .zip | 遍历内部文件 |
| YouTube | URL | 视频字幕转录(需网络) |
MarkItDown 要求 Python ≥ 3.10,安装在当前活跃的 Python 环境中:
# 完整安装(含 PDF、Office、OCR、音频转录、YouTube 转录等全部可选依赖)
pip install 'markitdown[all]' -i https://pypi.org/simple/
# 或仅安装常用格式(PDF + Office 三件套)
pip install 'markitdown[pdf,docx,pptx,xlsx]' -i https://pypi.org/simple/
可选依赖速查:
| 安装选项 | 包含能力 |
|---|---|
[all] | 全部(推荐) |
[pdf] | PDF 文本提取 |
[docx] | Word 文档 |
[pptx] | PowerPoint |
[xlsx] | Excel (.xlsx) |
[xls] | 旧版 Excel (.xls) |
[audio-transcription] | 音频语音转录 |
[youtube-transcription] | YouTube 字幕提取 |
[outlook] | Outlook 邮件 (.msg) |
markitdown --version
# 期望输出: markitdown 0.1.6
python -c "from markitdown import MarkItDown; print(MarkItDown())"
# 期望输出: <markitdown._markitdown.MarkItDown object at ...>
如果 markitdown 命令找不到,确认安装的 Python 环境已加入 PATH,或直接用完整路径:
/path/to/venv/bin/markitdown --version
markitdown[all] 通过 PyPI 安装后,以下格式开箱即用:PDF、Word、Excel、PPT、HTML、CSV、JSON、XML、EPUB、ZIP、图片(EXIF + OCR)。
以下格式需要额外的系统级库:
| 依赖 | 用途 | 安装方式 |
|---|---|---|
flac | 音频转录(wav/mp3 → 文字) | apt install flac |
ffmpeg | 音视频处理增强 | apt install ffmpeg |
如需使用 Azure Document Intelligence 或 Content Understanding 进行高质量文档提取:
# 安装 Azure 依赖(已包含在 [all] 中)
pip install 'markitdown[az-doc-intel]' -i https://pypi.org/simple/
pip install 'markitdown[az-content-understanding]' -i https://pypi.org/simple/
使用时需设置环境变量或通过 CLI 参数传入 endpoint:
export AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT="https://your-resource.cognitiveservices.azure.com"
export AZURE_DOCUMENT_INTELLIGENCE_KEY="your-key"
markitdown document.pdf -d -e "$AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT"
MarkItDown 支持社区插件增强功能(如 markitdown-ocr 用 LLM 做 OCR):
# 查看已安装插件
markitdown --list-plugins
# 安装 OCR 插件(需要 LLM API key)
pip install markitdown-ocr -i https://pypi.org/simple/
# 使用插件转换
markitdown scanned-doc.pdf -p
不要用于: 高保真文档格式转换(保留精确排版);此时应使用专门的格式转换工具。
markitdown path-to-file.pdf
markitdown path-to-file.pdf -o output.md
cat path-to-file.pdf | markitdown
cat data.bin | markitdown -x pdf
markitdown data.bin -m application/pdf -c UTF-8
markitdown file.pdf --keep-data-uris
| 参数 | 说明 |
|---|---|
filename | 输入文件路径(可选,缺省读 stdin) |
-o, --output | 输出文件名 |
-x, --extension | 文件扩展名提示(stdin 场景) |
-m, --mime-type | MIME 类型提示 |
-c, --charset | 字符编码提示 |
-d, --use-docintel | 使用 Azure Document Intelligence(需配置 endpoint) |
-e, --endpoint | Document Intelligence Endpoint |
--use-cu | 使用 Azure Content Understanding(需配置 endpoint) |
--cu-endpoint | Content Understanding Endpoint |
--cu-analyzer | Content Understanding analyzer ID |
-p, --use-plugins | 启用第三方插件 |
--list-plugins | 列出已安装插件 |
--keep-data-uris | 保留 data URI(默认截断) |
from markitdown import MarkItDown
md = MarkItDown()
# 本地文件
result = md.convert("document.pdf")
print(result.text_content)
# URL(自动下载并转换)
result = md.convert_url("https://example.com/document.pdf")
print(result.text_content)
# 二进制流
with open("file.docx", "rb") as f:
result = md.convert_stream(f)
print(result.text_content)
所有 convert* 方法返回 DocumentConverterResult,核心属性:
.text_content — 转换后的 Markdown 文本execute_code 运行在 Hermes venv 中,markitdown 已可直接 import:
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("/path/to/file.pdf")
print(result.text_content)
markitdown document.pdf | head -100
markitdown report.docx -o report.md
markitdown data.xlsx -o data.md
markitdown presentation.pptx -o slides.md
markitdown "https://www.youtube.com/watch?v=VIDEO_ID"
markitdown page.html -o page.md
markitdown archive.zip
markitdown screenshot.png
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert_url("https://example.com/report.pdf")
print(result.text_content)
markitdown large-report.pdf 2>/dev/null | head -200
大文件(如 100+ 页 PDF、大型 Excel)可能转换较慢或输出巨大。推荐策略:
markitdown file.pdf 2>/dev/null | head -50 判断格式是否正确markitdown file.pdf -o /tmp/out.md,然后用 read_file 分段读取2>/dev/null 过滤可保持 stdout 纯净| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
ModuleNotFoundError: No module named 'markitdown' | 未安装或安装在了其他 Python 环境 | 确认 which python 和 pip install 在同一环境 |
markitdown: command not found | CLI 不在 PATH 中 | 用 python -m markitdown 替代,或用完整路径 /path/to/venv/bin/markitdown |
pip install 报 externally-managed-environment | 系统 Python 受 PEP 668 保护 | 使用 venv:python -m venv .venv && source .venv/bin/activate && pip install ... |
| PyPI 镜像源不可用(DNS 解析失败) | 国内镜像偶尔抽风 | 加 -i https://pypi.org/simple/ 指定官方源 |
python3.11 版本过低 | markitdown 要求 Python ≥ 3.10 | 升级 Python 到 3.10+ |
| 音频转写无输出/报错 | 缺少 flac 系统命令 | apt install flac |
| YouTube 转录失败 | 网络无法访问 YouTube | 需配置代理或使用其他方式获取字幕 |
| 图片 OCR 输出空 | 图片质量差或无文字 | 安装 markitdown-ocr 插件(需额外配置 LLM) |
| 中文乱码 | 编码不匹配 | 用 -c UTF-8 或 -c GBK 指定编码 |
Magika 模型下载超时 | 首次运行需下载 ONNX 模型 (~30MB) | 重试或设置代理;模型缓存后会持久化 |
| PDF 提取为空 | 扫描件 PDF(纯图片,无文字层) | 用 OCR 插件或 ocr-and-documents skill |
腾讯云镜像源不可用时,安装需要指定 PyPI 官方源:
python -m pip install 'markitdown[all]' -i https://pypi.org/simple/
首次运行较慢。magika(文件类型检测)首次使用会下载 ~30MB ONNX 模型到缓存,后续运行秒启动。
--keep-data-uris 慎用。保留 base64 编码的图片数据会使输出体积暴增(一张图几 MB),通常不需要。
PDF 扫描件 vs 文字版。markitdown 的 PDF 转换基于文本层提取,纯图片扫描件会输出空。需要 OCR 的场景请用 markitdown-ocr 插件或 ocr-and-documents skill。
不要用 stdout 管道处理二进制内容。markitdown 输出的是纯文本 Markdown,不要用于非文本格式的二次编码。
markitdown --version 输出 0.1.6markitdown test.csv 能正常输出 Markdown 表格from markitdown import MarkItDown 可正常导入flac 已安装(which flac 非空),用于音频转录