我们可以轻松地解析 PDF 文档并使用云端用户定义的模板提取特定数据。我们可以通过编程方式从 PDF 文件中提取字段和表格数据。在本文中,我们将学习如何在 Node.js 中使用 REST API 从 PDF 中提取数据。
本文应涵盖以下主题:
- REST API 和 Node.js SDK 从 PDF 中提取数据
- 在 Node.js 中使用基于 JSON 的模板文件提取数据
- 在 Node.js 中使用模板对象提取数据
- 在 Node.js 中使用模板解析容器内的文档
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文件到云端
- 使用基于 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 文档并提取数据:
- 创建 ParseApi 的实例。
- 提供上传的 PDF 文件路径。
- 设置模板 JSON 文件的路径。
- 最后,解析文档并提取数据。
以下代码示例显示了如何使用 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 文件中提取数据:
- 创建 ParseApi 的实例。
- 提供上传的 PDF 文件路径。
- 将模板初始化为对象。
- 最后,解析文档并提取数据。
以下代码示例显示了如何使用 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 中使用模板解析容器内的文档
我们还可以解析容器内可用的 PDF 文档并使用模板对象提取数据。请按照下面提到的步骤解析文档以从容器内的扫描 pdf 中提取数据。
- 创建 ParseApi 的实例。
- 提供上传的存档文件路径。
- 将模板初始化为对象。
- 提供容器项目。
- 最后,解析文档并提取数据。
以下代码示例显示了如何使用 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 并与之交互。如有任何歧义,请随时在论坛上与我们联系。