使用在線 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數據有任何疑問,請隨時在免費支持論壇上向我們提問

也可以看看