WordドキュメントをMarkdownに変換する:完全ガイド

pandoc、python、またはオンラインツールを使用してMDへの変換を行う

目次

WordドキュメントをMarkdown形式に変換することは、技術ライター、開発者、コンテンツクリエイターにとって非常に一般的なタスクです。彼らは、Markdownをサポートするプラットフォーム(GitHub、GitLab、静的サイトジェネレーターであるHugoなど)にコンテンツを移行したい場合にこの作業を行います。

このガイドでは、この変換を効果的に行うための複数のアプローチとツールについて説明します。

word to markdown on the grinder

なぜWordをMarkdownに変換するのか?

Markdownは、Wordドキュメントよりもいくつかの利点があります:

  • バージョン管理に適している:テキスト形式はGitと非常に相性が良い
  • プラットフォームに依存しない:特別なソフトウェアなしでどのシステムでも読み取れる
  • 将来性がある:シンプルなテキスト形式であり、古びることはない
  • ウェブに適している:ウェブサイトやブログにHTMLに簡単に変換できる
  • 軽量:ファイルサイズがはるかに小さい
  • 自動化に適している:プログラミング的に処理しやすい

Pandocが保持するもの

  • 見出し######などに変換)
  • 太字と斜体のフォーマット
  • リスト(箇条書きと番号付き)
  • リンクと参照
  • テーブル(MarkdownテーブルまたはHTMLに変換)
  • コードブロックとインラインコード
  • 画像--extract-mediaオプションを使用)
  • 脚注

方法1:Pandocを使用する(推奨)

Pandocは、さまざまなマークアップ形式の間で変換を行う万能なドキュメント変換ツールです。WordからMarkdownへの変換において最も信頼性が高いツールです。

Pandocのインストール

Ubuntu/Debianで:

sudo apt update
sudo apt install pandoc

macOSで:

# Homebrewを使用
brew install pandoc

# または公式サイトからダウンロード
# https://pandoc.org/installing.html

Windowsで:

# Chocolateyを使用
choco install pandoc

# または以下のサイトからインストーラーをダウンロード
# https://github.com/jgm/pandoc/releases

インストールの確認:

pandoc --version

Pandocを使用した変換

DOCXファイル(現代的なWord形式)の場合:

pandoc document.docx -o document.md

古いDOCファイルの場合: Pandocは.docファイルを直接読み取ることができません。まずLibreOfficeを使って.docxに変換する必要があります:

# まずDOCをDOCXに変換
libreoffice --headless --convert-to docx document.doc

# 次にDOCXをMarkdownに変換
pandoc document.docx -o document.md

Pandocの高度なオプション:

# 特定のMarkdownバリアントで変換
pandoc document.docx -t gfm -o document.md  # GitHub Flavored Markdown

# 画像をフォルダに抽出
pandoc document.docx --extract-media=./images -o document.md

# より多くのフォーマットを保持
pandoc document.docx -t markdown+pipe_tables+raw_html -o document.md

# カスタムテンプレートを使用して変換
pandoc document.docx --template=custom.template -o document.md

方法2:LibreOffice + Pandocを使用する(DOCファイル向け)

古い.docファイルを処理する場合、この2段階のプロセスが最も効果的です:

LibreOfficeのインストール

Ubuntu/Debianで:

sudo apt update
sudo apt install libreoffice

macOSで:

brew install --cask libreoffice

Windowsで: LibreOffice公式サイトからダウンロードしてください。

変換プロセス:

# ステップ1: DOCをDOCXに変換
libreoffice --headless --convert-to docx document.doc

# ステップ2: DOCXをMarkdownにPandocで変換
pandoc document.docx -o document.md

# 中間ファイルを削除(オプション)
rm document.docx

Pandocを使用したバッチ変換スクリプト:

複数のファイルを変換するスクリプトを作成します:

#!/bin/bash
# convert-docs.sh

for file in *.doc; do
    if [ -f "$file" ]; then
        echo "変換中: $file..."
        
        # DOCをDOCXに変換
        libreoffice --headless --convert-to docx "$file"
        
        # 拡張子なしのファイル名を取得
        basename=$(basename "$file" .doc)
        
        # DOCXをMarkdownに変換
        pandoc "${basename}.docx" -o "${basename}.md"
        
        # 中間のDOCXファイルを削除
        rm "${basename}.docx"
        
        echo "✓ ${basename}.mdが作成されました"
    fi
done

実行可能にして実行します:

chmod +x convert-docs.sh
./convert-docs.sh

方法3:オンライン変換ツール(簡単で迅速)

たまに変換が必要な場合、オンラインツールは便利です:

人気のあるオンライン変換ツール:

利点と欠点:

  • 利点: インストール不要、どのデバイスでも動作
  • 欠点: プライバシーの懸念、ファイルサイズの制限、出力の制御が難しい

方法4:Wordの組み込みエクスポート機能(制限あり)

現代のMicrosoft Wordは基本的なMarkdownにエクスポートできます:

  1. Wordでドキュメントを開きます
  2. ファイルエクスポートファイル形式の変更に移動
  3. Webページ(フィルタ付き) (*.html) を選択
  4. PandocなどのHTMLからMarkdownへの変換ツールを使用します:
pandoc document.html -o document.md

注意: この方法は、DOCXへの直接変換と比較して結果が劣ることがあります。

方法5:プログラミングによる解決策

Pythonとpython-docx、markdownifyを使用:

#!/usr/bin/env python3
import sys
from docx import Document
from markdownify import markdownify

def docx_to_markdown(docx_path, md_path):
    # DOCXファイルを読み込む
    doc = Document(docx_path)
    
    # テキストを抽出(基本的な変換)
    full_text = []
    for paragraph in doc.paragraphs:
        full_text.append(paragraph.text)
    
    # Markdownに変換(基本)
    markdown_content = '\n\n'.join(full_text)
    
    # ファイルに書き込む
    with open(md_path, 'w', encoding='utf-8') as f:
        f.write(markdown_content)

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("使用法: python docx_to_md.py input.docx output.md")
        sys.exit(1)
    
    docx_to_markdown(sys.argv[1], sys.argv[2])
    print(f"{sys.argv[1]}{sys.argv[2]}に変換しました")

依存関係をインストール:

pip install python-docx markdownify

注意: これは基本的な実装です。Pandocは複雑なドキュメントに対してより良い結果を出します。

一般的な問題の処理

1. 複雑なテーブル

# 互換性を高めるためにパイプテーブル形式を使用
pandoc document.docx -t markdown+pipe_tables -o document.md

2. 画像が変換されない

# 画像を別のフォルダに抽出
pandoc document.docx --extract-media=./images -o document.md

3. フォーマットの喪失

# 複雑なフォーマットを保持するためにHTMLを指定
pandoc document.docx -t markdown+raw_html -o document.md

4. 文字エンコーディングの問題

# UTF-8エンコーディングを指定
pandoc document.docx -t markdown -o document.md --from=docx --to=markdown

最佳の実践

1. 変換前の準備

  • 変換前にWordドキュメントを整理してください
  • 一貫した見出しスタイル(見出し1、見出し2など)を使用してください
  • Markdownにうまく変換できない複雑なフォーマットを避けてください
  • 手動の箇条書きではなく、Wordの組み込みリストフォーマットを使用してください

2. 変換後の整理

  • 出力を確認してフォーマットの問題を修正してください
  • 必要に応じてテーブルのフォーマットを修正してください
  • 画像のパスと代替テキストを調整してください
  • 余分な改行やスペースの問題を修正してください

3. 自動化のヒント

# 一般的な変換にエイリアスを作成
echo 'alias doc2md="pandoc --from=docx --to=markdown"' >> ~/.bashrc

# バッチ変換用の関数
doc2md_batch() {
    for file in *.docx; do
        pandoc "$file" -o "${file%.docx}.md"
    done
}

方法の比較

方法 利点 欠点 最適な用途
Pandoc 高品質、多くのオプション インストールが必要 定期的な変換、複雑なドキュメント
LibreOffice + Pandoc DOCファイルを処理 2段階のプロセス 旧式のDOCファイル
オンライン変換ツール インストール不要 プライバシー、機能制限 一時的な変換
Wordエクスポート 組み込み 出力品質が低い 簡単なドキュメントのみ
プログラミング カスタマイズ可能 コーディングが必要 自動化されたワークフロー

小さな要約

ほとんどのユーザーにとって、PandocはWordドキュメントをMarkdownに変換するための推奨されるソリューションです。品質、機能、信頼性のバランスが最適です。旧式の.docファイルには、LibreOffice + Pandocの組み合わせが非常に効果的です。

成功した変換の鍵は以下の通りです:

  1. 一貫したフォーマットでWordドキュメントを準備する
  2. 自分のニーズに合った正しいツールを選ぶ
  3. 出力を確認し、整理する
  4. 定期的な変換が必要な場合はプロセスを自動化する

これらのツールと技術を使用することで、オリジナルのフォーマットと構造の大部分を保持しながら、Wordドキュメントを効率的にMarkdown形式に変換できます。

クイックリファレンスコマンド

# 基本的な変換(DOCXからMarkdown)
pandoc document.docx -o document.md

# DOCからMarkdownへの変換(2段階)
libreoffice --headless --convert-to docx document.doc
pandoc document.docx -o document.md

# GitHub Flavored Markdown
pandoc document.docx -t gfm -o document.md

# 画像の抽出
pandoc document.docx --extract-media=./images -o document.md

# すべてのDOCXファイルをバッチ変換
for file in *.docx; do pandoc "$file" -o "${file%.docx}.md"; done

有用なリンク