はじめに
以前、IBM 製の Docling を使って資料をマークダウン形式に変更しました。
Docling は複雑なレイアウトのPDFでも高い精度で変換できる優秀なツールですが、
初回実行時にAIモデルのダウンロードが必要で、変換処理自体もそれなりに時間がかかります。
もう少し軽い選択肢はないかと探して見つけたのが、Microsoft 製の MarkItDown です。
この記事では Docling と同じ PDF・XLSX・PPTX の3フォーマットを対象に、MarkItDown での変換方法を紹介します。
MarkItDown とは
MarkItDown は Microsoft がオープンソースで公開しているドキュメント変換ツールです。
PDF・DOCX・PPTX・XLSX・HTML・画像・音声・YouTube URL など、多数のフォーマットをMarkdownに変換できます。
Docling との大きな違いは処理速度です。
Docling がAIモデルを使ってレイアウト解析を行うのに対し、
MarkItDown はルールベースの軽量な処理で変換するため処理が速くなります。
0. 環境準備
前提条件
- Python 3.10 以上
- macOS / Linux / Windows いずれも OK(本記事のコマンド例は bash 前提です)
インストール
公式READMEで案内されている方法は、仮想環境を作成してから pip install する方法です。
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install 'markitdown[all]'
[all] を指定すると、PDF・DOCX・PPTX・XLSX など全フォーマットの依存パッケージがまとめてインストールされます。必要なものだけに絞りたい場合は、個別に指定できます。
# PDF・DOCX・PPTXだけ使いたい場合
pip install 'markitdown[pdf,docx,pptx]'
pipx を使えば仮想環境の管理なしにCLIツールとしてインストールすることも可能です。
pipx install 'markitdown[all]'
動作確認
markitdown --version
以降のハンズオンで使う PDF・XLSX・PPTX ファイルは各自で用意してください。
1. PDF → Markdown 変換
基本
markitdown sample.pdf
変換結果は標準出力に表示されます。ファイルに保存したい場合は -o オプションを使います。
markitdown sample.pdf -o output.md
画像の扱い
Docling には --image-export-mode referenced で画像をPNGファイルとして出力するオプションがありましたが、MarkItDown にはこの機能がありません。デフォルトではMarkdown中の画像(Base64のdata URI)は切り詰められます。
Base64データを保持したい場合は --keep-data-uris を付けます。
markitdown sample.pdf -o output.md --keep-data-uris
2. XLSX → Markdown 変換
markitdown sheet.xlsx -o sheet.md
シートの内容がMarkdownテーブルに変換されます。複数シートがある場合は、全シートが1つのMarkdownに連結されます。
出力例:
| 商品名 | 単価 | 数量 | 合計 |
|--------|------|------|------|
| リンゴ | 150 | 10 | 1500 |
| みかん | 100 | 20 | 2000 |
| バナナ | 200 | 5 | 1000 |
3. PPTX → Markdown 変換
markitdown presentation.pptx -o presentation.md
スライドのタイトルは見出し、箇条書きはリスト、テーブルはMarkdownテーブルとして出力されます。
画像を含めたい場合は、PDFと同様に --keep-data-uris を付けます。
markitdown presentation.pptx -o presentation.md --keep-data-uris
4. Claude Code / Claude Desktop に組み込む(MarkItDown MCP)
私はまだ試せていませんが、MarkItDown は公式で MCP サーバーを提供しています。
設定すると、Claude との会話の中で「このPDFをMarkdownに変換して」のような指示だけで変換できます。
セットアップ
Claude Code の場合、プロジェクトルートの .mcp.json に以下を追加します。
{
"mcpServers": {
"markitdown": {
"command": "markitdown-mcp"
}
}
}
markitdown-mcp は markitdown 本体とは別パッケージなので、別途インストールが必要です。
pip install markitdown-mcp
公式の markitdown-mcp README ではセキュリティ上の理由から Docker 経由での利用が推奨されています。Docker を使う場合は以下のように設定します。
{
"mcpServers": {
"markitdown": {
"command": "docker",
"args": ["run", "-i", "--rm", "markitdown-mcp"]
}
}
}
Claude Desktop の場合は、設定ファイルに同じ内容を書きます。
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
使い方
設定後は、Claude に自然言語で依頼するだけです。
ユーザー: /path/to/report.pdf をMarkdownに変換して
内部で convert_to_markdown ツールが呼び出され、変換結果が返ってきます。file: パスだけでなく https: の URL を渡すこともできます。
まとめ
MarkItDown は軽量・高速にドキュメントをMarkdownに変換できるツールです。
Docling のような高精度なレイアウト解析はできませんが、日常的なファイル変換には十分実用的です。
画像のファイル出力機能がない点はDoclingに劣りますが、処理の軽さとセットアップの手軽さは大きなメリットです。用途に応じて使い分けるのがよさそうです。