アクティビティ
最新
バナーの背景画像
Document Understanding アクティビティ
最終更新日 2024 年 4 月 10 日

PDF ファイルを読み込み

ドキュメントに含まれるすべての文字を読み取ることのできるアクティビティを使用して、.pdf ファイルの内容を読み取り、個別に抽出できます。

必要に応じて、文字を認識できるシンプルなアクティビティを使用することも、OCR エンジンを持つアクティビティを使用することもできます。OCR エンジンを使用する利点は、スキャンしたドキュメント、署名のあるドキュメント、あるいは手書きのドキュメントであっても、ドキュメントの読み取りを適用できることです。

以下の例は、.pdf ファイルを読み取る 2 つの状況を示しています。
  • 1 つ目のシナリオとして、[PDF のテキストを読み込み] アクティビティを使用しながら .pdf ファイルを読み取る方法を説明しています。
  • 2 つ目のシナリオとして、[OCR で PDF を読み込み] アクティビティを使用しながら .pdf ファイルを読み取る方法を説明しています。

    この 2 つのシナリオの主な違いは、2 つ目のシナリオで OCR エンジンも使用されている点です。これは、分析されたファイルが画像やスキャンされたファイルである場合、あるいは署名や手書きのフィールドを含むものである場合に、抽出された情報の詳細が最初のケースよりも正確だということを意味しています。どちらのアクティビティも、UiPath.PDF.Activities パッケージに含まれています。

両方のシナリオに必要なワークフローは 1 つだけであり、任意の読み取り方法の選択をユーザーに求める時点までは共通です。

サンプルと同等のオートメーション プロセスは以下のように構築できます。

  1. Studio を開いて、新しいプロセスを作成します。
  2. ワークフロー デザイナー[フローチャート] コンテナーをドラッグします。

    • 次の変数を作成します。

      変数名

      変数の型

      既定値

      chooseOption

      GenericValue

       
      注: 同じ場所からプロセス全体を実行できるようにするか、指定されたファイルを使用するためにこの例をダウンロードするには、プロジェクト ディレクトリに .pdf ファイルを追加します。
  3. [入力ダイアログ] アクティビティをドラッグし、[Start] ノードに接続します。

    • [プロパティ] パネルで、式 "Choose one option below:"[ラベル] フィールドに追加します。
    • [Options] フィールドに式 {"Read PDF Text", "Read PDF With OCR"} を追加します。
    • [Title] フィールドに値 "Options" を追加します。
    • Result (値) フィールドに変数 chooseOption を追加します。
  4. [入力ダイアログ] アクティビティの下に [フロー条件分岐] アクティビティを配置し、アクティビティに接続します。

    • [プロパティ] パネルで [条件] フィールドに式 chooseOption = "Read PDF Text" を追加します。
  5. [シーケンス] コンテナーをドラッグして、[フロー条件分岐] アクティビティの [True] ブランチに接続します。[シーケンス] の名前は [PDF のテキストを読み込み] にします。このアクティビティは、正規表現を使用して情報を抽出します。

    • 次の変数を作成します。

      変数名

      変数の型

      既定値

      extractedText

      文字列

       

      arrayText

      System.String[]

       

      address

      GenericValue

       

      city

      文字列

       

      phoneNumber

      文字列

       

      invoiceNumber

      文字列

       

      vendor

      GenericValue

       

      bankName

      文字列

       

      bankAccount

      文字列

       

      ibanCode

      文字列

       
  6. [シーケンス] コンテナーをドラッグして、[フロー条件分岐] アクティビティの [False] ブランチに接続します。[シーケンス] の名前は [OCR で PDF を読み込み] にします。このアクティビティは、OCRエンジン (Microsoft OCR および Tesseract OCR) を使用して情報を抽出します。
  • 次の変数を作成します。

    変数名

    変数の型

    既定値

    extractedTextTesseract

    文字列

     

    extractedTextMicrosoft

    文字列

     

現時点でのワークフローは次のようになります。



[PDF のテキストを読み込み] アクティビティを使用して PDF ファイルを読み込む
  1. [PDF のテキストを読み込み] シーケンス コンテナーをダブルクリックして開きます。
  2. シーケンス内に [PDF のテキストを読み込み] アクティビティをドラッグします。

    • [プロパティ] パネルの [ファイル名] フィールドに式 "NPO Invoice.pdf" を追加します。
    • [Range] フィールドに値 "All" を追加します。
    • [テキスト] フィールドに変数 extractedText を追加します。
  3. [PDF のテキストを読み込み] アクティビティの下に [代入] アクティビティを配置します。

    • [左辺値 (To)/宛先] フィールドに変数 arrayText を追加します。
    • [右辺値 (Value)] フィールドに式 extractedText.Split(Environment.NewLine.ToArray, StringSplitOptions.RemoveEmptyEntries) を追加します。
  4. [代入] アクティビティの下に [条件分岐 (if)] アクティビティをドラッグします。

    • [条件 (Condition)] フィールドに式 arrayText(0).Equals("Tiefland Glass AG") を追加します。
  5. [シーケンス] コンテナー内に [代入] アクティビティをドラッグします。

    • [左辺値 (To)/宛先] フィールドに変数 address を追加します。
    • [右辺値 (Value)] フィールドに式 arrayText(2) を追加します。
  6. もう 1 つの [代入] アクティビティを追加し、前のアクティビティの下に配置します。

    • [左辺値 (To)/宛先] フィールドに変数 city を追加します。
    • [右辺値 (Value)] フィールドに式 arrayText(3).Split(","c)(0) を追加します。
  7. もう 1 つの [代入] アクティビティを追加し、前のアクティビティの下に配置します。

    • [左辺値 (To)/宛先] フィールドに変数 phoneNumber を追加します。
    • [右辺値 (Value)] フィールドに式 arrayText(4).Split(":"c)(1).Split({"INVOICE"},StringSplitOptions.None)(0) を追加します。
  8. もう 1 つの [代入] アクティビティを追加し、前のアクティビティの下に配置します。

    • [左辺値 (To)/宛先] フィールドに変数 invoiceNumber を追加します。
    • [右辺値 (Value)] フィールドに式 arrayText(4).Split(":"c)(1).Split({"INVOICE"},StringSplitOptions.None)(1).Split("#"c)(1) を追加します。
  9. もう 1 つの [代入] アクティビティを追加し、前のアクティビティの下に配置します。

    • [左辺値 (To)/宛先] フィールドに変数 vendor を追加します。
    • [右辺値 (Value)] フィールドに式 arrayText(arrayText.Count-5) を追加します。
  10. [Else] フィールド内に [代入] アクティビティをドラッグします。

    • [左辺値 (To)/宛先] フィールドに変数 address を追加します。
    • [右辺値 (Value)] フィールドに式 arrayText(1) を追加します。
  11. もう 1 つの [代入] アクティビティを追加し、前のアクティビティの下に配置します。

    • [左辺値 (To)/宛先] フィールドに変数 city を追加します。
    • [右辺値 (Value)] フィールドに式 arrayText(2).Split(","c)(0) を追加します。
  12. もう 1 つの [代入] アクティビティを追加し、前のアクティビティの下に配置します。

    • [左辺値 (To)/宛先] フィールドに変数 phoneNumber を追加します。
    • [右辺値 (Value)] フィールドに式 arrayText(3).Split(":"c)(1).Split({"INVOICE"},StringSplitOptions.None)(0) を追加します。
  13. もう 1 つの [代入] アクティビティを追加し、前のアクティビティの下に配置します。

    • [左辺値 (To)/宛先] フィールドに変数 invoiceNumber を追加します。
    • [右辺値 (Value)] フィールドに式 arrayText(3).Split(":"c)(1).Split({"INVOICE"},StringSplitOptions.None)(1).Split("#"c)(1) を追加します。
  14. もう 1 つの [代入] アクティビティを追加し、前のアクティビティの下に配置します。

    • [左辺値 (To)/宛先] フィールドに変数 vendor を追加します。
    • [右辺値 (Value)] フィールドに式 arrayText(arrayText.Count-5) を追加します。

      現時点でのシーケンスは次のようになります。



  15. [条件分岐 (if)] コンテナーの下に [繰り返し (コレクションの各要素)] アクティビティを配置し、アクティビティをダブルクリックして開きます。

    • Values (値) フィールドに変数 arrayText を追加します。
  16. [繰り返し (コレクションの各要素)] アクティビティの [本体] コンテナー内に [条件分岐 (if)] アクティビティをドラッグします。

    • [条件 (Condition)] フィールドに式 item.Contains("Bank Name:") を追加します。
  17. [Then] フィールド内に [代入] アクティビティをドラッグします。

    • [左辺値 (To)/宛先] フィールドに変数 bankName を追加します。
    • [右辺値 (Value)] フィールドに式 item.Split(":"c)(1) を追加します。
  18. 前のアクティビティの下に [条件分岐 (if)] アクティビティを配置します。

    • [条件 (Condition)] フィールドに式 item.Contains("Bank Account:") を追加します。
  19. [Then] フィールド内に [代入] アクティビティをドラッグします。

    • [左辺値 (To)/宛先] フィールドに変数 bankName を追加します。
    • [右辺値 (Value)] フィールドに式 item.Split(":"c)(1) を追加します。
  20. 前のアクティビティの下に [条件分岐 (if)] アクティビティを配置します。

    • [条件 (Condition)] フィールドに式 item.contains("IBAN Code:") を追加します。
  21. [Then] フィールド内に [代入] アクティビティをドラッグします。

    • [左辺値 (To)/宛先] フィールドに変数 ibanCode を追加します。
    • [右辺値 (Value)] フィールドに式 item.Split(":"c)(1) を追加します。

      [繰り返し (コレクションの各要素)] コンテナーは次のようになります。



  22. [PDF のテキストを読み込み] シーケンスに戻り、[繰り返し (コレクションの各要素)] アクティビティの下に [テキスト ファイルに書き込み] アクティビティをドラッグします。

    • FileName フィールドに値 "InvoiceDetails.txt" を追加します。
    • "Invoice details"+Environment.NewLine+Environment.NewLine+"Vendor: "+vendor+Environment.NewLine+"Vendor address: "+address+Environment.NewLine+"City: "+city+Environment.NewLine+"Phone number:"+phoneNumber+Environment.NewLine+"Invoice number:"+invoiceNumber+Environment.NewLine+"Bank name:"+bankName+Environment.NewLine+"Bank account:"+bankAccount+Environment.NewLine+"IBAN Code:"+ibanCode[テキスト] フィールドに追加します。

      [繰り返し (コレクションの各要素)] コンテナーは次のようになります。



  23. [Main] ワークフローの作業領域に戻ります。
[OCR で PDF を読み込み] アクティビティを使用して PDF ファイルを読み込む
  1. [OCR で PDF を読み込み] シーケンス コンテナーをダブルクリックして開きます。
  2. シーケンス内に [OCR で PDF を読み込み] アクティビティをドラッグします。

    • FileName フィールドに値 "Invoice02.pdf" を追加します。
    • [プロパティ] パネルで [並列度] フィールドに値 1 を追加します。
  3. [OCR で PDF を読み込み] アクティビティ内に Google OCR エンジンをドラッグします。

    • [プロパティ] パネルの [テキスト] フィールドに変数 extractedTextTesseract を追加します。
  4. もう 1 つの [OCR で PDF を読み込み] アクティビティをドラッグし、前のアクティビティの下に配置します。

    • FileName フィールドに値 "Invoice02.pdf" を追加します。
    • [プロパティ] パネルで [並列度] フィールドに値 1 を追加します。
  5. [OCR で PDF を読み込み] アクティビティ内に Microsoft OCR エンジンをドラッグします。

    • [プロパティ] パネルの [テキスト] フィールドに変数 extractedTextMicrosoft を追加します。
  6. [OCR で PDF を読み込み] アクティビティの下に [テキスト ファイルに書き込み] アクティビティをドラッグします。

    • FileName フィールドに値 "OCRMicrosoft.txt" を追加します。
    • [テキスト] フィールドに変数 extractedTextMicrosoft を追加します。
  7. 前の Write Text File アクティビティの下に Write Text File アクティビティをドラッグします。

    • FileName フィールドに値 "OCRTesseract.txt" を追加します。
    • [テキスト] フィールドに変数 extractedTextTesseract を追加します。

      [OCR で PDF を読み込み] シーケンスは、次のようになります。



  8. プロセスを実行します。ロボットは、指定されたプロセスを使用してデータを抽出し、出力を .txt ファイルに保存します。

こちらからサンプルをダウンロードできます。

Was this page helpful?

サポートを受ける
RPA について学ぶ - オートメーション コース
UiPath コミュニティ フォーラム
UiPath ロゴ (白)
信頼とセキュリティ
© 2005-2024 UiPath. All rights reserved.