今日は昨日の内容の続きです。トラブルシューティングは長くなったので今日はやめにして、Microsoft MarkItDown とPandocの違いについて昨日はこのように書きました。
・Pandoc = 文書形式どうしを構造的に変換する汎用コンバーター、
・MarkItDown = PDFやOfficeファイルなどから、LLMが読みやすいMarkdownを取り出すためのマイクロソフトが無料で公開しているツールです。日本語の簡単な比較は次の記事などを参照してください。
技術調査 – markitdown (に公開)https://zenn.dev/suwash/articles/markitdown_20260410
今日はPandocとMarkItDownの違いについて、ChatGPTに教えてもらった内容を少し改変したものをペーストしておきます。
MarkItDown と Pandoc の違い
一言でいうと、
Pandoc = 文書形式どうしを構造的に変換する汎用コンバーター
MarkItDown = PDFやOfficeファイルなどから、LLMが読みやすいMarkdownを取り出すためのツール
です。Microsoft自身もMarkItDownを「各種ファイルをMarkdownへ変換し、indexing や text analysis などに利用するPythonパッケージ/CLI」と位置づけています。PDF、DOCX、PPTX、XLSXなどに対応しています。 (GitHub)
| 項目 | Pandoc | Microsoft MarkItDown |
|---|---|---|
| 主目的 | 文書形式の相互変換 | 文書内容をMarkdown化 |
| Markdown → DOCX | ◎ | 基本目的ではない |
| Markdown → PPTX | ◎ | 基本目的ではない |
| DOCX → Markdown | ◎ | ◎ |
| PPTX → Markdown | ◎(現在は対応) | ◎ |
| PDF → Markdown | 現行版では入力対応あり | 得意分野 |
| XLSX → Markdown | 現行版で対応 | ◎ |
| OCR | 基本機能ではない | OCR拡張あり |
| LLM投入用テキスト作成 | ○ | ◎ |
| 書式の相互変換 | ◎ | △ |
| Pythonが必要 | 不要 | 必要 |
Pandocは内部で文書をAST(文書構造)に変換してから別形式へ書き出す設計で、見出し、リスト、表、数式などの文書構造をなるべく保つことを重視しています。ただし元形式のすべてのレイアウトを完全保存できるわけではありません。 (Pandoc)
最近のPandocは以前よりかなり強くなっています
ここは少し重要です。以前は、
PPTX → Markdown はPandocでは難しい
という説明が一般的でしたが、Pandoc 3.8.3(2025年12月)でPPTXが入力形式として追加されました。XLSX入力も同じバージョンで追加されています。 (Pandoc)
今回インストールした Pandoc 3.10.2 はそれより新しいので、例えばコマンド
pandoc lecture.pptx -o lecture.md
を試すことができます。
現在のPandoc公式マニュアルでは、入力形式として
docx
pdf
pptx
xlsx
...
が列挙されています。 (Pandoc)
したがって、いまお使いの最新版Pandocだけでも、以前考えていた以上に逆変換ができます。
MarkItDownが特に有利なのはPDF
PDFはWordやPowerPointとは性質が違います。DOCXやPPTXには、
これは見出し
これは段落
これは表
これはスライドタイトル
という構造情報があります。一方PDFは基本的には、
この座標にこの文字を描く
この位置に画像を置く
という「完成したページ」の記述です。
そのため、
PDF → Markdown
は単なる形式変換というより、
PDFを解析して、人間が読める文書構造を再構築する
作業になります。
ここがMarkItDownの狙いとよく合っています。
MarkItDownの現在のPDF処理には pdfminer.six や pdfplumber が利用されています。 (GitHub)
基本的なコマンドも非常に単純です。
markitdown paper.pdf > paper.md
Microsoftの公式READMEにも、この形が示されています。 (GitHub)
PowerPointではMarkItDownは何を取り出すか
PPTXの場合、MarkItDownは例えば、
# Slide 1
タイトル
本文……
# Slide 2
タイトル
- 箇条書き
- 箇条書き
のように、スライドの内容を文章として再利用しやすいMarkdownへ変換する方向です。
PPTXコンバーターは現在もMicrosoftのMarkItDown本体に組み込まれています。 (GitHub)
ですから、
昔の講義のPowerPointをMarkdownにして、ChatGPTに渡して教材を改訂する
という用途には非常に向いています。
MarkItDownはLLM利用を強く意識している
これがPandocとの大きな思想の違いです。例えば昔の講義スライド
lecture_2015.pptx
を、
lecture_2015.pptx
↓
MarkItDown
↓
lecture_2015.md
↓
LLM
↓
内容更新・要約・再構成
という形で使えます。
PDF論文なら、
paper.pdf
↓
MarkItDown
↓
paper.md
↓
ChatGPT / その他のLLM
となります。
つまりMarkItDownのMarkdownは、最終配布文書というより、LLMが読みやすい中間形式と考えると理解しやすいです。
OCRもMarkItDownの方向性に合っています
Microsoftのリポジトリには現在、markitdown-ocr というOCRプラグインもあります。PDF、DOCX、PPTX、XLSX内の画像から、LLM Visionを利用して文字を取り出す仕組みです。 (GitHub)
したがって、
スキャンPDF
↓
OCR
↓
Markdown
という用途まで視野に入っています。
これは通常のPandocが本来得意としている領域ではありません。
ただしMarkItDownも完全な「レイアウト復元」ではない
ここは注意が必要です。例えばPowerPointの
┌─────────────┐
│ 図 │ 解説文 │
│ │ │
└─────────────┘
という視覚的配置を、
# タイトル
図
解説文
へ変えるわけなので、元のレイアウトは基本的に失われます。
複雑な表やPDFの段組みなどでも、完全に元文書を再現できるとは限りません。実際、MarkItDownのIssueでもPDF/PPTXの構造化Markdown変換やDOCX表などについて改善課題が継続して報告されています。 (GitHub)
したがって、
Markdown化された内容が正しいかは、人間が一度確認する
という使い方が安全です。
今回の環境なら、両方使うのがよいと思います
今回構築した環境にMarkItDownを追加すると、とても分かりやすい循環ができます。
Pandoc
Markdown ─────────────────→ Word
↑ │
│ │
│ ↓
└──────── Pandoc ─────── DOCX
PDF ──────── MarkItDown ─→ Markdown
PPTX ─────── MarkItDown ─→ Markdown
XLSX ─────── MarkItDown ─→ Markdown
↓
LLM
ただし現在はPandoc 3.10.2もPPTX/XLSX入力ができるので、実際には、
DOCX → Markdown
PPTX → Markdown
についてはPandocとMarkItDownを両方試して、結果が良い方を使うのも面白いです。
PDFについては、私はまず MarkItDownを試す方をおすすめします。
研究・教育用途ならこう使い分けると便利です
たとえば、
ChatGPTの回答を講義資料にする
ChatGPT
↓
Markdown
↓ Pandoc
DOCX
↓
Wordで仕上げ
↓
PDF
一方、
昔の教材をLLMで再利用する
古いPPTX / PDF / DOCX
↓
MarkItDown または Pandoc
↓
Markdown
↓
VS Codeで確認
↓
LLMで修正・再構成
↓
Markdown
↓ Pandoc
新しいDOCX
となります。
この「Markdownを中心にOffice文書とLLMを行き来する」仕組みは、今回作り始めたマニュアルの次の章としてちょうどよい内容だと思います。特に昔のPowerPoint教材やPDF資料を再利用する場合には、MarkItDownを追加するとかなり実用的になります。
こんな感じで、MarkItDownはLLMへの入力準備に活用して、人間が読むマニュアルはMS Wordとかpdfとかにするとよさそうですね。