オンラインの PDF ページ抽出ツールを使用して、スキャンした PDF またはスクレイピング PDF からデータを抽出します。

Python を使用して PDF からデータを抽出する方法

ユーザー定義のテンプレートを使用して、PDF または Word ドキュメントからデータを抽出する必要がある場合があります。クラウド上であらゆるドキュメントを解析し、プログラムによってフィールドやテーブルのデータを抽出できます。この記事では、Python の REST API を使用して PDF ドキュメントから特定のデータを抽出する方法を説明します。

この記事では次のトピックについて説明します。

ドキュメント パーサー REST API および Python SDK

PDF ドキュメントを解析し、テンプレートに基づいてデータを抽出するには、GroupDocs.Parser Cloud の Python SDK API を使用します。 PDF ドキュメント、Microsoft Office ドキュメント、OpenDocument ファイル形式など、すべての一般的なドキュメント タイプのデータを解析できます。 SDK を使用すると、テンプレートによってテキスト、画像を抽出し、データを解析できます。また、クラウド API の ドキュメント パーサー ファミリ メンバー として、.NET、Java、PHP、Ruby、および Node.js SDK も提供します。

コンソールで次のコマンドを使用して pip (Python 用パッケージ インストーラー) を使用して GroupDocs.Parser Cloud を Python プロジェクトにインストールし、pdf から情報を抽出できます。

pip install groupdocs_parser_cloud

ダッシュボード からクライアント ID とクライアント シークレットを取得し、以下に示すコードを追加してください。

client_id = "da0c487d-c1c0-45ae-b7bf-43eaf53c5ad5"
client_secret = "479db2b01dcb93a3d4d20efb16dea971"

configuration = groupdocs_parser_cloud.Configuration(client_id, client_secret)
configuration.api_base_url = "https://api.groupdocs.cloud"
my_storage = ""

Pythonを使用したテンプレートオブジェクトによるデータの抽出

以下に示す簡単な手順に従って、テンプレートを使用して PDF ドキュメントからデータを抽出できます。

ドキュメントをアップロードする

まず、以下のコード例を使用して、PDF ドキュメントをクラウドにアップロードします。

# APIのインスタンスを作成する
file_api = groupdocs_parser_cloud.FileApi.from_config(configuration)

# サンプルファイルをアップロードする
request = groupdocs_parser_cloud.UploadFileRequest("companies.pdf", "C:\\Files\\companies.pdf", my_storage)
response = file_api.upload_file(request)

その結果、アップロードされた PDF ファイルは、クラウド上のダッシュボードの ファイル セクション で利用できるようになります。

Python を使用したテンプレートベースのデータ抽出

テンプレートに基づいてプログラムで PDF ファイルからデータを抽出するには、以下の手順に従ってください。

  1. ParseApiのインスタンスを作成する
  2. ParseOptions を定義し、PDF ファイルへのパスを設定します。
  3. テンプレートをオブジェクトとして作成する
  4. ParseRequestの作成
  5. ParseApi.parse() メソッドを呼び出して結果を取得します

次のコード サンプルは、REST API を使用して、定義されたテンプレートに従って PDF ドキュメントからデータを抽出する方法を示しています。

# APIの初期化
parseApi = groupdocs_parser_cloud.ParseApi.from_config(configuration)

# 解析オプションを定義する
options = groupdocs_parser_cloud.ParseOptions()
options.file_info = groupdocs_parser_cloud.FileInfo()
options.file_info.file_path = "companies.pdf"

# テンプレートオブジェクトの取得
options.template = GetTemplate()  

# リクエストを解析する
request = groupdocs_parser_cloud.ParseRequest(options)
result = parseApi.parse(request)

# 結果を示す
for data in result.fields_data:
    if data.page_area.page_text_area is not None:
        print("Field name: " + data.name + ". Text :" + data.page_area.page_text_area.text)

    if data.page_area.page_table_area is not None:
        print("Table name: " + data.name)
       for cell in data.page_area.page_table_area.page_table_area_cells:
            print("Table cell. Row " + str(cell.row_index) + " column " + str(cell.column_index) + ". Text: " + cell.page_area.page_text_area.text);

PDFドキュメントに従って作成されたテンプレートを以下に示します。

def GetTemplate():
        field1 = groupdocs_parser_cloud.Field()
        field1.field_name = "Address"
        fieldPosition1 = groupdocs_parser_cloud.FieldPosition()
        fieldPosition1.field_position_type = "Regex"
        fieldPosition1.regex = "Company address:"
        field1.field_position = fieldPosition1

        field2 = groupdocs_parser_cloud.Field()
        field2.field_name = "CompanyAddress"
        fieldPosition2 = groupdocs_parser_cloud.FieldPosition()
        fieldPosition2.field_position_type = "Linked"
        fieldPosition2.linked_field_name = "ADDRESS"
        fieldPosition2.is_right_linked = True
        size2 = groupdocs_parser_cloud.Size()
        size2.width = 100
        size2.height = 10
        fieldPosition2.search_area = size2
        fieldPosition2.auto_scale = True
        field2.field_position = fieldPosition2
        
        field3 = groupdocs_parser_cloud.Field()
        field3.field_name = "Company"
        fieldPosition3 = groupdocs_parser_cloud.FieldPosition()
        fieldPosition3.field_position_type = "Regex"
        fieldPosition3.regex = "Company name:"
        field3.field_position = fieldPosition3
        
        field4 = groupdocs_parser_cloud.Field()
        field4.field_name = "CompanyName"
        fieldPosition4 = groupdocs_parser_cloud.FieldPosition()
        fieldPosition4.field_position_type = "Linked"
        fieldPosition4.linked_field_name = "Company"
        fieldPosition4.is_right_linked = True
        size4 = groupdocs_parser_cloud.Size()
        size4.width = 100
        size4.height = 10
        fieldPosition4.search_area = size4
        fieldPosition4.auto_scale = True
        field4.field_position = fieldPosition4
        
        table = groupdocs_parser_cloud.Table()
        table.table_name = "Companies"
        detectorparams = groupdocs_parser_cloud.DetectorParameters()
        rect = groupdocs_parser_cloud.Rectangle()
        size = groupdocs_parser_cloud.Size()
        size.height = 60
        size.width = 480
        position = groupdocs_parser_cloud.Point()
        position.x = 77
        position.y = 279
        rect.size = size
        rect.position = position
        detectorparams.rectangle = rect
        table.detector_parameters = detectorparams
        
        fields = [field1, field2, field3, field4]
        tables = [table]
        
        template = groupdocs_parser_cloud.Template()
        template.fields = fields
        template.tables = tables
        return template
テンプレートを使用してドキュメントを解析して抽出されたデータ

テンプレートを使用してドキュメントを解析して抽出されたデータ

Pythonを使用したテンプレートファイルによるデータの抽出

JSON ベースのテンプレート ファイルをプログラムで提供することで、PDF ドキュメントからデータを抽出することもできます。以下の手順に従って、テンプレート ファイルを提供してドキュメントを解析してください。

  1. ParseApiのインスタンスを作成する
  2. ParseOptions の定義
  3. PDFファイルへのパスを設定します
  4. テンプレートファイルへのパスを設定します
  5. ParseRequestの作成
  6. ParseApi.parse() メソッドを呼び出して結果を取得します

次のコード サンプルは、REST API を使用して PDF ドキュメントを解析し、JSON ファイルで提供されるテンプレートに従ってデータを抽出する方法を示しています。前述の手順に従ってファイルをアップロードしてください。

# APIの初期化
parseApi = groupdocs_parser_cloud.ParseApi.from_config(configuration)

# 解析オプションを定義する
options = groupdocs_parser_cloud.ParseOptions()
options.file_info = groupdocs_parser_cloud.FileInfo()
options.file_info.file_path = "companies.pdf"
options.template_path = "template.json"

# リクエストを解析する
request = groupdocs_parser_cloud.ParseRequest(options)
result = parseApi.parse(request)

# 結果を示す
for data in result.fields_data:
    if data.page_area.page_text_area is not None:
        print("Field name: " + data.name + ". Text :" + data.page_area.page_text_area.text)

    if data.page_area.page_table_area is not None:
        print("Table name: " + data.name)
       for cell in data.page_area.page_table_area.page_table_area_cells:
            print("Table cell. Row " + str(cell.row_index) + " column " + str(cell.column_index) + ". Text: " + cell.page_area.page_text_area.text);

JSON 形式のテンプレートを以下に示します。

{
  "Fields": [
    {
      "FieldName": "Address",
      "FieldPosition": {
        "FieldPositionType": "Regex",
        "Regex": "Companyaddress:"
      }
    },
    {
      "FieldName": "CompanyAddress",
      "FieldPosition": {
        "FieldPositionType": "Linked",
        "LinkedFieldName": "ADDRESS",
        "IsRightLinked": true,
        "SearchArea": {
          "Height": 10.0,
          "Width": 100.0
        },
        "AutoScale": true
      }
    },
    {
      "FieldName": "Company",
      "FieldPosition": {
        "FieldPositionType": "Regex",
        "Regex": "Companyname:"
      }
    },
    {
      "FieldName": "CompanyName",
      "FieldPosition": {
        "FieldPositionType": "Linked",
        "LinkedFieldName": "Company",
        "IsRightLinked": true,
        "SearchArea": {
          "Height": 10.0,
          "Width": 100.0
        },
        "AutoScale": true
      }
    }
  ],
  "Tables": [
    {
      "TableName": "Companies",
      "DetectorParameters": {
        "Rectangle": {
          "Position": {
            "X": 77.0,
            "Y": 279.0
          },
          "Size": {
            "Height": 41.0,
            "Width": 480.0
          }
        }
      }
    }
  ]
}

PDF ファイルをオンラインで抽出する

PDF抽出ツールをオンラインで無料で使用するにはどうすればよいですか?次の無料のオンライン PDF 解析ツールと無料の PDF ページ抽出ツールをお試しください。このオンライン PDF 抽出ツールおよびオンライン PDF 抽出無料ツールは、上記の API を使用して開発されています。 https://products.groupdocs.app/parser/pdf

結論

この記事では、クラウド上で提供されているテンプレートに従って PDF ドキュメントから特定のデータを抽出する方法を学習しました。また、テンプレート オブジェクトを作成し、JSON 形式でテンプレートを提供する方法も学習しました。この記事では、PDF データをオンラインで抽出するために、プログラムで PDF ファイルをクラウドにアップロードする方法についても説明しました。 GroupDocs.Parser Cloud API の詳細については、ドキュメント を使用して学習できます。また、API リファレンス セクションも提供されており、ブラウザーを通じて直接 API を視覚化して操作できるようになります。

質問する

PDF からのデータ抽出およびオンラインでの PDF データ抽出についてご質問がある場合は、無料サポート フォーラム までお気軽にお問い合わせください。

関連項目