使用在线 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

请从 dashboard 获取您的 Client ID 和 Client Secret 并添加如下所示的代码:

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 文档中提取数据。

# 接口初始化
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. 定义解析选项
  3. 设置PDF文件的路径
  4. 设置模板文件的路径
  5. 创建 ParseRequest
  6. 通过调用 ParseApi.parse() 方法获取结果

以下代码示例显示了如何使用 REST API 根据 JSON 文件中提供的模板解析 PDF 文档并提取数据。请按照前面提到的步骤上传文件。

# 接口初始化
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数据有任何疑问,请随时在免费支持论坛中向我们提问

也可以看看