技術 約3分で読めます

MarkItDown — MicrosoftのドキュメントをMarkdownに変換するPythonツール

LLMにドキュメントを読ませたいとき、PDFやWordをそのまま渡すのは難しい。テキスト抽出してMarkdownに変換できれば、構造を保ったまま処理できる。Microsoftが公開している MarkItDown はまさにそのためのツールで、GitHubスター数8万超えと注目度が高い。

MarkItDownとは

MarkItDown は、さまざまなファイル形式をMarkdownに変換するPythonユーティリティ。AutoGen(Microsoft製のマルチエージェントフレームワーク)チームが開発している。

似たツールに textract があるが、MarkItDownは見出し・リスト・テーブル・リンクなどの文書構造をMarkdownとして保持することに重点を置いている。

対応フォーマット

かなり幅広い。

形式備考
PDFpdfminer使用
Word (.docx)python-docx使用
PowerPoint (.pptx)python-pptx使用
Excel (.xlsx, .xls)openpyxl使用
HTMLBeautifulSoup使用
画像EXIF抽出、LLM経由でOCR可
音声EXIF抽出、LLM経由で文字起こし可
CSV, JSON, XMLプレーンテキストとして処理
ZIP内部ファイルを再帰的に処理
EPUB電子書籍
Jupyter Notebook.ipynb
Outlook MSGメール
YouTube URL字幕取得
RSS, Wikipedia, Bing SERPWeb系

インストール

Python 3.10以上が必要。

# 全形式対応(推奨)
pip install 'markitdown[all]'

# 特定形式のみ
pip install 'markitdown[pdf,docx,pptx]'

M1/M2 Macでも問題なく動作する。純粋なPythonライブラリで、ネイティブバイナリ依存がほぼない。

基本的な使い方

CLI

# ファイル変換
markitdown document.pdf > output.md

# 出力ファイル指定
markitdown document.pdf -o output.md

# パイプ
cat document.pdf | markitdown

Python API

from markitdown import MarkItDown

md = MarkItDown()
result = md.convert("document.xlsx")
print(result.text_content)

LLMによる画像説明

OpenAI互換のクライアントを渡すと、画像やPowerPointのスライドに説明文を付けられる。

from markitdown import MarkItDown
from openai import OpenAI

client = OpenAI()
md = MarkItDown(
    llm_client=client,
    llm_model="gpt-4o"
)
result = md.convert("presentation.pptx")
print(result.text_content)

MCPサーバー対応

markitdown-mcp パッケージを使うと、Claude DesktopやClaude CodeからMCP経由でドキュメント変換を呼び出せる。

pip install markitdown-mcp

.mcp.json の設定例:

{
  "mcpServers": {
    "markitdown": {
      "type": "stdio",
      "command": "markitdown-mcp"
    }
  }
}

これで「このPDFを読んで」とClaudeに頼むだけで、内部でMarkdown変換が走る。

関連: OCRとの使い分け

MarkItDownはあくまで構造化されたドキュメントからのテキスト抽出が得意。スキャンPDFや画像からのOCRは外部サービス(OpenAI API等)に依存する。

ローカル完結でOCRしたい場合は別のアプローチが必要:

MarkItDownはこれらのOCR結果を後処理するパイプラインとしても使える。

制限事項

  • レイアウト再現が目的ではない: 人間が読むための高忠実度変換ではなく、LLM/テキスト分析向け
  • 画像OCR・音声文字起こし: 外部API(OpenAI等)が必要
  • v0.1.0での破壊的変更: 依存がオプションのfeature-groupに再編成された

リポジトリ情報