0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonでWord文書をMarkdown形式に変換する方法

Last updated at Posted at 2024-11-15

Markdownは、簡潔な構文と幅広い互換性を持つ軽量マークアップ言語であり、ブログ、技術文書、バージョン管理システムでのコンテンツ管理に特に適しています。一方、Word文書はその強力なレイアウト機能から、文書作成の第一選択肢として広く利用されています。しかし、Word形式を直接使用すると、特定のプラットフォームでは複雑すぎたり、柔軟性に欠けたりする場合があります。Pythonを使用してWord文書をMarkdown形式に一括変換することで、文書構造を簡略化し、移植性とメンテナンス性を向上させることができます。本記事では、Pythonを用いてWord文書をMarkdownファイルに変換する方法を紹介します。

この記事で紹介する方法では、Spire.Doc for Pythonを使用します。PyPIでインストール可能です:pip install spire.doc

無料ライセンスを申請する

PythonでWord文書をMarkdown形式に変換

Document.LoadFromFile()メソッドを使用して指定されたファイルパスからWord文書を読み込み、Document.SaveToFile(fileName: str, FileFormat.Markdown)メソッドを使用してMarkdown形式に変換し、保存します。以下は手順の例です:

  1. 必要なモジュール(DocumentFileFormat)をインポートします。
  2. Documentインスタンスを作成します。
  3. Document.LoadFromFile()メソッドを使用して指定されたファイルパスからWord文書を読み込みます。
  4. Document.SaveToFile()メソッドを使用してMarkdown形式に変換し、保存します。
  5. リソースを解放します。

コード例

from spire.doc import Document, FileFormat

# Documentオブジェクトを作成
doc = Document()

# Word文書をロード
doc.LoadFromFile("Sample.docx")

# 文書をMarkdown形式に変換してファイルとして保存
doc.SaveToFile("output/WordToMarkdown.md", FileFormat.Markdown)
doc.Dispose()

元のWord文書
PythonでWord文書をMarkdown形式に変換

変換結果
PythonでWord文書をMarkdown形式に変換

画像を削除してWord文書をMarkdown形式に変換

Word文書をMarkdown形式に直接変換すると、画像がBase64エンコードされた形式でMarkdownコード内に保存されるため、ファイルサイズが大きくなったり、一部のプラットフォームでBase64エンコードがサポートされない場合があります。そのため、変換前に画像を削除し、必要に応じてリンク形式でMarkdownコードに挿入することが推奨されます。以下は手順の例です:

  1. 必要なモジュール(DocumentFileFormat)をインポートします。
  2. Documentインスタンスを作成します。
  3. Document.LoadFromFile()メソッドを使用して指定されたファイルパスからWord文書を読み込みます。
  4. 文書内のセクション、セクション内の段落、段落内の子オブジェクトを順に走査し、子オブジェクトがDocPictureのインスタンスであるかを判定します。該当する場合は、Paragraph.ChildObjects.Remove()メソッドを使用して削除します。
  5. Document.SaveToFile()メソッドを使用してMarkdown形式に変換し、保存します。
  6. リソースを解放します。

コード例

from spire.doc import Document, FileFormat, DocPicture

# Documentオブジェクトを作成
doc = Document()

# Word文書をロード
doc.LoadFromFile("Sample.docx")

# 文書中の全てのセクションを巡る
for i in range(doc.Sections.Count):
    section = doc.Sections.get_Item(i)
    # セクション内の全ての段落を巡る
    for j in range(section.Paragraphs.Count):
        para = section.Paragraphs.get_Item(j)
        # 段落内の全てのドキュメントオブジェクトを巡る
        for k in range(para.ChildObjects.Count):
            obj = para.ChildObjects.get_Item(k)
            # ドキュメントオブジェクトが画像の場合、画像を削除
            if isinstance(obj, DocPicture):
                para.ChildObjects.Remove(obj)

# 文書をMarkdown形式に変換してファイルとして保存
doc.SaveToFile("output/WordToMarkdownNoImage.md", FileFormat.Markdown)
doc.Dispose()

変換結果
画像を削除してWord文書をMarkdown形式に変換

本記事では、Pythonを使用してWord文書をMarkdownファイルに変換する方法を紹介しました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?