【悩み】
・PythonでWord文書をHTMLへ変換したい。
・どのPythonライブラリを使うべきかを知りたい。
・Webコンテンツ作成や資料共有にかかる時間を短縮したい。
こういった「悩み」に答えます。
【本記事の内容】
① WordをHTMLへ変換できるPythonライブラリ
➁ 事前準備:各種インストール
➂ PythonのmammothでWord文書をHTMLへ変換
④ ご紹介したHTML変換プログラムの応用例2選
本記事に掲載した方法を実践したことで、Pythonを使ってWord文書(docxやdocファイル)をHTMLファイルに変換できました(下の動画参照)。
記事の前半では「WordをHTMLファイルへ変換するために使えるPythonライブラリの一覧」と「ライブラリのインストール方法などの環境準備」について解説します。
記事の後半では「WordをHTMLに変換するPythonプログラム」と「作成したPythonプログラムの応用例」を説明します。
この記事を読み終えることで、「ブログなどのWebコンテンツ作成の時間短縮」などを実現できる状態になります。
ちなみに、「新規作成」「編集」「抽出」といった操作もPythonで実施できます。以下の記事にまとめているので興味がある方は是非ご覧ください。
WordをHTMLへ変換できるPythonライブラリ
PythonでWordをHTMLに変換したい場合、いくつかのライブラリを使う方法があります。今回は、よく使われる2つのライブラリを紹介します。
【ご紹介事項】
・ライブラリ2選
・Aspose.Wordsとは:商用なため高品質
・mammoth:OSSライブラリ
ライブラリ2選
PythonでWord文書をHTMLファイルに変換したい場合、以下のライブラリがよく使われます。
名称 | サポートOS | ライセンス | 公式サイト |
Aspose.Words | Windows、MacOS、Linux | 商用のため有料 | Aspose英語サイト |
mammoth | Windows、MacOS、Linux | BSD-2-Clause | pypiのサイト |
本記事では、上記2つのライブラリに関して詳しく解説します。
Aspose.Wordsとは:商用なため高品質
PythonでWord文書をHTMLファイルに変換したい場合、「Aspose.Words」ライブラリを使う方法があります。
以下の記事でライブラリのライセンスや概要をご紹介しています。気になる方は、ぜひ読んでみてください。
>>【5分でわかる】PythonでWordを新規作成する方法
mammoth:OSSライブラリ
mammothライブラリの概要を以下に記載します。
【mammothとは】
mammothはPythonライブラリです。本ライブラリを使うことで「Word文書をHTMLに変換」できます。
ライセンスに関して以下に記載します。
【ライセンスについて】
mammothのライセンスは、BSD-2-Clause(2023年4月25日時点)です。
特に制限なく、無料で使えます。
参照:
・mammothのライセンスページ(GitHub)
・BSD-2-Clauseとは(Wikipedia)
また、「直近でどのぐらい活発に開発されているか?」の情報は、以下のサイトから確認できます。
参照:mammothの開発頻度(GitHub)
上図より、mammothは活発に開発されているライブラリに見えます。
そのため、脆弱性やバグがあった場合、即座に修正されると考えられます。
ちなみに、mammothは、以下の言語で開発されています。
参照:mammothの開発言語(GitHub)
以降で、環境準備を説明します。Pythonやライブラリのインストール手順を丁寧に解説しますね。
事前準備:各種インストール
「PythonでWordをHTML変換するための準備」に関してご紹介します。
【流れ】
手順1:Pythonのインストール
手順2:mammothのインストール
手順3:Aspose.Wordsのインストール
上記の流れで説明します。
Pythonのインストール
以下の記事を参考にし、お使いのパソコンやサーバーにPythonをインストールしましょう。
>> 【ubuntu向け】pyenvでPythonをインストールする手順【簡単】
>> 【コピペOK】pyenvでPythonをインストールする手順【Linux用】
>> 【最短5分】PyAutoGUIをWindowsにインストールする手順の「手順1:Pythonのインストール」を参照
>> 【環境構築】インストーラーでMacOSにPythonをインストール
mammothのインストール
以下のコマンド実行により、mammothライブラリをインストールできます。
pip install mammoth
pip list
コマンド実行後、「mammoth(バージョン)」が表示された場合、「正常にライブラリをインストールできた」と判断できます。
Aspose.Wordsのインストール
Aspose.Wordsライブラリのインストール手順に関しては、以下の記事の「Aspose.Wordsのインストール」箇所をご覧ください。
>> 【5分でわかる】PythonでWordからテキストを抽出:3事例解説
以降で、Pythonを使ってWordをHTMLに変換しファイルに出力するプログラムとその実行結果を解説します。
PythonのmammothでWord文書をHTMLへ変換
「PythonのmammothでWord文書をHTMLへ変換しファイル出力する方法」に関してご紹介します。
【ご紹介事項】
・WordをHTMLへ変換しファイル出力するPythonプログラム
・mammothのHTML変換の対応表
・カスタムスタイルマップ機能で変換ルールを独自設定
以降で、以下「sample-for-image.docx」のWordファイルを用いて、上記の各項目に関して説明します。
ちなみに、「Aspose.Words」の事例に関しては、以下の公式サイトをご覧ください。
>> Convert Word Document to HTML using Python(公式サイト)
WordをHTMLへ変換しファイル出力するPythonプログラム
「mammothを使ってWordをHTMLに変換する」Pythonプログラムは、以下となります。
import mammoth
# 対象のワードファイルのPATH
word_path = './sample-for-image.docx'
# 変換後のHTMLファイルのPATH
html_path = './output/sample.html'
# 変換されたHTMLを格納するための変数
html = None
with open(word_path, "rb") as docx_file:
# HTMLに変換
result = mammoth.convert_to_html(docx_file)
# HTMLを格納
html = result.value
# 変換時のエラーなど
messages = result.messages
# HTMLを出力
print(html)
# エラーや警告などを出力
print(messages)
# HTMLをファイル出力
with open(html_path, mode="w", encoding="utf-8") as f:
f.write(html)
上記のプログラムを「mammoth-sample.py」というファイル名で保存しましょう。
【convert_to_html関数について】
・書き方
convert_to_html(Word文書のPATH, 任意オプション)
・処理
指定したWordをHTMLに変換
・参照
convert_to_html関数のリファレンス(公式サイト)
以下のコマンドで、上記プログラムを実行できます。
python mammoth-sample.py
その結果、以下のようにWordをHTMLに変換できます(下の動画参照)。
mammothのHTML変換の対応表
MammothライブラリがどのようにWord文書をHTMLに変換するかを、以下の対応表にまとめます。
Word文書での定義(変換前) | HTMLのタグ(変換後) |
段落 | <p> |
斜体 | <em> |
太字 | <strong> |
取り消し線 | <strike> |
上付き文字 | <sup> |
下付き文字 | <sub< |
数字付きリスト | <ol> |
箇条書きリスト | <ul> |
リストの項目 | <li> |
テーブル | <table> |
行 | <tr> |
セル | <td> |
セル(見出し) | <th> |
画像 | <img> |
リンク | <a> |
改行 | <br> |
見出し | <h1>から<h6>のいずれか |
引用 | <blockquote> |
上記の対応表は、GitHub上で公開されているドキュメントやプログラムを元にして作成しました。以下に参考にしたURLを記載します。
ちなみに上記の対応表は、カスタマイズできます。次節でその方法を説明しますね。
カスタムスタイルマップ機能で変換ルールを独自設定
mammothの「Custom style map(カスタムスタイルマップ)」を使うことで変換ルールを独自設定できます。
カスタムスタイルマップ機能を使ったプログラム例を以下に記載します。以下のプログラムでは、「表題をh1タグ」「見出し1をh2タグ」に変換するように設定しています。
import mammoth
# 対象のワードファイルのPATH
word_path = './sample-for-image.docx'
# 変換後のHTMLファイルのPATH
html_path = './output/sample.html'
# 変換されたHTMLを格納するための変数
html = None
# カスタムスタイルマップの定義
style_map = """
p[style-name='Title'] => h1:fresh
p[style-name='Heading 1'] => h2:fresh
"""
with open(word_path, "rb") as docx_file:
# HTMLに変換
result = mammoth.convert_to_html(docx_file, style_map=style_map)
# HTMLを格納
html = result.value
# 変換時のエラーなど
messages = result.messages
# HTMLを出力
print(html)
# エラーや警告などを出力
print(messages)
# HTMLをファイル出力
with open(html_path, mode="w", encoding="utf-8") as f:
f.write(html)
上記のプログラムを「mammoth-customstylemap-sample.py」というファイル名で保存しましょう。
【カスタムスタイルマップについて】
・書き方1:変換後のHTMLを新規作成
Word文書のパターン => 変換後のHTML:fresh
・書き方2:既存のHTMLがあれば変換後のHTMLを追記
Word文書のパターン => 変換後のHTML
・例
p[style-name=’Heading 1′] => h2:fresh
・処理
見出し1をh2タグに変換
・参照
カスタムスタイルマップの書き方(公式サイト)
・補足
見出し1や表題の英語名に関しては、Microsoftの公式サイトで確認
以下のコマンドで、上記プログラムを実行できます。
python mammoth-customstylemap-sample.py
その結果、以下のようにWordをHTMLに変換できます(下の動画参照)。
上記のmammothライブラリを使うことで、WordをHTMLに変換できます。以降で、その応用的な使い方に関して解説しますね。
ご紹介したHTML変換プログラムの応用例2選
Pythonのmammothを使うことで様々な作業を効率化できます。例えば、以下のような応用例が考えられます。
【ご紹介事項】
・ブログなどのWebコンテンツ作成の時間短縮
・職場のルールに従ったメールでの資料共有の時短
以降で、上記項目に関して図を用いて簡単に説明しますね。
ブログなどのWebコンテンツ作成の時間短縮
mammothライブラリの応用として、「ブログなどのWebコンテンツ作成の時間短縮」が挙げられます。
ブログなどの記事作成時に、Word文書に記載した後に、HTML化するといった進め方のパターンがあります。
その進め方に対して、mammothライブラリを使うことで、時間短縮を実現できます(下図参照)。
職場のルールに従ったメールでの資料共有の時短
職場によっては、メールでWord文書の共有を禁止していることがあります。その際に、Pythonをうまく使うことで、「Word文書の変換からメール送信」までを自動化できます。
下図のように、Pythonをうまく使うことで、3つの操作を1つの操作にまとめることができ、資料共有にかかる時間を短縮できます。
ちなみに、PythonでGmail経由でメール送信する方法に関しては、以下の記事をご覧ください。
>> 【コピペOK】PythonでGmailからメールを送信する手順
上記のようにmammothライブラリとPythonをうまく使うことで、様々な作業を自動化し時短を実現できます。
Pythonを使うことで、Word文書をHTMLに変換できることを説明しました。このPythonを使うことで、あらゆる業務や作業を自動化できます。
その事例やヒントを知りたい方には、以下の本がオススメです。
ちなみに、上記教材の詳細なレビューに関しては、以下のサイトにまとめています。
>> 「退屈なことはPythonにやらせよう」のレビューの一覧
【まとめ】mammothライブラリでHTML変換を実現!
いかがでしたでしょうか?
上記で紹介したmammothライブラリを使うことで、PythonでWord文書をHTMLに変換できます。
最後にもう一度内容を確認しましょう。
【おさらい】
・PythonでWordをHTMLに変換する場合、mammothやAspose.Wordsを使う
・mammothのカスタムスタイルマップを使うことで変換を独自設定可能
・Pythonとmammothライブラリを使うことで記事作成業務の時短が可能
ちなみに、「新規作成」「編集」「抽出」といった操作もPythonで実施できます。以下の記事にまとめているので興味がある方は是非ご覧ください。
本ブログでは、「業務の時短化に繋がるIT技術」や「クラウドやOSSの学び方」などを発信しています。定期的に更新していますので、ぜひブックマークをよろしくお願いいたします。
コメント