.docxから画像を一括抽出する方法|Mac・Linux対応のターミナル手順をやさしく解説|UNIX Cafe

当ページのリンクには広告が含まれています。
.docxファイル 画像 抽出 方法 Word Mac ターミナル | UNIX Café

UNIX Cafe | 第21回

目次

Wordから画像だけをまとめて取り出す方法

取材先から Word で送られてきた画像をブログに掲載したい

Wordでもらった資料から「画像だけをまとめて保存したい」。
Mac や Linux では、実は .docx ファイルをターミナルで簡単に展開することで、
画像を一括抽出(PNG/JPEG)することができます。

「1枚ずつ右クリックで保存」が不要になる便利ワザを、やさしく紹介します。

ミナちゃん

ユニ先生〜!
Wordファイルでもらった画像をブログで使いたいんです。でも、どうやったら取り出せるのかな?

ユニ先生

そんな時は、ターミナルを使って .docx の中身を取り出せば楽だよ。.docx は、実は ZIP ファイルと同じ仕組みなんだ。

.docx の正体は「ただの ZIP ファイル」

実は Word の .docx は、文章や画像がいくつもの小さなファイルに分かれて、ひとまとめにされた ZIP 形式 のファイルです。だから、名前を .zip に変えるだけで中身が見えるようになるのです。

ターミナルで .docx から画像を取り出す手順

STEP1:.docx を .zip に変換する

bash
$ mv sample.docx sample.zip
ミナちゃん

mv は “移動・名前変更”コマンドだね!

ユニ先生

そう。ここでは 名前を変えてるだけだよ☕

STEP2:ZIP を展開する

bash
$ unzip sample.zip -d output

-d output … 展開先フォルダを output/ に指定

ミナちゃん

できた!outputフォルダができてるね!

ユニ先生

うん。画像ファイルは
/word/media/ に入ってるよ。

画像の場所

output/
└─ word/
    └─ media/
        ├─ image1.jpeg
        ├─ image2.png
        ├─ image3.jpeg
        ...
ミナちゃん

ここに、全部入ってる〜!やった〜!

ユニ先生

ファイル形式は、JPEG / PNG / GIF など
文書が持っている形式そのままだよ☕

補足:.docx をそのまま unzip できる場合

macOS なら .docx のまま unzip できることもあります。ただし OS のバージョンによっては失敗することがあるため、.zip に名前を変えるほうが確実です。

bash
$ unzip sample.docx -d output
ミナちゃん

えっ、名前を変えなくてもOKなの?

ユニ先生

そう。でもうまく行かない場合もあるので、
.zip にリネームしておく方が安心だよ☕

.docx → 画像 を自動抽出するシェルスクリプト

スクリプトで自動化してみよう

ミナちゃん

毎回 unzip するの、ちょっとめんどう…
自動でできたらいいなぁ〜

ユニ先生

お安い御用さ☕
このスクリプトを使えば、.docx を渡すだけで画像を全部取り出してくれるよ。

スクリプトを作成してみよう

bash
$ vi docx_extract_img.sh
シェリ

ファイル名は、docx_extract_img.sh にしておくと分かりやすいですよ。

スクリプト本体(コピペOK)

#!/bin/bash

# ===== .docx から画像を取り出すスクリプト =====
# 使い方:
#   ./docx_extract_img.sh sample.docx
#   ./docx_extract_img.sh doc_files/*.docx   ←複数OK*/
# =====

# 引数がない場合
if [ $# -eq 0 ]; then
    echo "使い方: $0 <docxファイル> ..."
    exit 1
fi

# 1ファイルずつ処理
for file in "$@"; do
    # 存在チェック
    if [ ! -f "$file" ]; then
        echo "⚠ ファイルが見つかりません: $file"
        continue
    fi

    # 拡張子を除いたファイル名を取得
    base=$(basename "$file" .docx)

    # 出力フォルダ
    outdir="${base}_images"

    echo "📦 展開中: $file$outdir"

    # 出力フォルダ作成
    mkdir -p "$outdir"

    # docx を unzip(word/media を取り出す)
    unzip -q "$file" "word/media/*" -d "$outdir"

    # 画像フォルダが存在するかチェック
    if [ -d "$outdir/word/media" ]; then
        mv "$outdir/word/media"/* "$outdir"/
        rm -rf "$outdir/word"
        echo "✅ 完了!画像を $outdir/ に保存しました"
    else
        echo "⚠ 画像が見つかりませんでした: $file"
    fi
done

スクリプトを保存する

bash
$ ~/docx_extract_img.sh

(例として、ホームディレクトリに保存しています)

実行権限を付ける

bash
$ chmod +x ~/docx_extract_img.sh

単一ファイルを処理する

bash
$ ./docx_extract_img.sh sample.docx

抽出された画像はsample_images/に入ります。

ミナちゃん

わぁ…!フォルダ名まで整理してくれるんだね✨
便利〜!

ユニ先生

うん。日々の作業を少しずつ楽にしていくのが、
UNIX Cafeの流儀だよ☕✨

複数ファイルもOK

bash
$ ./docx_extract_img.sh *.docx
  • report.docx → report_images/
  • notes.docx → notes_images/

など、それぞれ自動でフォルダに入ります。

出力構造

sample.docx

sample_images/
 image1.jpeg
 image2.png
 

ここで少し休憩|よくある質問

.docx を .zip に変換(リネーム)する必要はありますか?

必須ではありませんが、環境によっては unzip がそのままではうまく動かないことがあります。
.zip に名前を変えておくと、より確実に展開できるため安心です。

どうして .zip にリネームすると良いのですか?

.docx は内部的に ZIP 形式ですが、OSのバージョンや環境によっては「そのまま unzip するとうまく展開できない」ことがあります。.zip に変えてから展開すると失敗しにくい、という理由があります。

Word に貼られた画像は、取り出すと形式が変わりますか?

変わりません。Word に挿入されたときの 元の形式(JPEG / PNG / GIF など)のまま取り出されます。

Wordに貼った画像の順番どおりに取り出せますか?

おおむね「挿入した順番」に近い並びになりますが、Word の内部処理によって前後することもあります
完全に一致するわけではない、と考えてください。

Windows でも同じ方法でできますか?

できますが、この記事で紹介している手順は Mac / Linux 向けです。Windows では PowerShell を使うことで、同じように画像を取り出すことができます。

まとめ

操作コマンド
docx → zip に変換mv sample.docx sample.zip
ZIP の展開unzip sample.zip -d output
画像がある場所output/word/media/

エピローグ

ミナちゃん

ターミナルだけで画像を取り出せるなんて知らなかったよ〜。
とっても便利!

ユニ先生

Word が使えない環境でも画像だけ取り出したい時に便利だね☕
またひとつ、Unix Cafe のスキルが増えました。

ミナちゃん

うん!
今度は PDF の中から画像を取り出す方法も知りたいな!

ユニ先生

よし、じゃあ次のメニューに追加しておこう☕✨

さらに学びたいあなたへ

📘 用途ごとに選ぶ Linux のおすすめ本

あわせて読みたい
レベル・用途別おすすめ Linux 本リスト|UNIX Cafe UNIX Cafe | 第65回 Linux の世界には、「はじめて触る人」「コマンドを覚えはじめた人」「サーバーに挑戦したい人」と、さまざまな段階があります。そんなときに、自分...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次