SHOEISHA iD

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

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

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

Power Automate Desktopチュートリアル

無償デスクトップ自動化ツール「Power Automate Desktop」でOCR処理を自動化する

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

OCRでテキストを抽出するフローの作成

 まず、実行すると対応するテキストファイルが入ったフォルダーがTextフォルダー上に作成されるサンプルフローを作成します。

[1]新しいフローを作成する

 Power Automate for Desktopを開きます。トップ画面から[+新しいフロー]をクリックして、適当な名前(ここでは「OCRFlow」)で新規のフローを作成します。

[2]ドキュメントフォルダのパスを取得する

 [フォルダー]アクショングループから[特別なフォルダーを取得]アクションを配置します。

図:特別なフォルダーを取得アクションの配置
図:特別なフォルダーを取得アクションの配置
図:特別なフォルダーを取得アクションの設定
図:特別なフォルダーを取得アクションの設定

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

  • 特別なフォルダーの名前:ドキュメント
  • 生成された変数:%Documents%

[3]ベースになるフォルダパスを変数に設定する

 [変数]アクショングループから[変数の設定]アクションを配置します。

図:変数(ベースフォルダー)の設定アクションの配置
図:変数(ベースフォルダー)の設定アクションの配置
図:変数(ベースフォルダー)の設定アクションの設定
図:変数(ベースフォルダー)の設定アクションの設定

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

  • 変数:%BaseFolder%
  • 値:%Documents%\OCR

[4]画像フォルダーのリストを取得する

 [フォルダー]アクショングループから[フォルダー内のサブフォルダーを取得]アクションを配置します。

図:フォルダー内のサブフォルダーを取得アクションの配置
図:フォルダー内のサブフォルダーを取得アクションの配置
図:フォルダー内のサブフォルダーを取得アクションの配置の設定
図:フォルダー内のサブフォルダーを取得アクションの配置の設定

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

  • フォルダー:%BaseFolder%/Image

[5]結果フォルダに実行時刻を入れるために現在時刻を取得する

 [日時]アクショングループから[現在の日時を取得]アクションを配置します。

図:現在の日時を取得アクションの配置
図:現在の日時を取得アクションの配置

 そのまま保存します。

[6]日時をフォルダ名で使用する形式にする

 [テキスト]アクショングループから[datetimeをテキストに変換]アクションを配置します。

図:datetimeをテキストに変換アクションの配置
図:datetimeをテキストに変換アクションの配置
図:datetimeをテキストに変換アクションの設定
図:datetimeをテキストに変換アクションの設定

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

  • 変換するdatetime:%CurrentDateTime%
  • 使用する形式:カスタム
  • カスタム形式:yyyyMMdd_HHmmss

[7]画像フォルダーでループする

 [ループ]アクショングループから[For each]アクションを配置します。

図:For each(画像フォルダー)アクションの配置
図:For each(画像フォルダー)アクションの配置
図:For each(画像フォルダー)アクションの設定
図:For each(画像フォルダー)アクションの設定

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

  • 反復処理を行う値:%Folders%
  • 保存先:%CurrentFolder%

[8]結果ファイル格納フォルダーを作成する

 [フォルダー]アクショングループから[フォルダーの作成]アクションをループの中に配置します。

図:フォルダーの作成アクションの配置
図:フォルダーの作成アクションの配置
図:フォルダーの作成アクションの設定
図:フォルダーの作成アクションの設定

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

  • 新しいフォルダーを次の場所に作成:%BaseFolder%\Text
  • 新しいフォルダー名:%CurrentFolder.Name%_%FormattedDateTime%
  • 生成された変数:%OutputFolder%

 これで、Textフォルダーに「(画像フォルダー名)_20230822_070000」のような形式のフォルダーが作成されます。このフォルダーに抽出テキストのファイルが格納されます。

[9]画像フォルダーの画像のリストを取得する

 [フォルダー]アクショングループから[フォルダー内のファイルを取得]アクションを配置します。

図:フォルダー内のファイルを取得アクションの配置
図:フォルダー内のファイルを取得アクションの配置
図:フォルダー内のファイルを取得アクションの設定
図:フォルダー内のファイルを取得アクションの設定

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

 実行時には、一つの画像フォルダーの中にあるファイルのリストを取得します。

  • フォルダー:%BaseFolder%\Image\%CurrentFolder.Name%

[10]画像リストでループする

 [ループ]アクショングループから[For each]アクションを配置します。一つの画像フォルダーにある画像ファイルのすべてを一つずつ処理対象にします。

図:For each(画像ファイル)アクションの配置
図:For each(画像ファイル)アクションの配置
図:For each(画像ファイル)アクションの設定
図:For each(画像ファイル)アクションの設定

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

  • 反復処理を行う値:%Files%
  • 保存先:%CurrentFile%

[11]OCRで画像からテキストを抽出する

 [OCR]アクショングループから[OCRを使ってテキストを抽出]アクションを内側のループの中に配置します。

図:OCRを使ってテキストを抽出アクションの配置
図:OCRを使ってテキストを抽出アクションの配置
図:OCRを使ってテキストを抽出アクションの設定
図:OCRを使ってテキストを抽出アクションの設定

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

  • OCRソース:ディスク上の画像
  • 画像ファイルのパス:%CurrentFile%
  • OCRエンジンの設定
    • Windows OCRの言語:日本語

[12]抽出したテキストをファイルに書き込む

 [ファイル]アクショングループから[テキストをファイルに書き込む]アクションを配置します。

図:テキストをファイルに書き込むアクションの配置
図:テキストをファイルに書き込むアクションの配置
図:テキストをファイルに書き込むアクションの設定
図:テキストをファイルに書き込むアクションの設定

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

  • ファイルパス:%OutputFolder%\%CurrentFile.NameWithoutExtension%.txt
  • 書き込むテキスト:%OcrText%
  • エンコード:UTF-8

 画像ファイルから抽出したテキストデータをテキストファイルとして、画像ファイルの名前の拡張子部分を.txtにした名前で対応するフォルダに出力します。

 NameWithoutExtensionプロパティは、ファイル名の拡張子を取り除いた部分を取得します。以上の設定で元画像が「AAAA.jpg」なら、「AAAA.txt」のようになります。

[13]実行する

 フローを保存して、Imageフォルダに画像フォルダーがあることを確認して、実行します。画像ファイルごとに、抽出テキストファイルができます。

図:OCRFlowの実行結果
図:OCRFlowの実行結果

まとめ

 Power Automate for Desktopで、画像ファイル中の文字列を抽出するサンプルを紹介しました。次回も引き続きこのフローをベースに、出力を個別テキストではなく元画像と合わせて1つのExcelブックに出力するサンプルを作成します。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
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/18419 2023/10/18 11:00

イベント

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

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

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

メールバックナンバー