activities
latest
false
Document Understanding アクティビティ
Last updated 2024年10月29日

PDF ファイルを読み込み

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

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

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

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

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

手順
  1. Studio を開いて、新しいプロセスを作成します。
  2. ワークフロー デザイナー[フローチャート] コンテナーを追加します。
    1. chooseOption という名前の変数を作成し、型を GenericValue に設定します。既定値は設定しません。
      注: 同じ場所からプロセス全体を実行できるようにするか、指定されたファイルを使用するためにこの例をダウンロードするには、プロジェクト ディレクトリに .pdf ファイルを追加します。
  3. [入力ダイアログ] アクティビティを追加し、[Start] ノードに接続します。
    1. [プロパティ] パネルで、式 "Choose one option below:"[ラベル] フィールドに追加します。
    2. [Options] フィールドに式 {"Read PDF Text", "Read PDF With OCR"} を追加します。
    3. [Title] フィールドに値 "Options" を追加します。
    4. Result (値) フィールドに変数 chooseOption を追加します。
  4. [入力ダイアログ] アクティビティの後に [フロー条件分岐] アクティビティを追加し、アクティビティに接続します。
    1. [プロパティ] パネルで [条件] フィールドに式 chooseOption = "Read PDF Text" を追加します。
  5. [シーケンス] コンテナーを追加して、[フロー条件分岐] アクティビティの [True] ブランチに接続します。[シーケンス] の名前は「PDF のテキストを読み込み」にします。このアクティビティは、正規表現を使用して情報を抽出します。
    1. 次の表に示す変数を作成します。
      表 1. 作成する変数

      変数名

      変数の型

      既定値

      extractedText

      文字列

      N/A

      arrayText

      System.String[]

      N/A

      address

      GenericValue

      N/A

      city

      文字列

      N/A

      phoneNumber

      文字列

      N/A

      invoiceNumber

      文字列

      N/A

      vendor

      GenericValue

      N/A

      bankName

      文字列

      N/A

      bankAccount

      文字列

      N/A

      ibanCode

      文字列

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

      変数名

      変数の型

      既定値

      extractedTextTesseract

      文字列

      N/A

      extractedTextMicrosoft

      文字列

      N/A
    図 1. ワークフローの開始の概要

  7. [PDF のテキストを読み込み] アクティビティを使用して PDF ファイルを読み込みます。
    1. [PDF のテキストを読み込み] シーケンス コンテナーをダブルクリックして開きます。
    2. シーケンス内に [PDF のテキストを読み込み] アクティビティを追加します。
      1. [プロパティ] パネルの [ファイル名] フィールドに式 "NPO Invoice.pdf" を追加します。
      2. [Range] フィールドに値 "All" を追加します。
      3. [テキスト] フィールドに変数 extractedText を追加します。
  8. [PDF のテキストを読み込み] アクティビティの後に [代入] アクティビティを追加します。
    1. [左辺値 (To)/宛先] フィールドに変数 arrayText を追加します。
    2. [右辺値 (Value)] フィールドに式 extractedText.Split(Environment.NewLine.ToArray, StringSplitOptions.RemoveEmptyEntries) を追加します。
  9. [代入] アクティビティの下に [条件分岐 (if)] アクティビティを追加します。
    1. [条件 (Condition)] フィールドに式 arrayText(0).Equals("Tiefland Glass AG") を追加します。
  10. [シーケンス] コンテナー内に [代入] アクティビティを追加します。
    1. [左辺値 (To)/宛先] フィールドに変数 address を追加します。
    2. [右辺値 (Value)] フィールドに式 arrayText(2) を追加します。
  11. もう 1 つの [代入] アクティビティを追加し、前のアクティビティの後に配置します。
    1. [左辺値 (To)/宛先] フィールドに変数 city を追加します。
    2. [右辺値 (Value)] フィールドに式 arrayText(3).Split(","c)(0) を追加します。
  12. もう 1 つの [代入] アクティビティを追加し、前のアクティビティの後に配置します。
    1. [左辺値 (To)/宛先] フィールドに変数 phoneNumber を追加します。
    2. [右辺値 (Value)] フィールドに式 arrayText(4).Split(":"c)(1).Split({"INVOICE"},StringSplitOptions.None)(0) を追加します。
  13. もう 1 つの [代入] アクティビティを追加し、前のアクティビティの後に配置します。
    1. [左辺値 (To)/宛先] フィールドに変数 invoiceNumber を追加します。
    2. [右辺値 (Value)] フィールドに式 arrayText(4).Split(":"c)(1).Split({"INVOICE"},StringSplitOptions.None)(1).Split("#"c)(1) を追加します。
  14. もう 1 つの [代入] アクティビティを追加し、前のアクティビティの後に配置します。
    1. [左辺値 (To)/宛先] フィールドに変数 vendor を追加します。
    2. [右辺値 (Value)] フィールドに式 arrayText(arrayText.Count-5) を追加します。
  15. [Else] フィールド内に [代入] アクティビティを追加します。
    1. [左辺値 (To)/宛先] フィールドに変数 address を追加します。
    2. [右辺値 (Value)] フィールドに式 arrayText(1) を追加します。
  16. もう 1 つの [代入] アクティビティを追加し、前のアクティビティの後に配置します。
    1. [左辺値 (To)/宛先] フィールドに変数 city を追加します。
    2. [右辺値 (Value)] フィールドに式 arrayText(2).Split(","c)(0) を追加します。
  17. もう 1 つの [代入] アクティビティを追加し、前のアクティビティの後に配置します。
    1. [左辺値 (To)/宛先] フィールドに変数 phoneNumber を追加します。
    2. [右辺値 (Value)] フィールドに式 arrayText(3).Split(":"c)(1).Split({"INVOICE"},StringSplitOptions.None)(0) を追加します。
  18. もう 1 つの [代入] アクティビティを追加し、前のアクティビティの後に配置します。
    1. [左辺値 (To)/宛先] フィールドに変数 invoiceNumber を追加します。
    2. [右辺値 (Value)] フィールドに式 arrayText(3).Split(":"c)(1).Split({"INVOICE"},StringSplitOptions.None)(1).Split("#"c)(1) を追加します。
  19. もう 1 つの [代入] アクティビティを追加し、前のアクティビティの後に配置します。
    1. [左辺値 (To)/宛先] フィールドに変数 vendor を追加します。
    2. [右辺値 (Value)] フィールドに式 arrayText(arrayText.Count-5) を追加します。
      図 2. [代入] アクティビティを含むシーケンスの概要

  20. [条件分岐 (if)] コンテナーの後に [繰り返し (コレクションの各要素)] アクティビティを配置します。
    1. Values (値) フィールドに変数 arrayText を追加します。
  21. [繰り返し (コレクションの各要素)] アクティビティの [本体] コンテナー内に [条件分岐 (if)] アクティビティを追加します。
    1. [条件 (Condition)] フィールドに式 item.Contains("Bank Name:") を追加します。
  22. [Then] フィールド内に [代入] アクティビティを追加します。
    1. [左辺値 (To)/宛先] フィールドに変数 bankName を追加します。
    2. [右辺値 (Value)] フィールドに式 item.Split(":"c)(1) を追加します。
  23. 前のアクティビティの後に [条件分岐 (if)] アクティビティを追加します。
    1. [条件 (Condition)] フィールドに式 item.Contains("Bank Account:") を追加します。
  24. [Then] フィールド内に [代入] アクティビティを追加します。
    1. [左辺値 (To)/宛先] フィールドに変数 bankName を追加します。
    2. [右辺値 (Value)] フィールドに式 item.Split(":"c)(1) を追加します。
  25. 前のアクティビティの後に [条件分岐 (if)] アクティビティを追加します。
    1. [条件 (Condition)] フィールドに式 item.contains("IBAN Code:") を追加します。
  26. [Then] フィールド内に [代入] アクティビティを追加します。
    1. [左辺値 (To)/宛先] フィールドに変数 ibanCode を追加します。
    2. [右辺値 (Value)] フィールドに式 item.Split(":"c)(1) を追加します。
      図 3. [繰り返し (コレクションの各要素)] アクティビティの概要

  27. [PDF のテキストを読み込み] シーケンスに戻り、[繰り返し (コレクションの各要素)] アクティビティの下に [テキスト ファイルに書き込み] アクティビティを追加します。
    1. FileName フィールドに値 "InvoiceDetails.txt" を追加します。
    2. "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[テキスト] フィールドに追加します。
      図 4. [繰り返し (コレクションの各要素)] コンテナーの概要

  28. [Main] ワークフローの作業領域に戻ります。
  29. [OCR で PDF を読み込み] アクティビティを使用して PDF ファイルを読み込みます。
    1. [OCR で PDF を読み込み] シーケンス コンテナーを開きます。
    2. シーケンス内に [OCR で PDF を読み込み] アクティビティをドラッグします。
      1. FileName フィールドに値 "Invoice02.pdf" を追加します。
      2. [プロパティ] パネルで [並列度] フィールドに値 1 を追加します。
    3. [OCR で PDF を読み込み] アクティビティ内に Google OCR エンジンをドラッグします。
      1. [プロパティ] パネルの [テキスト] フィールドに変数 extractedTextTesseract を追加します。
    4. もう 1 つの [OCR で PDF を読み込み] アクティビティをドラッグし、前のアクティビティの後に配置します。
      1. FileName フィールドに値 "Invoice02.pdf" を追加します。
      2. [プロパティ] パネルで [並列度] フィールドに値 1 を追加します。
    5. [OCR で PDF を読み込み] アクティビティ内に Microsoft OCR エンジンをドラッグします。
      1. [プロパティ] パネルの [テキスト] フィールドに変数 extractedTextMicrosoft を追加します。
    6. [OCR で PDF を読み込み] アクティビティの下に [テキスト ファイルに書き込み] アクティビティをドラッグします。
      1. FileName フィールドに値 "OCRMicrosoft.txt" を追加します。
      2. [テキスト] フィールドに変数 extractedTextMicrosoft を追加します。
    7. 前の Write Text File アクティビティの下に Write Text File アクティビティをドラッグします。
      1. FileName フィールドに値 "OCRTesseract.txt" を追加します。
      2. [テキスト] フィールドに変数 extractedTextTesseract を追加します。
        図 5. [OCR で PDF を読み込み] アクティビティの概要

  30. プロセスを実行します。ロボットは、指定されたプロセスを使用してデータを抽出し、出力を .txt ファイルに保存します。
この例を ZIP 形式でダウンロードするには、「こちらのリンクにアクセスしてください。

このページは役に立ちましたか?

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