【初心者向け】Microsoft RPA Power Automate Desktop PDFファイルから画像抽出

Power Automate Desktop RPA

RPA_PowerAutomateDesktop_PDFファイルからの画像抽出

こんにちは!!Apachanです。

今回はPower Automate Desktopの複数のPDFファイルより画像を収集するフローを作成してみます。
資料作成などの際に画像データをストックしておくととても便利ですよね。
その他何かの参考になるかも知れませんので是非ご確認ください。

目次

1.前提
– 作成するフロー
– 素材の準備
– Power Automate Desktop 起動
2.身につくこと
– フォルダから複数ファイルの抽出
– 抽出する際の拡張子の指定(PDF)
– プロパティの扱い方
– PDFから画像の抽出方法
3.フロー作成の手順
– フォルダ内のファイルを取得
– For each
– フォルダの作成
– PDFから画像を抽出
4.フローの実行
– 実行結果
5.まとめ

前提

作成するフロー

今回は動作する作成するフローは以下のようなものとします。

  1. デスクトップ上のフォルダのPDFファイルから画像を抽出
  2. 1.で抽出した画像を抽出元のファイル毎に新規フォルダを作成して保存

素材の準備

デスクトップ上に2つのフォルダを作成します。
imagesは画像保存用のフォルダとなるため準備段階では空の状態となります。
filesには事前にいくつかPDFファイルを保存しておきます。

前提_フォルダ準備

filesの中は下図のようなイメージとなります。
PDFファイル以外があっても正常に動作するか確認のため、Excelファイルもテスト的に格納します。

前提_PDFファイル準備

サンプルのPDFファイルは以下サイトより取得しました。
※ 画像の使用に関しては著作権にご注意ください。

Power Automate Desktop 起動

Power Automate Desktop 事前に起動した状態としてください。

前提_PowerAutomateDesktop起動①

下図のような画面から解説を開始します。

前提_PowerAutomateDesktop起動②

身につくこと

・フォルダから複数ファイルの抽出

フォルダより複数ファイルを一括で取得することができるようになります。
実務においては、単一よりも複数ファイルを扱う機会が多いのでしょう。

・抽出する際の拡張子の指定(PDF)

複数ファイルの扱いに加えて、拡張子を限定する方法も盛り込みます。
想定外の拡張子が混ざることはエラーの原因にもなりかねません。
必要なファイルだけ処理対象となるように設定した方が良いでしょう。

・プロパティの扱い方

ファイルなどはオブジェクトとして扱うことができます。
オブジェクトに限ってはプロパティを利用して、様々な情報をオブジェクトより取得することができます。
知っておくと間違いなく便利なので、参考にしてください。

・PDFから画像の抽出方法

今回の主たる目的である、PDFファイルより画像を取得が可能になります。
資料作成のための素材ストックを想定していますが、他にも何かの役立つシーンがあるかも知れません。

フロー作成の手順

フォルダ内のファイルを取得

「フォルダー内のファイルを取得」アクションを利用します。

フォルダ内のファイルを取得_アクション利用

「フォルダー内のファイルを取得」のダイアログが起動します。
前提で準備したPDFファイルを格納したフォルダパスを選択します。

フォルダ内のファイルを取得_パス設定①

下図のような選択式ダイアログが起動するので、フォルダを選択して「OK」を押下してください。

フォルダ内のファイルを取得_パス設定②

続いてPDFファイルに限定する設定を行います。
ファイルフィルターには初期値「*」が入っていますが、これはワイルドカード文字と言われるもので、1文字以上の任意の文字列を意味します。
ここを「*.pdf」と変更します。このような文字列に変更することで、拡張子を「.pdf」に限定する設定に変更されます。

Filesには、フォルダ内に格納されているファイルフィルターを通過したファイルが格納されます。

フォルダ内のファイルを取得_PDF拡張子指定

下図のように反映すればOKです。

フォルダ内のファイルを取得_アクション反映

Filesに格納されたファイルを確認するためにフローを実行します。
フロー実行後に、フロー変Filesにファイルが格納されます。クリックで中身を確認します。

フロー実行後のFiles確認

下図のように7つのPDFファイルが格納されます。
この7つのPDFファイルは前提のところで準備した内容と同じになります。
また、Excelファイルもテスト的に格納していましたが、拡張子をPDFファイルに限定する設定が効いているためFilesの中には入ってきませんでした。

Files詳細

For each

「For each」アクションは複数の値を格納した変数より、1つひとつ値の取り出しを行い処理を行うアクションです。
今回のケースでは複数のPDFファイルが格納されたFilesがマッチします。

「For each」アクションは以前のブログで詳しく説明しているためこちらも合わせあてご確認ください。

Foreach_アクション利用

処理対象の変数を決めます。

Foreach_反復処理対象の選択①

Filesを選択してください。

Foreach_反復処理対象の選択②

下図のように反映すればOKです。
CurrentItemに、7つのPDFファイルが入れ替わりで格納されます。

Foreach_反復処理対象の決定

下図のようにアクションが反映すればOKです。

Foreach_アクション反映

CurrentItemの中身を確認するためフローを実行します。
実行後にフロー変数CurrentItemをクリックすると、最後に格納されたPDFファイルの情報が確認できます。

フロー実行後のCurrentItem確認

下図のようなダイアログが起動します。
今回CurentItemはPDFファイルの情報を持った特殊な変数であるため、プロパティという値を持っています。
下記のように変数に対してプロパティを指定すると、対応する値が取得できます。

CurentItem.プロパティ =

例えば以下のように記述すると、ファイル名を取得することができます。
抽出した画像を保存する際のフォルダの名称として利用するため使い方は後工程で説明します。

CurentItem.NameWithoutExtension = RPACommunityマガジン vol.8 2021.02

CurrentItem詳細

フォルダの作成

PDFファイルより抽出した画像を保存するためのフォルダを作成します。
「フォルダーの作成」アクションを利用します。

フォルダの作成_アクション利用

ファルダを作成する場所を指定するため、選択式ダイアログを起動します。

フォルダの作成_作成場所の選定①

前提で画像保存のために作成した空のimagesを選択してください。
この中にPDFファイル毎にフォルダを作成していきます。

フォルダの作成_作成場所の選定②

作成するフォルダの名称を設定します。変数ボタンを押下してください。

フォルダの作成_フォルダ名称の指定①

CurentItemを押下してください。

フォルダの作成_フォルダ名称の指定②

下へスクロールすると前工程で説明したファイル名を取得するプロパティが表示されます。
こちらを選択してください。

フォルダの作成_フォルダ名称の指定③

下図のように、自動でCurentItemとプロパティセットで反映します。
こちらは新しいフォルダ名がPDFファイルの名前になるということを意味します。
新しく作成されたフォルダはNewFolderで指定することができるようになります。

フォルダの作成_フォルダ名称の指定④

下図のように反映すればOKです。

フォルダの作成_アクション反映

PDFから画像を抽出

「PDFから画像を抽出します」アクションを利用します。

PDFから画像を抽出します_アクション利用

PDFファイルはCurentItemに格納されているので下図のように設定します。
画像名については、接頭辞(頭の共通文字列)のみ指定する必要があるためGivenName_と入れておきます(※Null不可)。

PDFから画像を抽出します_各パラメーター設定

下図のように反映すればOKです。

PDFから画像を抽出します_アクション反映

フローの実行

実行結果

フローが完成したので実行します。

フロー実行

imageフォルダの中にファイル名のフォルダが作成されればOKです。

フロー実行結果①

中身についは下図のようになります。

フロー実行結果②

フロー実行動画は以下のようになります。

まとめ

今回はPDFファイルからの画像抽出を通して、複数ファイルの扱い方、ファイルの種類を限定する方法を解説しました。
手作業でも難しいようなことも、Power Automate Desktop使うとかんたんに作れて自動化できることがとても魅了的ではないでしょうか。

Apachan

約10年間の代理店営業を経験した後にITに興味を持ちプログラミングを習得。営業で培ったコミュニケーション力を活かしつつ、様々な現場の業務改善に日々奮闘中。
RPAに限らず、SaaSやGAS, VBAなど手段はクライアントの方と考えながら進めます。
RPAやプログラミング関連の書籍も執筆しました。
お仕事のご相談などお気軽にtwitterDMまでご連絡ください。

関連記事