SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Power Automate Desktopチュートリアル

無償デスクトップ自動化ツール「Power Automate Desktop」のOCR処理の結果をExcelに出力する

Power Automate Desktopチュートリアル 第24回

OCRで取得した画像ファイルをExcelブックに反映する

[8]サブフローを作成する

 ここで、メインフローを保存して、そのままにし、実行時に画像ファイルを「フォト」アプリで開いて、画像をクリップボードにコピーするサブフローを作成します。

図:サブフローの作成
図:サブフローの作成
図:サブフローの名前設定
図:サブフローの名前設定

 画面上部の「サブフロー」ドロップダウンから、[新しいサブフロー]をクリックします。名前を[Image2Clipboard]として保存します。

 デザイナーでのメインフローとサブフローは画面上部のタブを選択することで切り替えます。

[9]サブフローの入力変数を指定する

 メインフローで定義された変数を[入力変数]として指定することでサブフローでも使用できます。逆にサブフローで定義した変数を[出力変数]として指定することで、呼び出し後のメインフローで使用することができます。

 変数ペインの[入出力変数]から「+」ボタンをクリックして[入力]を選択します。

図:入力変数の作成
図:入力変数の作成
図:入力変数の設定
図:入力変数の設定

 以下の入力/選択をして保存します。

 Mainフローの変数(外部名で指定する名前の変数)をサブフローで使う変数(名前:変数名)に引き継ぎます。

  • 変数名:ImageFilePath
  • データの種類:テキスト(既定値)
  • 外部名:ImageFilePath
  • 説明:画像ファイルのパス

 「変数名は既に使用されています」のダイアログでは[続行]をクリックします。

[10]画像ファイルと関連付けられている「フォト」で開く(サブフロー)

 エクスプローラーで画像ファイルをダブルクリックした時と同様な処理を実現します。

 [システム]アクショングループから[アプリケーションの実行]アクションを配置します。

図:アプリケーションの実行アクションの配置
図:アプリケーションの実行アクションの配置
図:アプリケーションの実行アクションの設定
図:アプリケーションの実行アクションの設定

 以下の入力/選択をして保存します。

  • アプリケーションパス:%ImageFilePath%

[11]サブフローを1秒待機する

 ウィンドウを開いた直後にキーアクションを実行すると、失敗することがあるので、1秒待機します。[フローコントロール]アクショングループから[Wait]アクションを配置し、期間を1にして保存します。

図:Waitアクションの配置
図:Waitアクションの配置
図:Waitアクションの設定
図:Waitアクションの設定

 以下の入力をして保存します。

  • 期間: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ワークシートにセルを貼り付け]アクションをループの内側に配置します。上に置いた同じアクションをコピー&ペーストしてドラッグ&ドロップして設定を開いても構いません。

図:Excelワークシートにセル(画像)を貼り付けアクションの配置
図:Excelワークシートにセル(画像)を貼り付けアクションの配置

 以下の入力をして保存します。

  • 列:15
  • 行:%row%

[17]行番号変数の値を増加させる

 [変数]アクショングループから[詳細]-[変数を大きくする]アクションをループの内側に配置します。

図:変数を大きくするアクションの配置
図:変数を大きくするアクションの配置
図:変数を大きくするアクションの設定
図:変数を大きくするアクションの設定

 以下の入力をして保存します。%row%は貼り付け先の行を表します。

  • 変数名:%row%
  • 大きくする数値:70(環境や画像サイズによるので実行後必要なら調整してください)

[18]不要なシートを削除する

 既定であって使用していなかったシート「Sheet1」を削除します。

 [Excel]アクショングループ[詳細]から[Excelワークシートを削除]アクションを外側のループの外に配置します。

図:Excelワークシートを削除アクションの配置
図:Excelワークシートを削除アクションの配置

 以下の入力をして保存します。

  • ワークシート名:Sheet1

[19]ブックを保存してExcelを閉じる

 [Excel]アクショングループから[Excelを閉じる]アクションを最後に配置します。

図:Excelを閉じるアクションの配置
図:Excelを閉じるアクションの配置
図:Excelを閉じるアクションの設定
図:Excelを閉じるアクションの設定

 以下の入力をして保存します。

  • Excelを閉じる前:名前を付けてドキュメントを保存
  • ドキュメント形式:Excelブック
  • ドキュメントパス:%BaseFolder%\Excelbook\Result_%FormattedDateTime%.xlsx

[20]実行する

 フローを保存して、実行します。

 Excelbookフォルダーにブックが保存され、各画像フォルダーに対応したシートに抽出テキストと元画像が上から順に貼り付けられていることが確認できます。

図:OCR結果と元画像のブック作成フローの実行結果
図:OCR結果と元画像のブック作成フローの実行結果

まとめ

 Power Automate for desktopで、画像ファイル中の文字列を抽出するサンプルを紹介しました。画像データから機械的に判断が容易なテキストデータを抽出することで、人手が必要だった作業もコンピュータに任せることができ、「自動化」できる作業の幅が広がることが期待できます。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Power Automate Desktopチュートリアル連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 飯島 聡(WINGSプロジェクト イイジマ サトシ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/18462 2023/11/02 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー