用途
DocumentExtractor 使用 markitdown 将受支持的输入转换为 Markdown,使内容更易于检查、搜索,并接入 LLM 工作流。
主要能力
- 将 PDF、Office 文档(如 docx、pptx、xlsx)、图片、音频、视频等受支持的输入转换为 Markdown。
- 支持将转换结果打印到标准输出,或写入指定文件。
- 支持管道输入二进制内容,并通过扩展名、MIME 或字符集提示辅助识别。
- 支持保留内联 data: URI,而不是将其截断。
- 支持通过 Azure Document Intelligence 进行提取。
- 支持列出并使用第三方插件。
- 提供 Python API,可在脚本中调用。
使用方式
检查与安装
检查 CLI 是否已存在:
Get-Command markitdown -ErrorAction SilentlyContinue
markitdown --version
优先使用 uv 安装:
uv tool install markitdown
uv tool install 'markitdown[pdf,docx,pptx]'
uv tool install 'markitdown[all]'
如果 uv 不可用,回退到 pipx:
pipx install markitdown
pipx install 'markitdown[pdf,docx,pptx]'
pipx install 'markitdown[all]'
如果安装时未包含所需的功能组,请按实际需要的更窄或更广的 extras 集合重新安装。
当用户只需要部分格式时,在安装 extras 前先阅读 references/feature-groups.md。
使用 CLI
转换文件并将 Markdown 打印到标准输出:
markitdown .\report.pdf
写入文件:
markitdown .\report.pdf -o .\report.md
管道输入二进制内容,并给 MarkItDown 一个扩展名提示:
Get-Content .\report.pdf -AsByteStream | markitdown -x .pdf -o .\report.md
当输入来源不明确时,使用 MIME 或字符集提示:
markitdown -x .html -m text/html .\page.bin
markitdown -x .csv -c utf-8 .\data.txt
保留内联 data: URI,而不是将其截断:
markitdown --keep-data-uris .\page.html -o .\page.md
谨慎选择 Extras
- 对于轻量级类文本输入和通用转换,安装基础版 markitdown。
- 当用户只需要特定格式时,安装针对性的 extras。
- 仅当广泛覆盖比依赖体积更重要时,才安装 [all]。
- 使用 Azure Document Intelligence 时,用 az-doc-intel 重新安装。
- 仅在转录工作流中使用 audio-transcription 或 youtube-transcription 重新安装。
当前 extras 列表和格式映射位于 references/feature-groups.md。
常见工作流
转换 Office 或 PDF 文档:
markitdown .\slides.pptx -o .\slides.md
markitdown .\notes.docx -o .\notes.md
markitdown .\table.xlsx -o .\table.md
markitdown .\scan.pdf -o .\scan.md
在安装相关支持后,转换 YouTube URL 或归档:
markitdown "https://www.youtube.com/watch?v=dQw4w9WgXcQ" -o .\video.md
markitdown .\bundle.zip -o .\bundle.md
使用 Azure Document Intelligence 进行提取:
markitdown .\scan.pdf -d -e "https://<resource>.cognitiveservices.azure.com/" -o .\scan.md
列出已安装的第三方插件:
markitdown --list-plugins
markitdown --use-plugins .\input.pdf -o .\input.md
使用 Python API
当用户需要在脚本中使用 MarkItDown 而不是作为独立命令时,使用 Python API:
from markitdown import MarkItDown
md = MarkItDown(enable_plugins=False)
result = md.convert("report.pdf")
print(result.markdown)
为 Document Intelligence 使用已配置的端点:
from markitdown import MarkItDown
md = MarkItDown(docintel_endpoint="https://<resource>.cognitiveservices.azure.com/")
result = md.convert("scan.pdf")
print(result.markdown)
快速排查
- 如果缺少 markitdown,使用 uv tool install ... 或 pipx install ... 安装。
- 如果格式不受支持,先检查是否安装了正确的 extra。
- 如果 stdin 转换结果看起来不对,添加 -x、-m 或 -c 提示。
- 如果 -d 失败,验证端点并确认已安装 az-doc-intel 支持。
- 如果预期有插件行为,运行 markitdown --list-plugins,然后添加 --use-plugins。
- 如果输出细节不清楚,运行 markitdown --help,然后查看上游文档。
最后手段
当本地行为不清楚或包发生变化时,使用以下来源:
- CLI 帮助:markitdown --help
- 主文档:https://github.com/microsoft/markitdown/tree/main
- README:https://raw.githubusercontent.com/microsoft/markitdown/main/README.md
适用场景
- 需要将 PDF、Office 文档、图片、音频、视频等受支持输入转换为 Markdown 以便检查、搜索或接入 LLM 工作流。
- 需要在命令行中批量或单次转换文档。
- 需要在 Python 脚本中集成文档转换能力。
- 需要使用 Azure Document Intelligence 进行提取。
- 需要处理 YouTube URL 或归档文件(在安装相关支持后)。
限制
- 仅支持 markitdown 所支持的输入格式;具体格式映射见 references/feature-groups.md。
- 部分格式需要安装对应的 extras 才能使用。
- 使用 Azure Document Intelligence 需要安装 az-doc-intel 支持并配置有效端点。
- 音频转录和 YouTube 转录需要安装 audio-transcription 或 youtube-transcription 支持。
- 插件功能需要先列出并显式启用。
- 关于收费、价格、平台、效果等更多信息,资料中暂未提供。