Skip to content

【UiPath】PDFの読み取りを自動化する

Posted in ノート

Last updated on 2022年8月9日

今回はUiPath でのPDFの自動化について書いていきたいと思います。

UiPath では追加のパッケージをインストールすることでPDFを簡単に扱えるようになります。

この記事では、パッケージのインストールから実際に動かしてPDFの自動化の動作まで紹介したいと思います。


最近は紙から電子化の流れが進んでいますよね。

本記事では、UiPath Ver 2019.10.5 を使用しています。

PDFには2種類ある

あまり知られていませんがPDFにはテキストがちゃんと文字情報として保持されているPDFと画像として保持されているPDFの2種類があります。

これは、PDF上でマウスを当ててみれば分かります。

  • 文字情報を含むPDF
  • 文字情報を含まない(画像となっている)PDF

PDFの自動化では、これらのタイプを事前に把握しておきそれにあったアクティビティを使います。


PDF アクティビティのパッケージインストール

UiPathには、PDFを自動化するためのアクティビティパッケージがありますが、デフォルトではインストールされていません。

そのため、パッケージを管理から追加でインストールを行う必要があります。

UiPath Studioの上パネルから【パッケージを管理】をクリックします。

すると、新しいウィンドウが開くので上の検索欄に「PDF」と打ち込みます。

「UiPath.PDF.Activities」が表示されるので、右のインストールを押し、保存をします。

同意画面が出る場合は、内容を確認した上で「同意」を押します。

インストール完了後、アクティビティ一覧にPDFアクティビティが表示されているはずです。


アクティビティ名 処理内容
OCR で PDF を読み込み OCR を使用して指定した PDF ファイルからすべての文字を読み取りString 型変数に格納します
PDF から画像を抽出 指定した PDF ファイルからすべてのページを画像として抽出します
PDF のテキストを読み込み 指定した PDF ファイルからすべての文字を読み取りString 型変数に格納します
PDF のパスワードを管理 指定した PDF ファイルのパスワードを変更します
PDF のページ数を取得 PDF ファイルのページ数を取得します
PDF のページ範囲を抽出 PDF ドキュメントの指定したページ範囲を抽出しファイルとして生成します
PDF ファイルを結合 複数の PDFファイルを単一の PDF ファイルに結合します
PDF ページを画像としてエキスポート 指定した PDF ファイルの1ページを画像として出力します

利用アクティビティの整理

利用するアクティビティは、PDFが「文字情報を含むPDF」であるかどうかで判断します。

考え方を整理したチャートを下記に記載します。

【PDFのテキストを読み込み】を利用した場合、すべてのPDF上のテキストが取得されます。

必要な項目のみ取得したいとなった場合は、文字列の操作、正規表現等で対応する必要があります。(結構大変です)

また、文字情報を含まないPDFの自動化はUiPath単独では難しい場合があります。

その場合AIを組み合わせたOCRを提供しているサービスなどと連携するとよりよい自動化ができるので検討してみてください。


自動化のサンプル

PDFリーダである Acrobat Reader DC とUIPathでどのように自動化を行うか簡単なサンプルを紹介します。

前提条件として、PDFは文字情報を保持しているものとフォーマットは統一されていると仮定します。

また、PDFは一般的な業務を想定し、特定フォルダ内にまとめて格納されているとしましょう。

実装の手順は次のとおりです。

  1. 特定フォルダを読み込む繰り返し処理の実装
  2. ファイルを指定しAcrobatを起動する処理の実装
  3. [テキストを取得]アクティビティを利用して対象テキストを取得する処理の実装
  4. アプリケーションを閉じる処理の実装

1. 特定フォルダを読み込む繰り返し処理の実装

【繰り返し(コレクションの各要素)】アクティビティを利用してフォルダの中のファイルを順次取得します。

プロパティの「値」の欄には、下記のようにメソッドの文字列を入力します。

Directory.GetFiles(【フォルダの絶対パス】)

フォルダ内のファイルをまとめ処理する方法についてはこちらにまとめていますのでご覧ください。


2. ファイルを指定しAcrobatを起動する処理の実装

続いて、ファイルを対象に Acrobat DC を起動します。

アプリケーションの起動となるため、【アプリケーションを開く】アクティビティを利用します。

普段どおりの使い方で良いのですが、今回対象のファイルを指定して起動をするためプロパティパネルの [入力]-[引数] に値を入力する必要があります。

下記画像のように入力をしてみてください。

"/n " + item.ToString

3. 【テキストを取得】アクティビティを利用して対象テキストを取得する処理の実装

これもいつも通りですね、PDFが文字情報を含んでいるので読み取りたい箇所を指定してあげます。

今回、フォーマットが同様な複数のPDFを繰り返しで処理するため、セレクターの修復を行いアップデートをしておくのを忘れないでください。


4. アプリケーションを閉じる処理の実装

繰り返し処理をしているので、前のPDFが開いた状態だと誤認識やエラーの原因となってしまいます。

そのため、繰り返しごとにアプリケーションを閉じる処理を実装しておきましょう。

最終的な完成イメージは次のようになります。


最後に


UiPathでもPDFの自動化は可能だが読み取る対象によっては難しい場合もあるというのが本音です。なんでもかんでもRPAで完結ではなく、あくまでも連携ツールとして利用するほうがよいのかなと思います。

今回も最後までお読みいただきありがとうございました。

では。