OCRで取得した画像ファイルをExcelブックに反映する
[8]サブフローを作成する
ここで、メインフローを保存して、そのままにし、実行時に画像ファイルを「フォト」アプリで開いて、画像をクリップボードにコピーするサブフローを作成します。
画面上部の「サブフロー」ドロップダウンから、[新しいサブフロー]をクリックします。名前を[Image2Clipboard]として保存します。
デザイナーでのメインフローとサブフローは画面上部のタブを選択することで切り替えます。
[9]サブフローの入力変数を指定する
メインフローで定義された変数を[入力変数]として指定することでサブフローでも使用できます。逆にサブフローで定義した変数を[出力変数]として指定することで、呼び出し後のメインフローで使用することができます。
変数ペインの[入出力変数]から「+」ボタンをクリックして[入力]を選択します。
以下の入力/選択をして保存します。
Mainフローの変数(外部名で指定する名前の変数)をサブフローで使う変数(名前:変数名)に引き継ぎます。
- 変数名:ImageFilePath
- データの種類:テキスト(既定値)
- 外部名:ImageFilePath
- 説明:画像ファイルのパス
「変数名は既に使用されています」のダイアログでは[続行]をクリックします。
[10]画像ファイルと関連付けられている「フォト」で開く(サブフロー)
エクスプローラーで画像ファイルをダブルクリックした時と同様な処理を実現します。
[システム]アクショングループから[アプリケーションの実行]アクションを配置します。
以下の入力/選択をして保存します。
- アプリケーションパス:%ImageFilePath%
[11]サブフローを1秒待機する
ウィンドウを開いた直後にキーアクションを実行すると、失敗することがあるので、1秒待機します。[フローコントロール]アクショングループから[Wait]アクションを配置し、期間を1にして保存します。
以下の入力をして保存します。
- 期間:1
[12]画像をクリップボードにコピーする
コピーのショートカットキー[Ctrl]+[C]を押す操作をシミュレートします。[マウスとキーボード]アクショングループから[キーの送信]アクションを配置します。
以下の入力/選択をして保存します。
- 送信するテキスト:{Control}({C})
{}はキーボードのキーに対応しています。{Control}はControl(Ctrl)キーを表します。Control(Ctrl),Alt,Shift,Windowsの各「修飾キー」は押しながら他のキーを押すことでショートカットを実行できます。[キーの送信]アクションの設定では、[修飾キーの挿入]ドロップダウンから選択でも、「{Control}()」が[送信するテキスト]に入力できます。()の中は、同時に押すキーを指定します。{Control}({C})の指定で実行時には[Ctrl]+[C]が実行されます。
[フォト]アプリでは、開いている画像をクリップボードにコピーする操作を実行します。
[13]サブフローを1秒待機する
同様に、[フローコントロール]アクショングループから[Wait]アクションを配置し、期間を1にして保存します。
フローですでに置いた同じアクションをコピー&ペーストして移動してきても構いません。
[14]フォトアプリを閉じる
[フォト]アプリを閉じるショートカットキー[Alt]+[F4]を押す操作をシミュレートします。[マウスとキーボード]アクショングループから[キーの送信]アクションを配置します。
以下の入力/選択をして保存します。
- 送信するテキスト:{Alt}({F4})
[15]メインフローからサブフローを呼び出す
ここで、メインフローのタブに戻ります。[フローコントロール]アクショングループから[サブフローの実行]アクションを[ImageFilePath]変数の設定の次に配置します。
以下の選択をして保存します。
- サブフローの実行:Image2Clipboard
[16]クリップボードの画像をExcelシートに貼り付ける
実行時に、抽出テキストの右側に元画像を貼り付けます。
[Excel]アクショングループから[Excelワークシートにセルを貼り付け]アクションをループの内側に配置します。上に置いた同じアクションをコピー&ペーストしてドラッグ&ドロップして設定を開いても構いません。
以下の入力をして保存します。
- 列:15
- 行:%row%
[17]行番号変数の値を増加させる
[変数]アクショングループから[詳細]-[変数を大きくする]アクションをループの内側に配置します。
以下の入力をして保存します。%row%は貼り付け先の行を表します。
- 変数名:%row%
- 大きくする数値:70(環境や画像サイズによるので実行後必要なら調整してください)
[18]不要なシートを削除する
既定であって使用していなかったシート「Sheet1」を削除します。
[Excel]アクショングループ[詳細]から[Excelワークシートを削除]アクションを外側のループの外に配置します。
以下の入力をして保存します。
- ワークシート名:Sheet1
[19]ブックを保存してExcelを閉じる
[Excel]アクショングループから[Excelを閉じる]アクションを最後に配置します。
以下の入力をして保存します。
- Excelを閉じる前:名前を付けてドキュメントを保存
- ドキュメント形式:Excelブック
- ドキュメントパス:%BaseFolder%\Excelbook\Result_%FormattedDateTime%.xlsx
[20]実行する
フローを保存して、実行します。
Excelbookフォルダーにブックが保存され、各画像フォルダーに対応したシートに抽出テキストと元画像が上から順に貼り付けられていることが確認できます。
まとめ
Power Automate for desktopで、画像ファイル中の文字列を抽出するサンプルを紹介しました。画像データから機械的に判断が容易なテキストデータを抽出することで、人手が必要だった作業もコンピュータに任せることができ、「自動化」できる作業の幅が広がることが期待できます。
