Node.js の REST API を使用して PDF からデータを抽出する

Node.js の REST API を使用して PDF からデータを抽出する

PDF ドキュメントを簡単に解析し、クラウド上のユーザー定義のテンプレートを使用して特定のデータを抽出できます。 PDF ファイルからフィールドとテーブル データをプログラムで抽出できます。この記事では、Node.js の REST API を使用して PDF からデータを抽出する方法を学びます。

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

PDF からデータを抽出するための REST API と Node.js SDK

PDF ドキュメントを解析し、テンプレートに基づいてデータを抽出するには、GroupDocs.Parser Cloud の Node.js SDK API を使用します。また、他の サポートされているドキュメント タイプ の解析や、テンプレートを使用したテキスト、画像、特定のデータの抽出も可能になります。コンソールで次のコマンドを使用してインストールしてください。

npm install groupdocs-parser-cloud

上記の手順に従う前に、ダッシュボードからクライアント ID とシークレットを取得してください。 ID とシークレットを取得したら、以下に示すようにコードを追加します。

// このコード例は、クライアント ID とシークレットを追加する方法を示しています。
global.clientId = "112f0f38-9dae-42d5-b4fc-cc84ae644972";
global.clientSecret = "16ad3fe0bdc39c910f57d2fd48a5d618";

global.myStorage = "";

const configuration = new groupdocs_parser_cloud.Configuration(clientId, clientSecret);
configuration.apiBaseUrl = "https://api.groupdocs.cloud";

Node.js で JSON ベースのテンプレート ファイルを使用してデータを抽出する

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

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

まず、以下に示すコードサンプルを使用して、PDF ドキュメントをクラウドにアップロードして PDF をスクレイピングします。

// このコード例は、PDF ドキュメントをクラウドにアップロードする方法を示しています。
// FileApi を構築する
let fileApi = groupdocs_parser_cloud.FileApi.fromConfig(configuration);
let file = 'C:\\Files\\companies.pdf';

// ファイルの読み取り
fs.readFile(file, (err, fileStream) => {
  // ファイルのアップロード要求
  let request = new groupdocs_parser_cloud.UploadFileRequest("companies.pdf", fileStream, myStorage);
  // ファイルをアップロードする
  fileApi.uploadFile(request);
});

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

JSON ベースのテンプレート ファイルを使用して PDF からデータを抽出する

以下の手順に従って、PDF ドキュメントを解析し、JSON ベースのテンプレート ファイルを使用してデータを抽出できます。

  1. ParseApi のインスタンスを作成します。
  2. アップロードされた PDF ファイルのパスを指定します。
  3. テンプレートの JSON ファイルへのパスを設定します。
  4. 最後に、ドキュメントを解析してデータを抽出します。

次のコード サンプルは、REST API を使用して JSON ファイルで提供されるテンプレートに従ってデータを抽出する方法を示しています。

// このコード例は、JSON ベースのテンプレートによって PDF ドキュメントを解析する方法を示します。
// APIのインスタンスを作成する
let parseApi = groupdocs_parser_cloud.ParseApi.fromConfig(configuration);

// 入力ファイルパス
let fileInfo = new groupdocs_parser_cloud.FileInfo()
fileInfo.filePath = "companies.pdf"

// 解析オプションの作成
let options = new groupdocs_parser_cloud.ParseOptions();
options.fileInfo = fileInfo;
options.templatePath = "template.json";

// 解析リクエストの作成
let request = new groupdocs_parser_cloud.ParseRequest(options);

// 文書を解析する
let response = await parseApi.parse(request);

// 表示出力
response.fieldsData.forEach(data => {
  if (data.pageArea.pageTextArea != null) {
    console.log("Field name: " + data.name + ". Text :" + data.pageArea.pageTextArea.text);
  }

  if (data.pageArea.pageTableArea != null) {
    console.log("Table name: " + data.name);

    data.pageArea.pageTableArea.pageTableAreaCells.forEach(cell => {
      console.log("Table cell. Row " + cell.rowIndex + " column " + cell.columnIndex + ". Text: " + cell.pageArea.pageTextArea.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
          }
        }
      }
    }
  ]
}

Node.js のテンプレート オブジェクトを使用してデータを抽出する

以下の手順に従って、オブジェクトとして定義されたテンプレートに基づいて PDF ファイルからデータを抽出できます。

  1. ParseApi のインスタンスを作成します。
  2. アップロードされた PDF ファイルのパスを指定します。
  3. テンプレートをオブジェクトとして初期化します。
  4. 最後に、ドキュメントを解析してデータを抽出します。

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

// このコード例は、Template オブジェクトによって PDF ドキュメントを解析する方法を示します。
// APIの初期化
let parseApi = groupdocs_parser_cloud.ParseApi.fromConfig(configuration);

// 入力ファイル
let fileInfo = new groupdocs_parser_cloud.FileInfo();
fileInfo.filePath = "companies.pdf";

// 解析オプションを定義する
let options = new groupdocs_parser_cloud.ParseOptions();
options.fileInfo = fileInfo;

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

// 解析リクエストの作成
let request = new groupdocs_parser_cloud.ParseRequest(options);
// 書類を渡す
let result = await parseApi.parse(request);

// 結果を示す
result.fieldsData.forEach(data => {
  if (data.pageArea.pageTextArea != null) {
    console.log("Field name: " + data.name + ". Text :" + data.pageArea.pageTextArea.text);
  }

  if (data.pageArea.pageTableArea != null) {
    console.log("Table name: " + data.name);

    data.pageArea.pageTableArea.pageTableAreaCells.forEach(cell => {
      console.log("Table cell. Row " + cell.rowIndex + " column " + cell.columnIndex + ". Text: " + cell.pageArea.pageTextArea.text);
    });
  }
});

PDF からデータをスクレイピングするために、PDF ドキュメントに従って作成されたテンプレート オブジェクトを以下に示します。

// このコード例は、テンプレート オブジェクトを示します。
let field1 = new groupdocs_parser_cloud.Field();
field1.fieldName = "Address";
let fieldPosition1 = new groupdocs_parser_cloud.FieldPosition();
fieldPosition1.fieldPositionType = "Regex";
fieldPosition1.regex = "Company address:";
field1.fieldPosition = fieldPosition1;

let field2 = new groupdocs_parser_cloud.Field();
field2.fieldName = "CompanyAddress";
let fieldPosition2 = new groupdocs_parser_cloud.FieldPosition();
fieldPosition2.fieldPositionType = "Linked";
fieldPosition2.linkedFieldName = "ADDRESS";
fieldPosition2.isRightLinked = true;
let size2 = new groupdocs_parser_cloud.Size();
size2.width = 100;
size2.height = 10;
fieldPosition2.searchArea = size2;
fieldPosition2.autoScale = true;
field2.fieldPosition = fieldPosition2;

let field3 = new groupdocs_parser_cloud.Field();
field3.fieldName = "Company";
let fieldPosition3 = new groupdocs_parser_cloud.FieldPosition();
fieldPosition3.fieldPositionType = "Regex";
fieldPosition3.regex = "Company name:";
field3.fieldPosition = fieldPosition3;

let field4 = new groupdocs_parser_cloud.Field();
field4.fieldName = "CompanyName";
let fieldPosition4 = new groupdocs_parser_cloud.FieldPosition();
fieldPosition4.fieldPositionType = "Linked";
fieldPosition4.linkedFieldName = "Company";
fieldPosition4.isRightLinked = true;
let size4 = new groupdocs_parser_cloud.Size();
size4.width = 100;
size4.height = 10;
fieldPosition4.searchArea = size4;
fieldPosition4.autoScale = true;
field4.fieldPosition = fieldPosition4;

let table = new groupdocs_parser_cloud.Table();
table.tableName = "Companies";
let detectorparams = new groupdocs_parser_cloud.DetectorParameters();
let rect = new groupdocs_parser_cloud.Rectangle();
let size = new groupdocs_parser_cloud.Size();
size.height = 60;
size.width = 480;
let position = new groupdocs_parser_cloud.Point();
position.x = 77;
position.y = 279;
rect.size = size;
rect.position = position;
detectorparams.rectangle = rect;
table.detectorParameters = detectorparams;

let fields = [field1, field2, field3, field4];
let tables = [table];
let template = new groupdocs_parser_cloud.Template();
template.fields = fields;
template.tables = tables;

return template;
Node.js のテンプレート オブジェクトを使用してデータを抽出する

Node.js のテンプレート オブジェクトを使用してデータを抽出する

Node.js のテンプレートを使用してコンテナ内のドキュメントを解析する

コンテナ内で利用可能な PDF ドキュメントを解析し、テンプレート オブジェクトを使用してデータを抽出することもできます。以下の手順に従ってドキュメントを解析し、コンテナ内のスキャンされた PDF からデータを抽出してください。

  1. ParseApi のインスタンスを作成します。
  2. アップロードされたアーカイブ ファイルのパスを指定します。
  3. テンプレートをオブジェクトとして初期化します。
  4. コンテナアイテムを提供します。
  5. 最後に、ドキュメントを解析してデータを抽出します。

次のコード サンプルは、REST API を使用して ZIP アーカイブ内の PDF ドキュメントを解析する方法を示しています。前述の手順に従ってファイルをアップロードし、PDF から情報を抽出してください。

// このコード例は、コンテナ内で利用可能な PDF ドキュメントを解析する方法を示します。
// APIの初期化
let parseApi = groupdocs_parser_cloud.ParseApi.fromConfig(configuration);

// 入力ファイルパス
let fileInfo = new groupdocs_parser_cloud.FileInfo();
fileInfo.filePath = "archive.zip";

// 解析オプションの作成
let options = new groupdocs_parser_cloud.ParseOptions();
options.fileInfo = fileInfo;

// テンプレートオブジェクトを取得する
options.template = GetTemplate();

// コンテナアイテム情報
let containerItemInfo = new groupdocs_parser_cloud.ContainerItemInfo();
containerItemInfo.relativePath = "companies.pdf";
options.containerItemInfo = containerItemInfo;

// 解析リクエストの作成
let request = new groupdocs_parser_cloud.ParseRequest(options);

// リクエストの作成
let response = await parseApi.parse(request);

// 表示出力
response.fieldsData.forEach(data => {
  if (data.pageArea.pageTextArea != null) {
    console.log("Field name: " + data.name + ". Text :" + data.pageArea.pageTextArea.text);
  }

  if (data.pageArea.pageTableArea != null) {
    console.log("Table name: " + data.name);

    data.pageArea.pageTableArea.pageTableAreaCells.forEach(cell => {
      console.log("Table cell. Row " + cell.rowIndex + " column " + cell.columnIndex + ". Text: " + cell.pageArea.pageTextArea.text);
    });
  }
});

オンラインで試す

オンラインで PDF データを抽出するには、次の無料のオンライン PDF 解析ツールをお試しください。この PDF コンテンツ抽出プログラムは、上記の API を使用して開発されています。 https://products.groupdocs.app/parser/pdf

結論

この記事では、クラウド上で提供されているテンプレートに従って PDF ドキュメントから特定のデータを抽出する方法を学習しました。また、テンプレート オブジェクトを作成する方法、または JSON 形式のテンプレートを使用する方法も学習しました。これで、pdf スクレーパー API と無料の PDF データ抽出ツールを使用して PDF から情報を抽出する方法がわかりました。さらに、GroupDocs.Parser Cloud API の詳細については、ドキュメント を使用して学習できます。また、ブラウザーを通じて API を直接視覚化して操作できる API リファレンス セクションも提供しています。不明な点がある場合は、フォーラム までお気軽にお問い合わせください。

関連項目