技術
約3分で読めます
MarkItDown — MicrosoftのドキュメントをMarkdownに変換するPythonツール
LLMにドキュメントを読ませたいとき、PDFやWordをそのまま渡すのは難しい。テキスト抽出してMarkdownに変換できれば、構造を保ったまま処理できる。Microsoftが公開している MarkItDown はまさにそのためのツールで、GitHubスター数8万超えと注目度が高い。
MarkItDownとは
MarkItDown は、さまざまなファイル形式をMarkdownに変換するPythonユーティリティ。AutoGen(Microsoft製のマルチエージェントフレームワーク)チームが開発している。
似たツールに textract があるが、MarkItDownは見出し・リスト・テーブル・リンクなどの文書構造をMarkdownとして保持することに重点を置いている。
対応フォーマット
かなり幅広い。
| 形式 | 備考 |
|---|---|
| pdfminer使用 | |
| Word (.docx) | python-docx使用 |
| PowerPoint (.pptx) | python-pptx使用 |
| Excel (.xlsx, .xls) | openpyxl使用 |
| HTML | BeautifulSoup使用 |
| 画像 | EXIF抽出、LLM経由でOCR可 |
| 音声 | EXIF抽出、LLM経由で文字起こし可 |
| CSV, JSON, XML | プレーンテキストとして処理 |
| ZIP | 内部ファイルを再帰的に処理 |
| EPUB | 電子書籍 |
| Jupyter Notebook | .ipynb |
| Outlook MSG | メール |
| YouTube URL | 字幕取得 |
| RSS, Wikipedia, Bing SERP | Web系 |
インストール
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したい場合は別のアプローチが必要:
- PaddleOCR-VL — VLMベースで構造認識に強い
- NDLOCR — 高精度な日本語OCR
- VLMベースOCR — DeepSeek-OCRなどのハイブリッド活用
MarkItDownはこれらのOCR結果を後処理するパイプラインとしても使える。
制限事項
- レイアウト再現が目的ではない: 人間が読むための高忠実度変換ではなく、LLM/テキスト分析向け
- 画像OCR・音声文字起こし: 外部API(OpenAI等)が必要
- v0.1.0での破壊的変更: 依存がオプションのfeature-groupに再編成された
リポジトリ情報
- GitHub: https://github.com/microsoft/markitdown
- ライセンス: MIT
- 最新安定版: v0.1.4(2025年12月)
- スター数: 86,000+