在 Node.js 中使用 REST API 從 PDF 中提取數據

在 Node.js 中使用 REST API 從 PDF 中提取數據

我們可以輕鬆地解析 PDF 文檔並使用雲端用戶定義的模板提取特定數據。我們可以通過編程方式從 PDF 文件中提取字段和表格數據。在本文中,我們將學習如何在 Node.js 中使用 REST API 從 PDF 中提取數據。

本文應涵蓋以下主題:

REST API 和 Node.js SDK 從 PDF 中提取數據

為了基於模板解析 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 中提取數據

我們可以按照以下步驟使用基於 JSON 的模板文件解析 PDF 文檔並提取數據:

  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 文檔中提取數據。請按照前面提到的步驟上傳文件。

// 此代碼示例演示如何通過模闆對象解析 PDF 文檔。
// 接口初始化
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 文檔。
// 接口初始化
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 scraper API 和免費的 PDF 數據提取器從 pdf 中提取信息。此外,您可以使用 文檔 了解有關 GroupDocs.Parser Cloud API 的更多信息。我們還提供了一個 API 參考 部分,讓您可以直接通過瀏覽器可視化我們的 API 並與之交互。如有任何歧義,請隨時在論壇上與我們聯繫。

也可以看看