其他能力 · 中文选型解读

markitdown

已解读GitHubMITPython

这是微软推出的轻量Python工具,可将办公文档、PDF、音视频、网页等多类型文件转换为Markdown格式,适配大模型及文本分析流程使用。

177.3kstar近 30 天仍在维护维护状态MIT · 可评估商用商用提醒
在 GitHub 查看官方项目
适合解决提供特定场景下的 AI 或开发能力
更适合已有明确需求、愿意进一步验证的团队
投入判断上手门槛:需评估。建议先核对项目说明、维护状态与许可
一分钟看懂

这个项目值得继续研究吗?

AI 依据上游资料解读 · 2026/8/28

这是微软推出的轻量Python工具,可将办公文档、PDF、音视频、网页等多类型文件转换为Markdown格式,适配大模型及文本分析流程使用。

解决什么问题
企业在搭建大模型应用、开展文本分析工作时,常遇到合同、报表、会议录音、网页等多格式资料无法直接投喂的问题,手动转写效率低,普通转文本工具还易丢失文档结构,导致大模型识别准确率下降。
适合什么团队
适合需要将多格式业务资料转换为大模型可识别格式的团队,包括大模型应用开发团队、企业知识管理团队、RAG(检索增强生成,大模型外挂知识库技术)落地团队。
使用前注意
使用需Python 3.10及以上版本,不可信运行环境中需先做输入校验,调用Azure相关转换能力会产生额外云服务费用,插件默认关闭。

本页用于缩短初步筛选时间,不构成技术、采购或法律结论。 正式使用前请在真实业务数据上验证,并以官方说明与许可证为准。

项目导读

从官方资料看清能力、部署与采用边界

AI 翻译整理 · 保留官方来源

以下内容依据项目公开 README 或模型卡翻译整理,代码、命令和产品名保持原样。

MarkItDown 导读

项目定位

MarkItDown是微软AutoGen团队开发的轻量格式转换工具,核心定位是为LLM(大语言模型,具备自然语言理解与生成能力的人工智能模型)及相关文本分析流程提供结构化输入。和普通面向用户的格式转换工具不同,它的核心目标是保留文档的标题、列表、表格、链接等核心结构,输出的Markdown优先供文本分析工具使用,不追求面向人类阅读的高保真转换效果。 目前该项目仍处于活跃维护状态,仓库未归档,近期有代码更新。

核心转换能力

MarkItDown支持的输入格式覆盖企业常用的绝大多数资料类型,包括:PDF、Word、Excel、PowerPoint、图片(支持EXIF元数据读取与OCR识别)、音频(支持EXIF元数据读取与语音转写)、HTML、CSV/JSON/XML等文本格式、ZIP压缩包、YouTube链接、EPub电子书等。

此外工具支持第三方插件扩展能力,可按需拓展转换能力:比如官方提供的markitdown-ocr插件,可对接大模型视觉能力提取文档中嵌入图片的文本内容。同时支持对接两项微软Azure云服务:

  1. Azure Document Intelligence:提供更高精度的云端版式分析与扫描件OCR能力,适配复杂表格、多页扫描文档场景。
  2. Azure Content Understanding:支持音视频内容处理、结构化字段提取(比如发票金额、合同条款、会议核心信息等,以YAML头形式输出),可自定义行业专属分析规则。

部署安装要求

使用MarkItDown需要本地环境预装Python 3.10及以上版本,官方推荐使用虚拟环境安装,避免依赖冲突。

安装方式支持两种:

  1. 直接通过pip安装:可按需选择依赖包,若需要所有格式的转换能力,执行pip install 'markitdown[all]';若仅需要处理部分格式,比如仅转换PDF、Word、PPT,可执行pip install 'markitdown[pdf, docx, pptx]'减少不必要的依赖。
  2. 拉取源码编译安装,适合需要自定义修改的场景。

此外也支持Docker镜像部署,方便集成到企业现有技术栈中。

典型使用方式

工具提供三种使用路径,适配不同业务场景:

  1. 命令行使用:适合非开发人员批量转换文件,直接执行markitdown 输入文件路径 -o 输出Markdown路径即可,也支持管道输入适配批量处理脚本。
  2. Python API调用:适合集成到企业自有业务系统,比如RAG系统的语料加工环节,可自行配置是否开启插件、是否对接大模型做图片识别、是否对接Azure云服务等。
  3. 对接Azure云服务:如果有扫描件识别、结构化字段提取、音视频转写等进阶需求,可对接对应的Azure服务,该类服务按调用量计费,可自行配置仅指定格式的文件走云端转换,控制成本。

安全与使用提示

MarkItDown会继承当前运行进程的权限访问系统资源,在不可信的运行环境中使用时,必须先对输入文件做安全校验,尽量调用范围最小的转换函数,避免安全风险。

插件默认处于关闭状态,需要使用时手动开启即可,第三方插件需自行评估安全性后再启用。如果对接公网大模型做OCR或图片识别,需注意业务数据的隐私合规问题,涉密数据不要上传公网大模型。

许可证与采用建议

项目采用MIT许可证,企业可免费商用,也可修改代码后二次分发,无开源约束。

企业选型建议:如果仅需要本地转换常规格式的文档喂给大模型,使用内置的免费转换能力即可,仅消耗本地算力;如果有扫描件识别、结构化字段提取、音视频转写等进阶需求,再评估对接Azure付费服务的成本与收益;如果有特殊格式的转换需求,可基于插件体系自行开发适配。

可核对的事实层

官方资料与来源

查看来源 →
  • autogen
  • autogen-extension
  • langchain
  • markdown
  • microsoft-office
  • openai
  • pdf
默认分支main
关注仓库571
复刻次数13.0k
开放议题900
近期更新2026/8/27
仓库状态未标记归档
上游部署线索
## Prerequisites
MarkItDown requires Python 3.10 or higher. It is recommended to use a virtual environment to avoid dependency conflicts.

With the standard Python installation, you can create and activate a virtual environment using the following commands:

```bash
python -m venv .venv
source .venv/bin/activate
```

If using `uv`, you can create a virtual environment with:

```bash
uv venv --python=3.12 .venv
source .venv/bin/activate

该片段来自项目 README,仅用于初步判断;实际部署请以官方文档为准。

核对上游原始说明节选

Python tool for converting files and office documents to Markdown.

MarkItDown

PyPI PyPI - Downloads Built by AutoGen Team

[!IMPORTANT]
MarkItDown performs I/O with the privileges of the current process. Like open() or requests.get(), it will access resources that the process itself can access. Sanitize your inputs in untrusted environments, and call the narrowest convert function needed for your use case (e.g., convertstream(), or convertlocal()). See the Security Considerations section of the documentation for more information.

MarkItDown is a lightweight Python utility for converting various files to Markdown for use with LLMs and related text analysis pipelines. To this end, it is most comparable to textract, but with a focus on preserving important document structure and content as Markdown (including: headings, lists, tables, links, etc.) While the output is often reasonably presentable and human-friendly, it is meant to be consumed by text analysis tools -- and may not be the best option for high-fidelity document conversions for human consumption.

MarkItDown currently supports the conversion from:

  • PDF
  • PowerPoint
  • Word
  • Excel
  • Images (EXIF metadata and OCR)
  • Audio (EXIF metadata and speech transcription)
  • HTML
  • Text-based formats (CSV, JSON, XML)
  • ZIP files (iterates over contents)
  • YouTube URLs
  • EPubs
  • ... and more!

Why Markdown?

Markdown is extremely close to plain text, with minimal markup or formatting, but still provides a way to represent important document structure. Mainstream LLMs, such as OpenAI's GPT-4o, natively "speak" Markdown, and often incorporate Markdown into their responses unprompted. This suggests that they have been trained on vast amounts of Markdown-formatted text, and understand it well. As a side benefit, Markdown conventions are also highly token-efficient.

Prerequisites

MarkItDown requires Python 3.10 or higher. It is recommended to use a virtual environment to avoid dependency conflicts.

With the standard Python installation, you can create and activate a virtual environment using the following commands:

python -m venv .venv
source .venv/bin/activate

If using uv, you can create a virtual environment with:

uv venv --python=3.12 .venv
source .venv/bin/activate
# NOTE: Be sure to use 'uv pip install' rather than just 'pip install' to install packages in this virtual environment

If you are using Anaconda, you can create a virtual environment with:

conda create -n markitdown python=3.12
conda activate markitdown

Installation

To install MarkItDown, use pip: pip install 'markitdown[all]'. Alternatively, you can install it from the source:

git clone git@github.com:microsoft/markitdown.git
cd markitdown
pip install -e 'packages/markitdown[all]'

Usage

Command-Line

markitdown path-to-file.pdf > document.md

Or use -o to specify the output file:

markitdown path-to-file.pdf -o document.md

You can also pipe content:

cat path-to-file.pdf | markitdown

Optional Dependencies

MarkItDown has optional dependencies for activating various file formats. Earlier in this document, we installed all optional dependencies with the [all] option. However, you can also install them individually for more control. For example:

pip install 'markitdown[pdf, docx, pptx]'

will install only the dependencies for PDF, DOCX, and PPTX files.

At the moment, the following optional dependencies are available:

  • [all] Installs all optional dependencies
  • [pptx] Installs dependencies for PowerPoint files
  • [docx] Installs dependencies for Word files
  • [xlsx] Installs dependencies for Excel files
  • [xls] Installs dependencies for older Excel files
  • [pdf] Installs dependencies for PDF files
  • [outlook] Installs dependencies for Outlook messages
  • [az-doc-intel] Installs dependencies for Azure Document Intelligence
  • [az-content-understanding] Installs dependencies for Azure Content Understanding
  • [audio-transcription] Installs dependencies for audio transcription of wav and mp3 files
  • [youtube-transcription] Installs dependencies for fetching YouTube video transcription

Plugins

MarkItDown also supports 3rd-party plugins. Plugins are disabled by default. To list installed plugins:

markitdown --list-plugins

To enable plugins use:

markitdown --use-plugins path-to-file.pdf

To find available plugins, search GitHub for the hashtag #markitdown-plugin. To develop a plugin, see packages/markitdown-sample-plugin.

markitdown-ocr Plugin

The markitdown-ocr plugin adds OCR support to PDF, DOCX, PPTX, and XLSX converters, extracting text from embedded images using LLM Vision — the same llmclient / llmmodel pattern that MarkItDown already uses for image descriptions. No new ML libraries or binary dependencies required.

Installation:

pip install markitdown-ocr
pip install openai  # or any OpenAI-compatible client

Usage:

Pass the same llmclient and llmmodel you would use for image descriptions:

from markitdown import MarkItDown
from openai import OpenAI

md = MarkItDown(
    enable_plugins=True,
    llm_client=OpenAI(),
    llm_model="gpt-4o",
)
result = md.convert("document_with_images.pdf")
print(result.text_content)

If no llmclient is provided the plugin still loads, but OCR is silently skipped and the standard built-in converter is used instead.

See packages/markitdown-ocr/README.md for detailed documentation.

Azure Content Understanding

Azure Content Understanding provides higher-quality conversion with structured field extraction (YAML front matter), multi-modal support (documents, images, audio, video), and configurable analyzers.

Install: pip install 'markitdown[az-content-understanding]'

When to use Content Understanding

Content Understanding is ideal when you need capabilities beyond what built-in or Document Intelligence converters provide:

  • Audio and video files — CU is the only option for video, and the higher-quality cloud option for audio. Built-in converters have no video support and only basic audio transcription.
  • Structured field extraction — Prebuilt or custom-built analyzers extract domain-specific fields (invoice amounts, receipt dates, contract clauses) serialized as YAML front matter. Neither built-in nor Doc Intel integration exposes fields.
  • Higher-quality document extraction — Cloud-based layout analysis and OCR for scanned PDFs, complex tables, and multi-page documents.
  • Single API for all modalities — One cuendpoint handles documents, images, audio, and video with automatic analyzer routing.

| Capability | Built-in converters | Azure Document Intelligence | Azure Content Understanding | |------------|---------------------|-----------------------------|-----------------------------| | Document conversion | Offline, format-specific extraction | Cloud layout extraction | Cloud multimodal extraction | | Structured fields | Not available | Not exposed by this integration | YAML front matter from analyzer fields | | Custom analyzers | Not available | Not configurable in this integration | Supported with cuanalyzerid | | Audio and video | Basic audio, no video | Not supported | Audio and video analyzers | | Cost | Local compute only | Billable Azure API calls | Billable Azure API calls |

CLI:

markitdown path-to-file.pdf --use-cu --cu-endpoint "<content_understanding_endpoint>"

Python API:

from markitdown import MarkItDown

# Zero-config — auto-selects analyzer per file type
md = MarkItDown(cu_endpoint="<content_understanding_endpoint>")
result = md.convert("report.pdf")   # documents → prebuilt-documentSearch
result = md.convert("meeting.mp4")  # video → prebuilt-videoSearch
result = md.convert("call.wav")     # audio → prebuilt-audioSearch
print(result.markdown)

With a custom analyzer (for domain-specific field extraction):

md = MarkItDown(
    cu_endpoint="<content_understanding_endpoint>",
    cu_analyzer_id="my-invoice-analyzer",
)
result = md.convert("invoice.pdf")
print(result.markdown)
# Output includes YAML front matter with extracted fields:
# ---
# contentType: document
# fields:
#   VendorName: CONTOSO LTD.
#   InvoiceDate: '2019-11-15'
# ---
# <!-- page 1 -->
# ...

When cuanalyzerid is set, the converter automatically scopes it to compatible file types based on the analyzer's modality. Incompatible types (e.g., audio files with a document analyzer) auto-route to default prebuilt analyzers.

Cost note: Each convert() call for a CU-routed format is a billable Azure API call. Use cufiletypes to restrict which formats route to CU:

from markitdown.converters import ContentUnderstandingFileType

md = MarkItDown(
    cu_endpoint="<content_understanding_endpoint>",
    cu_file_types=[ContentUnderstandingFileType.PDF],  # only PDFs use CU
)

More information about Azure Content Understanding can be found here.

Azure Document Intelligence

To use Microsoft Document Intelligence for conversion:

markitdown path-to-file.pdf -o document.md -d -e "<document_intelligence_endpoint>"

More information about how to set up an Azure Document Intelligence Resource can be found here

Python API

Basic usage in Python:

from markitdown import MarkItDown

md = MarkItDown(enable_plugins=False) # Set to True to enable plugins
result = md.convert("test.xlsx")
print(result.text_content)

Document Intelligence conversion in Python:

from markitdown import MarkItDown

md = MarkItDown(docintel_endpoint="<document_intelligence_endpoint>")
result = md.convert("test.pdf")
print(result.text_content)

To use Large Language Models for image descriptions (currently only for pptx and image files), provide llmclient and llmmodel:

from markitdown import MarkItDown
from openai import OpenAI

client = OpenAI()
md = MarkItDown(llm_client=client, llm_model="gpt-4o", llm_prompt="optional custom prompt")
result = md.convert("example.jpg")
print(result.text_content)

Docker

docker build -t markitdown:latest .
docker run --rm -i markitd