記事公開日
最終更新日
【AI × Power Automate Desktop】 Power Automate Desktop とAzure OpenAI を活用してPDFファイルを要約してみた

PDFファイルの要約作成をPower Automate Desktop と Azure OpenAIを使用して実現しましたので、ご紹介したいと思います。
Power Automate Desktop のコードを共有しますが、事前に以下のご準備をお願いします。
1:Power Automate Desktop のインストール
2:Azure OpenAIのリソース作成
3:gpt-4oのモデルのデプロイ
Power Automate Desktop に関する記事も多数ありますのでそちらも参考いただければと思います。
QESブログ - Power Automate Desktop -
機能説明
Power Automate Desktop でフローを実行するとフォルダ選択ダイアログが表示されます。選択したフォルダ配下のPDFファイルを取得し、同フォルダ内に要約した内容が記載されたテキストファイルを作成していきます。
コード
Power Automate Desktopのコードは以下になります。Power Automate Desktopの画面にて貼り付けしていただくことで実行可能です。SET AOAI_APIKey TO $'''Dummy-APIKey'''
SET AOAI_APIVersion TO $'''2024-08-01-preview'''
SET AOAI_EndPoint TO $'''https://dummy.openai.azure.com'''
SET AOAI_ModelID TO $'''gpt-4o'''
Display.SelectFolder Description: $'''取込先''' IsTopMost: True SelectedFolder=> SelectedFolder ButtonPressed=> ButtonPressed
Folder.GetFiles Folder: SelectedFolder FileFilter: $'''*.pdf''' IncludeSubfolders: True FailOnAccessDenied: True SortBy1: Folder.SortBy.NoSort SortDescending1: False SortBy2: Folder.SortBy.NoSort SortDescending2: False SortBy3: Folder.SortBy.NoSort SortDescending3: False Files=> Files
Variables.CreateNewList List=> messages
LOOP FOREACH CurrentItem IN Files
Variables.ClearList List: messages
Variables.AddItemToList Item: { 'role': 'system', 'content': 'どのような内容か1行文に要約してください。' } List: messages
Pdf.ExtractTextFromPDF.ExtractText PDFFile: CurrentItem DetectLayout: True ExtractedText=> ExtractedPDFText
Variables.AddItemToList Item: { 'role': 'user', 'content': ExtractedPDFText } List: messages
**REGION カスタムオブジェクトからJSONにする際、数値が小数点付きに変わってしまうため苦肉の策として置換を用いる
Variables.ConvertCustomObjectToJson CustomObject: { 'dummy': 'dummyVal', 'messages': messages } Json=> BodyJson
Text.Replace Text: BodyJson TextToFind: $'''\"dummy\":\"dummyVal\",''' IsRegEx: False IgnoreCase: False ReplaceWith: $'''\"max_tokens\": 800, \"temperature\": 0,''' ActivateEscapeSequences: False Result=> BodyJson
**ENDREGION
Web.InvokeWebService.InvokeWebServicePost Url: $'''%AOAI_EndPoint%/openai/deployments/%AOAI_ModelID%/chat/completions?api-version=%AOAI_APIVersion%''' Accept: $'''application/json''' ContentType: $'''application/json''' CustomHeaders: $'''api-key: %AOAI_APIKey%''' RequestBody: BodyJson ConnectionTimeout: 30 FollowRedirection: True ClearCookies: False FailOnErrorStatus: False EncodeRequestBody: False UserAgent: $'''Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20100312 Firefox/3.6''' Encoding: Web.Encoding.AutoDetect AcceptUntrustedCertificates: False TrimRequestBody: True ResponseHeaders=> WebServiceResponseHeaders Response=> WebServiceResponse StatusCode=> StatusCode
Variables.ConvertJsonToCustomObject Json: WebServiceResponse CustomObject=> JsonAsCustomObject
File.WriteText File: $'''%SelectedFolder%\\%CurrentItem.NameWithoutExtension%_summary.txt''' TextToWrite: JsonAsCustomObject.choices[0].message.content AppendNewLine: True IfFileExists: File.IfFileExists.Overwrite Encoding: File.FileEncoding.UTF8
END
最初の4行でAzure OpenAIの情報を定義していますので、適宜「Dummy-APIKey」と「https://dummy.openai.azure.com」の値は環境に合わせて設定してください。
コードを貼り付けると以下のようになります。

実行すると以下のようにPDFとその概要をまとめたテキストファイルが作成されます。

桃太郎_summary.txtの中身は以下のようになっていました。
桃太郎が鬼退治をして村に平和を取り戻す物語。
シンプルですが、内容は分かるように要約できました。
まとめ
Power Automate Desktopを使用することでPDFの内容を簡単に取得できるため、Azure OpenAIを使ってPDFの内容を要約することは比較的簡単に実装できました。今回はPDFを使用しましたが、ExcelファイルやWordファイルで簡単に内容を取得できるのがPower Automate Desktopを使用する利点となります。
また、要約以外にもカテゴライズだったり、QAの作成等の生成AIが得意とする分野と組み合わせることで可能性は広がります。
市民ユーザーの方でも気軽にOpenAIを使用できる参考になれば幸いです。
他にもPower Platform × AI や Teamsボット、Copilot などに取り組んでいます。ご質問ありましたらご支援させていただきますので
是非、以下の「お問い合わせフォーム」から気軽にお問合せください!
QESでは、Microsoft製品やAWS製品に関するソリューションに取り組んでおります。
他プロダクトに関するブログも投稿しておりますので是非ご覧ください。
また、QESでは採用活動を強化しております。
ブログを読んで弊社の業務内容に興味を持っていただけましたら、採用情報にもお目通しいただければ幸いです。
https://www.qes.co.jp/recruit.html
※このブログで参照されている、Microsoft、Windows、Azureその他のマイクロソフト製品およびサービスは、米国およびその他の国におけるマイクロソフトの商標または登録商標です。