こんにちは!UiPath メンターです。
紙の請求書がPDF(電子ファイル)に変わるにつれて、RPAの出番は急増しています。
しかし、PDFはExcelと違って「セル」がないため、ロボットにとっては少し読み取りにくい相手です。
「どうやって金額の場所を教えればいいの?」
「画像として読み取るの?文字として読み取るの?」
今回は、目的に合わせて2つの武器を使い分ける方法を伝授します。
- 方法①(今回のメイン): PDFを画面で開いて、Webのように読み取る(特定の項目が欲しい時)
- 方法②(プロ向け): 裏側で文字データを一気に引き抜く(全文が欲しい時)
1. 方法①:画面操作で「金額」をピンポイントで抜く
これが最もモダンデザインらしい、直感的な方法です。
PDFをAdobe Acrobat Readerや、Google Chrome(ブラウザ)で開き、それを「Webサイトと同じように」扱います。
メリット: 設定が簡単。「アンカー(目印)」が使えるのでズレに強い。
デメリット: PDFを開く画面動作が入るため、少しだけ時間がかかる。
手順
- 対象のPDFファイルを、Adobe ReaderやChromeなどで開いておきます。
- Studioで [アプリケーション/ブラウザを使用] を配置し、開いたPDF画面を指定します。
- その中に [テキストを取得 (Get Text)] を配置します。
アンカーの出番!
第5回で学んだテクニックがここでも火を噴きます。
- ターゲット(緑): 実際の金額(例:
¥10,800) - アンカー(青): その横にある「ご請求金額」というラベル
こう設定しておけば、他のページの金額と間違えることなく、確実に「請求金額」だけを抜き取れます。
Webサイトと全く同じ感覚でPDFを攻略できるのです!
2. 方法②:パッケージを使って「全文」を抜く
次は、PDFファイルを開かずに、裏側でデータだけを高速に抜き出す方法です。
こちらは標準機能ではないため、専用のパッケージを入れます。
準備:パッケージのインストール
- リボンの [パッケージを管理] を開きます。
- [オフィシャル] から UiPath.PDF.Activities を検索してインストールします。
テキストを一括取得する
インストールが完了すると、アクティビティパネルに「PDF」カテゴリが増えます。
- [PDF のテキストを読み込み (Read PDF Text)] を配置します。
- [ファイル名] にPDFのパスを指定します。
- [出力] プロパティで変数(例:
str_AllText)を作成して保存します。
これを実行してメッセージボックスで表示すると、PDFに書かれている全ての文字がズラズラと表示されます。
「特定のキーワードが含まれているかチェックしたい」場合や、「全文をメモ帳に保存したい」場合はこの方法が最強です。
💡 メンターからのアドバイス:どっちを使えばいい?
特定のデータ(金額や日付)が欲しいなら「方法①(画面操作)」が圧倒的に楽です。
方法②で金額だけ抜き出すには、取得した大量のテキストの中から「¥マークの後ろの数字を探す」という複雑な加工(文字列操作)が必要になるからです。
3. PDFが「画像」の場合(OCR)
もしPDFが「紙をスキャンしただけの画像データ」だった場合、上記の方法では文字を選択できません。
その時は、OCR(光学文字認識)の力を借ります。
- 方法①の場合:[アプリケーション/ブラウザを使用] の中で、[画像からテキストを取得 (Get Text from Image)] を使います。
- 方法②の場合:[OCR を使用して PDF のテキストを読み込み (Read PDF With OCR)] を使います。
どちらも「画像をAIが読み取って文字にする」機能です。
精度は100%ではありませんが、手入力よりは遥かに効率的です。
今回のまとめ
- 特定の項目(金額など)が欲しいなら、[アプリケーション/ブラウザを使用] + [テキストを取得] がおすすめ。
- アンカーを使えば、レイアウトが多少ズレても正しく読み取れる。
- 全文が欲しいなら UiPath.PDF.Activities パッケージの [PDF のテキストを読み込み] を使う。
⚠️ つまづきポイント:ChromeでPDFが開かない?
ChromeでPDFを開こうとしてもダウンロードされてしまう場合は、Chromeの設定で「PDF を Chrome で開く」ように変更するか、Adobe Acrobat Readerなどの専用アプリを使いましょう。
専用アプリの方が、UiPathの認識精度(セレクターの安定性)は高い傾向にあります。
さて、PDFからデータを読み取ることはできましたが、取得したデータが
"合計:¥10,800 (税込)"
のように、余計な文字を含んでいることはありませんか?
次回からは第2章「データを自在に操る」編。
この "合計:¥10,800 (税込)" から、数字の 10800 だけを綺麗に取り出す「文字列操作」や、日付の計算テクニックを学びます。
実務レベルのロボットには必須のスキルです!