本記事では、
Power Automate DesktopでPDFからデータを抽出する方法を解説しています
できること
日々の仕事の中で、PDFファイルを開いて中のデータを別のExcelに転記するような作業は行っていないでしょうか
これがメールに添付されているファイルの場合、元データとして添付ファイルをサーバーに保存して、PDFファイルを開いて、データを確認して、Excelファイルを開いて、数字を転記する
きっとあるんじゃないでしょうか
時間がもったいないです
Power Automate Desktopを活用すると、PDFファイルからデータを抽出してExcelファイルに貼り付けることが可能です
前提条件
・PDFファイルがテキストデータを保持していること
※PDFファイルの基がFAXで、画像として取り込んでいる場合は対応できない
・PDFが画像データの場合は、テキストデータにしてもらうか、Excelでもらえないかを相談して、自動化ができれば改善につながります
PDFからデータを自動で抽出する方法
構築するフローの全体像は次の通りです
1.PDFファイルからテーブルデータを取得
2.Excelを起動して、貼り付ける
データの取得と取得したデータをExcelに貼り付けるところまで解説します
Excel上のデータをどう処理するかは人それぞれですのでここまでの解説とします
1.PDFファイルからテーブルデータを取得
保存されているPDFファイルからデータをデータテーブルで取得します
使うアクションは、PDF > PDF からテーブルを抽出する
▼アクションの詳細
PDFファイル
開きたいPDFファイルを設定します
抽出するページ
PDFファイルのどのページを抽出するのかを設定します
通常は、「すべて」で問題ありません
パスワード
PDFファイルがパスワードで保護されている場合にパスワードを設定します
※保護されていない場合は、空白
ページの余白を超えるテーブルをマージする
あまり意識しなくても大丈夫です
取得したデータがおかしい場合、設定を変更してどう変わるのか確認してください
最初の行に列名が含まれています
通常、オン状態で取得することが多いです
ただし、今回は取得したデータをそのままExcelファイルに貼り付けたいので、列名もデータテーブルに取得するため、オフとしています
生成された変数
PDFファイル内でデータテーブルとして認識した情報を格納します
例えば、下図のようなPDFファイルからデータを抽出した場合、変数は以下のようになります
▼変数の中身
大きな表の部分以外にも、上段に配置された小さな枠部分もデータテーブルとして取得したため、変数には2つのアイテムが格納されました
ひとまず、本来取得したい情報[1]の中身だけを確認します
右側の詳細表示をクリックすると以下のように表示されます
.DataTableプロパティに、大きな表のデータが格納されます
.TableStartingPageプロパティは、取得した表が何ページから始まったか
.TableEndingPageプロパティは、Startとは逆で表が何ページで終わったか
今回はA3サイズ1ページのPDFファイルを取り込みましたので、どちらも1が入っていますが、複数ページにまたがる表を取得した際は、StartとEndが変わってきます
更に、DataTableの詳細表示をクリックします
データテーブルとして大きな表部分が格納されています
列名をExcelに貼り付けたいため、あえてデータの一部として取り込みました
2.Excelを起動して、貼り付ける
Excelを起動します
使うアクションは、Excel > Excel の起動
空のドキュメントを作成します
起動したExcelにデータテーブルを貼り付けます
その際、必要なデータテーブルのみを貼り付けたいので、PDFからテーブルを抽出した際に生成された変数を For each でループして、必要なデータのみを利用します
以下のように、反復処理を行う値に、PDFから取得したデータテーブルを設定します
すると、[0]のテーブルから順にCurrentItemという変数に格納され、テーブル1つずつ処理を行うことができます
今回のPDFの場合、データテーブルの[0][0]座標に「商品名」という文字列が入っているものが利用したい表になるので、条件分岐を使って、利用したい表を判断するには次のようになります
For eachで生成されるCurrentItemは元のデータテーブルと同じプロパティを持っています
ですので、%CurrentItem.DataTable[0][0]%と記述することで欲しい情報を取得できます
ここまで出来たらあとは、Excelを起動して、A1にデータテーブルを貼り付けるだけです
3.フローの全体イメージ
これまで解説してきた内容でフローを組むと全体はこうなります
ポイント
・PDFファイルがテキストデータを保持していることが必要
・PDFファイルの元データが画像や紙の場合は、読み取りできない
・アクションでデータテーブルを取得したのち、テーブルのチェックをする
・Power Automate Desktopがアクションで生成する変数は、詳細表示で深堀する
・データテーブルをFor eachでループする際に生成される「CurrentItem」は理解必須
最後に
何かと利用が増えているPDFファイルの自動化を組んでみました
業務目線で見ると、PDFファイルではなくExcelファイルでもらえるのであれば手間も減るので、改善を試みる際は、まずそこから変更できないか相談すべきです
しかしながら、PDFファイルでしかもらえないことも多々ありますので、今回ご紹介した方法でPDFファイルからデータをExcelに貼り付けて、活用してみてください