自動化

MarkItDown(マークイットダウン)とは|各種ファイルをMarkdownに変換するMicrosoft製Pythonツール

MarkItDown(読み方はマークイットダウン)は、Microsoftが公開するオープンソースのPythonツールで、PDF・Word・Excel・PowerPoint・画像・音声・HTMLなどをMarkdownテキストへ変換します。エディタではなく「ファイル→Markdownの変換器」で、狙いは生成AIやRAG(検索拡張生成)に読ませやすい形へ文書を前処理することです。この記事では、読み方・仕組み・対応形式・pipでのインストール・CLIとPython APIの使い方・ライセンス・他言語対応まで、公式仕様に沿って整理します。

目次

まとめ:MarkItDownはLLM前処理用の「ファイル→Markdown」変換ツール

  • 正体:Microsoft製・MITライセンスのオープンソースPythonツール/CLI。GitHubは microsoft/markitdown。読み方はマークイットダウン。
  • 変換方向:PDFやOffice文書などをMarkdownに変換する。Markdownを編集・プレビューするエディタではない。
  • 用途:生成AI・RAG・全文検索に渡すためのテキスト抽出(前処理)。Markdownは記号が軽くトークン効率が良い。
  • 導入pip install 'markitdown[all]'(Python 3.10 以上)。Windows/Mac/Linux共通。
  • 使い方:CLIは markitdown file -o out.md、Pythonは MarkItDown().convert() の1行。

MarkItDownとは|読み方と「何をするツール」なのか

MarkItDownは2024年末にMicrosoftが公開したオープンソースで、リポジトリは microsoft/markitdown、パッケージはPyPIの markitdown です。読み方は「マークイットダウン」。名前がMarkdownに似ているため誤解されがちですが、Markdownを書くためのエディタではなく、既存ファイルをMarkdownへ変換するツールです。

変換方向は「各種ファイル → Markdown」の一方向

MarkItDownが受け取るのはPDFやWord、Excelなどの入力ファイルで、出力はMarkdown文字列です。「MarkdownをPDFに書き出す」「Markdownをリアルタイムプレビューする」といった逆方向・編集用途は守備範囲外です。ここを取り違えると使いどころを外すため、最初に押さえておきます。

なぜMarkdownへ変換するのか(LLM・RAGの前処理)

大規模言語モデルに文書を渡すとき、PDFやDOCXのバイナリをそのまま入力することはできません。MarkItDownは見出し・箇条書き・表・リンクといった文書構造を保ったままMarkdownに落とすため、モデルが文脈を読み取りやすくなります。Markdownは装飾記号が少なくトークン消費も抑えられるため、RAGの取り込み前処理やナレッジベース構築の定番として使われます。文書のベクトル化についてはベクトルデータベースとグラフデータベースの違いもあわせて確認すると、前処理から検索までの流れがつかめます。

Microsoft製・MITライセンスのオープンソース

ライセンスはMIT。個人利用も商用利用も無償で、改変・再配布も許容されます。開発はGitHub上で続いており、変換器の追加やプラグイン機構の整備が進んでいます(最新の対応状況は公式リポジトリで確認してください)。

MarkItDownの仕組み|形式ごとの変換器で構造を抽出

MarkItDownは、入力ファイルの拡張子やMIMEタイプから形式を判定し、形式ごとの専用コンバータに処理を振り分けます。WordやExcel、PowerPointはドキュメント内部の見出し・表・リストといった構造情報を読み取り、対応するMarkdown記法へマッピングします。処理は基本的にメモリ上で行われ、変換結果は result.text_content にMarkdown文字列として返ります。

構造(見出し・表・リンク)をできるだけ保持する

単純にテキストを抜き出すのではなく、WordのheadingはMarkdownの見出しへ、Excelのシートは表(パイプ記法)へ、といった形で構造を残します。これにより、変換後のテキストでも文書の階層や表の意味が失われにくく、LLMが要約・抽出しやすくなります。表の抽出精度は元ファイルのレイアウトに依存するため、複雑な結合セルなどは変換後に目視確認するのが安全です。

MarkItDownが対応するファイル形式

MarkItDownは文書・表計算・スライドから画像・音声・Web・アーカイブまで幅広く対応します。主な対応形式は次のとおりです(対応は拡張が続くため、最新は公式で確認してください)。

分類 対応形式 補足
文書 PDF / DOCX / PPTX 見出し・表・スライド構造を抽出
表計算 XLSX / XLS シートを表形式のMarkdownへ
Web / テキスト HTML / CSV / JSON / XML 構造化データも整形
画像 JPG / PNG Exif取得。説明生成はLLM併用
音声 WAV / MP3 文字起こし(要オプション依存)
その他 EPub / ZIP / Outlook(.msg) / YouTube URL ZIPは中身を再帰処理、YouTubeは字幕を取得

PDFやスライド内の図表を文章化したい場合は、後述のLLM併用やAzure Document Intelligence連携が必要になります。PDF処理をより細かく制御したいなら、PyMuPDF(fitz)とはや、RAG前処理に特化したPyMuPDF4LLMの使い方と役割を比べて選ぶとよいでしょう。

MarkItDownのインストール方法(Windows/Mac/Linux共通)

MarkItDownはPyPIで配布されるPythonパッケージです。Python 3.10 以上があれば、OSを問わずpipで導入できます。専用インストーラやGUIアプリはありません。

pipで全形式対応を入れる

最も手早いのは、全形式の依存をまとめて入れる方法です。

# 必要な形式だけを入れる(依存を最小化)
pip install 'markitdown[pdf,docx,pptx]'

# 音声の文字起こしや YouTube 字幕が要るとき
pip install 'markitdown[audio-transcription,youtube-transcription]'

上のように、必要な形式だけを角括弧で指定して依存を最小化することもできます。[all] はPDF・DOCX・PPTX・XLSXなど主要形式を一括で有効化します。

pip install 'markitdown[all]'

Windows・Mac・Linuxでの違い

導入コマンドは3つのOSで共通です。差が出るのは音声文字起こしなど一部の外部依存だけで、基本フローは「Pythonを用意 → pipで入れる」で変わりません。仮想環境(venv)内に入れると、プロジェクトごとに依存を分離できて安全です。

Homebrewでの扱い(macOS)

「markitdown homebrew」で探す人が多いですが、MarkItDownはPyPI配布のPythonツールで、Homebrew公式formulaはありません(2026年時点、最新は公式で確認)。Homebrew環境で使うなら、コマンドとして独立させられる pipx 経由が扱いやすい方法です。

# Homebrew 環境では pipx 経由が手堅い
brew install pipx
pipx install markitdown

MarkItDownの使い方|CLIとPython API

使い方は大きく2通りです。単発の変換ならCLI、パイプラインへ組み込むならPython APIを使います。

CLIで1ファイルを変換する

# 全形式対応でインストール(Python 3.10 以上)
pip install 'markitdown[all]'

# 1ファイルを変換して標準出力へ
markitdown sample.pdf

# 出力をファイルに保存
markitdown sample.pdf -o sample.md

# 標準入力から渡す(-x で拡張子ヒントを付ける)
cat sample.pdf | markitdown -x pdf > sample.md

-o(または --output)で出力先を指定します。指定しなければ標準出力へ返るので、リダイレクトでも保存できます。

Python APIで組み込む

Pythonからは MarkItDown クラスを生成し、convert() にパスやURLを渡すだけです。戻り値の text_content がMarkdown文字列です。

from markitdown import MarkItDown

md = MarkItDown()                 # 変換器を用意
result = md.convert("sample.xlsx")  # ファイルを渡すだけ
print(result.text_content)         # 変換後の Markdown 文字列

# URL や YouTube も同じ convert() で渡せる
result = md.convert("https://ja.wikipedia.org/wiki/Markdown")
print(result.text_content)

この数行をそのままRAGの取り込み処理やバッチ変換に組み込めます。変換後のMarkdownを生成AIへ渡す実装は、OpenAI Python SDKの使い方と組み合わせるとつながりが見えます。

MarkItDownの高度な使い方(画像・PDF精度・プラグイン・MCP)

標準の抽出で足りないときは、外部サービスやLLMを併用して精度を上げられます。

Azure Document Intelligenceで複雑PDFを処理

スキャンPDFや段組み・複雑レイアウトのPDFは、標準のPDF抽出だと崩れることがあります。エンドポイントを渡してAzure Document Intelligenceに委ねると、抽出品質を上げられます。

from markitdown import MarkItDown

# スキャンPDFや複雑レイアウトは Azure Document Intelligence を併用
md = MarkItDown(docintel_endpoint="https://<your-endpoint>.cognitiveservices.azure.com/")
result = md.convert("scanned.pdf")
print(result.text_content)

# CLI でも同じことができる(-d で利用、-e でエンドポイント指定)
# markitdown scanned.pdf -d -e "https://<your-endpoint>.cognitiveservices.azure.com/"

クラウド型の文書解析としてはGoogle Document AI(ドキュメントAI)とはも比較対象になります。

LLMで画像・スライドを説明文にする

画像やPPTX内の図をテキスト化したい場合は、LLMクライアントを渡すと説明文を生成させられます(対象は画像とPPTX)。

from markitdown import MarkItDown
from openai import OpenAI

client = OpenAI()
# 画像やスライド内の図を LLM に説明させる(対象は画像/PPTX)
md = MarkItDown(llm_client=client, llm_model="gpt-4o")
result = md.convert("slide.pptx")
print(result.text_content)

プラグインとMCPサーバー・Dify連携

MarkItDownはプラグイン機構を持ち、markitdown.plugin エントリポイントで独自コンバータを追加できます。プラグインは既定で無効なので、明示的に有効化して使います。また、MCP(Model Context Protocol)サーバー版(markitdown-mcp)を使えば、Claude Desktopなどのクライアントから会話中に変換を呼び出せます。Difyなどのワークフローツールで「markitdown dify」と組み合わせる場合は、Difyのコード実行ノードでmarkitdownを呼ぶか、カスタムツールとしてmarkitdown-mcp/CLIをラップしたエンドポイントを登録し、アップロードされた文書を変換してから後段のLLM・ナレッジ検索ノードへ渡す構成が基本です。ファイルを直接LLMに渡さず、いったんMarkdownへ正規化することでトークン消費と抽出漏れを抑えられます。

他言語(Java・JavaScript・.NET)から使えるか

公式のMarkItDownはPython実装のみで、Java・JavaScript・.NET向けの公式ライブラリは提供されていません(2026年時点)。これらの言語から使いたい場合は、(1)Pythonのmarkitdown-mcpやCLIを別プロセスとして呼び出す、(2)有志によるポートや同種の変換ライブラリを使う、のいずれかになります。安定運用を重視するなら、公式Pythonツールをマイクロサービス化してREST/MCPで叩く構成が無難です。

MarkItDownの制限|エディタ非対応・画像/スキャンPDF・表再現の限界

「エディタ」ではない

繰り返しになりますが、MarkItDownにGUIやリアルタイムプレビュー、ショートカット編集はありません。Markdownを書く・整形する用途には、別のMarkdownエディタを使います。

画像・スキャンPDFはそのままではテキスト化されない

画像内の文字や画像ベースのPDFは、標準では本文として抽出されません。前述のLLM併用やAzure Document Intelligence、OCRプラグインなどを組み合わせる必要があります。

表・レイアウトの再現には限界がある

複雑な結合セルや多段組みは、Markdownの表現力の範囲でしか再現できません。重要な表は変換後に目視確認し、必要なら元ファイル側を整えると精度が上がります。

よくある質問(FAQ)

MarkItDownの読み方は?

「マークイットダウン」と読みます。Markdown(マークダウン)とは別物で、各種ファイルをMarkdownへ変換するツールです。

MarkItDownは無料ですか?

無料です。MITライセンスのオープンソースで、商用利用も可能です。ただしAzure Document IntelligenceやLLM APIを併用する場合、それら外部サービスの利用料は別途かかります。

Homebrewでインストールできますか?

公式のHomebrew formulaはありません(2026年時点)。macOSでは pip install 'markitdown[all]'、またはコマンド化したいなら pipx install markitdown を使います。

MarkItDownとPyMuPDF4LLMの違いは?

MarkItDownはPDF以外も含む多形式をまとめて扱う汎用変換ツール、PyMuPDF4LLMはPDFに特化してRAG向けMarkdownを高精度に生成するツールです。PDF中心なら後者、Office文書や音声・画像も混在するなら前者が向きます。

JavaやJavaScriptから使えますか?

公式はPythonのみです。他言語からはCLI/MCPサーバーを別プロセスとして呼び出す形が現実的です。

関連記事

資料請求

RELATED POSTS 関連記事