.docxファイルから画像を抽出する方法|ターミナルで一括取り出し|UNIX Cafe

当ページのリンクには広告が含まれています。
第21回|UNIX Cafe「.docxファイルから画像を取り出す」

UNIX Cafe | 第21回

〜.docx から画像を取り出す / ターミナルでできる、やさしい方法 〜

UNIX Cafe の静かな午後。
ミナちゃんが、取材で集めた .docx ファイルを開きながら困った顔をしています。

ミナちゃん

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

ユニ先生

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

目次

.docxは ZIP 形式だった

.docx ファイルは、文章や画像、設定が “フォルダ構造” のようにまとめられたZIP 形式のファイルです。だから .docx → .zip に名前を変えるだけで中身を取り出せます。

ターミナルでの手順

STEP1).docx を .zip に変換

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

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

ユニ先生

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

.docx を .zip に変換(リネーム)する意味はある?

必須ではありませんが、トラブルを避けるためにやっておくと安心な方法です。

なぜ .zip にリネームするの?

OS バージョンや環境によって.docx → unzip が うまく動かないことがあります。

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 バージョンなどによって失敗あり)

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

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

ユニ先生

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

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

ミナちゃん

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

ユニ先生

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

クリプト名:docx_extract_img.sh

#!/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 に変換mv sample.docx sample.zip
ZIP の展開unzip sample.zip -d output
画像がある場所output/word/media/

エピローグ

ミナちゃん

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

ユニ先生

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

ミナちゃん

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

ユニ先生

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

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次