PowerAutomateでPDFから文字を抽出しExcelに転記
今回はPowerAutomateではPDFから文字を抽出します。
環境
Microsoft Windows 11 Home
Excel デスクトップ アプリ
PowerAutomate Desktop 無償版
PowerAutoMateを起動し新しいフローを作成します。
フロー名を入力してください、特に名前に制約はないですので分かりやすい名前をつけてください、今回はPDFTextにします。
今回テキスト化するPDFは以下の請求書.pdfの内容になります。
今回は名前、件名、品名、支払い機期限、請求金額の項目を抽出して、Ecxelに転記していきます。
左上のアクションでExcelを検索するとExcelに関連するアクションを出るのでそれをドラッグ&ドロップしていきます。
まずコピー元となるPDFからテキストを抽出します、「PDFからテキスト」をドラッグ&ドロップし「次のドキュメント」を選択しドキュメントパスを選択して下さい。
※パスは自身の保存しているパスを選択して下さい。
この操作でPDFからテキストを抽出することが出来ましたが今のままだと下記のように一つのセルに入ってしまいますので、テキストを分割していきます。
「テキストの分割」をドラッグ&ドロップして、「PDFからテキスト」の変数を指定して下さい。
今回は%ExtractedPDFText%を指定しています。
区切り記号の種類は「標準」、標準の区切り記号を「新しい行」にすると改行ごとにテキストを分割して変数「TextList」に格納されます。
この状態でExcelに書き出すと改行された状態で出力されます。
テキストを分割してExcelの行に書き出すことが出来ましたが、この状態だと件名の部分に名前も入っているので更に分割します。
%TextList%の変数に入っている件名の部分を指定にするには%TextList[3]%を指定します。
区切り記号の種類は「標準」、標準の区切り記号を「スペース」にするとスペース毎にテキストを分割して変数「TextList2」に格納されます。
この状態でExcelに出力すると以下のようになります。
次に苗字と名前を結合します、「テキストの結合」をドラッグ&ドロップして、「テキストの分割」の変数を指定して下さい。
今回は%TextList2%を指定しています。
%TextLis2t%の変数に入っている苗字は%TextList[5]%で名前は%TextList[6]%なので両方を指定します。
上記でひと通り前準備が終わったので、今回は請求情報を書き込む先として、請求一覧.xlsxとして下記のようなExcelファイルを用意します。
書き込むために請求一覧.xlsxのExcelを起動します、「Excelの起動」をドラッグ&ドロップし「次のドキュメント」を選択しドキュメントパスを選択して下さい。
※パスは自身の保存しているパスを選択して下さい。
その後「Excelワークシートに書き込む」をドラッグ&ドロップし、Excelインスタンス(今回は%ExcelInstance%)を指定し、名前が入っている変数の%JoinedText%を指定します。
2行目に書き込みたいため、行を2にします。
次に同じように「Excelワークシートに書き込む」をドラッグ&ドロップし、Excelインスタンス(今回は%ExcelInstance%)を指定し、品名が入っている変数の%TextList[4]%を指定します。
列を2、行を2にします。
品名と請求情報もそれぞれ設定してきます。
上記と同様に「Excelワークシートに書き込む」をそれぞれドラッグ&ドロップします。
支払期限は変数%TextList[25]%、請求金額は%TextList[23]%をそれぞれ指定し列をそれぞれ3と4を指定します。
全て設定すれば下記の画像のようになります。
その後保存して、▷実行して下さい。
実行後エクセルファイルが起動して下記のようにそれぞれ値が書き込まれています。
このようにPowerAutomateを利用することで、PDFの情報を自動で転記することが出来ます。
ただ今回のフローだと請求書を指定する必要があったり、Excelのデータを上書きしてしまうという問題もあるので、次回以降ではそういった部分を自動化していこうと思います。