使用 Amazon Textract 自動從 PDF 文件中提取內容 - AWS Prescriptive Guidance

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon Textract 自動從 PDF 文件中提取內容

由嘉天霞(AWS)創作

環境:生產

技能:機器學習與人工智慧;分析;大數據

AWS 服務:Amazon S3; Amazon Textract; 亞馬遜

Summary

許多組織需要從已上傳至其業務應用程式的 PDF 檔案中擷取資訊。例如,組織可能需要準確地從稅務或醫療 PDF 檔案擷取資訊,以便進行稅務分析或醫療索償處理。

在 Amazon Web Services (AWS) 雲端上,Amazon Textract 會自動從 PDF 檔案擷取資訊 (例如,列印的文字、表格和表格),並產生包含來自原始 PDF 檔案的資訊的 JSON 格式檔案。您可以在 AWS 管理主控台中使用 Amazon Textract,或透過實作 API 呼叫來使用。建議您使用程式化 API 呼叫來縮放並自動處理大量的 PDF 檔案。

當 Amazon Textract 處理一個文件時,它會創建以下列表Block物件:文字的頁面、行和文字、表單 (索引鍵-值配對)、表格和儲存格,以及選取項目元素。其他物件資訊也包含在內,例如週框方塊、信賴區間、ID 和關聯性。Amazon Textract 提取的內容信息作為字符串。正確識別和轉換的資料值是必要的,因為您的下游應用程式可以更輕鬆地使用這些值。 

此模式描述了使用 Amazon Textract 自動從 PDF 檔案擷取內容並將其處理成乾淨的輸出的逐步工作流程。模式使用範本比對技術來正確識別必要的欄位、索引鍵名稱和資料表,然後將後處理修正套用至每個資料類型。您可以使用此模式來處理不同類型的 PDF 檔案,然後可以縮放和自動化此工作流程,以處理格式相同的 PDF 檔案。  

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶

  • 現有的 Amazon Simple Storage Service (Amazon S3) 儲存貯體,可在轉換為 JPEG 格式以供 Amazon Textract 處理。如需 S3 儲存貯體的詳細資訊,請參閱儲存貯體概觀在 Amazon S3 文件中。

  • 所以此Textract_PostProcessing.ipynbJupyter 筆記本(已連接),安裝和配置。如需 Jupyter 筆記本的詳細資訊,請參閱建立 Jupyter 筆記本在 Amazon SagMaker 文件中。

  • 具有相同格式的現有 PDF 檔案。

  • 一個對 Python 的理解。

限制

Architecture

此模式的工作流程首先在示例 PDF 文件(首次執行),然後在具有與第一個 PDF 相同格式的 PDF 文件上運行它(重複執行。下圖顯示所有首次執行重複執行工作流程,可自動且重複地從具有相同格式的 PDF 檔案擷取內容。

此圖表顯示此模式的下列工作流程:

  1. 將 PDF 檔案轉換為 JPEG 格式,並將它儲存在 S3 儲存貯體中。 

  2. 調用 Amazon Textract API 並解析 Amazon Textract 響應 JSON 文件。 

  3. 編輯 JSON 文件,通過添加正確的KeyName:DataType對每個必要欄位。建立TemplateJSON檔案重複執行階段。

  4. 定義每種資料類型的後處理修正函數 (例如,浮點數、整數和日期)。

  5. 準備與第一個 PDF 檔案格式相同的 PDF 檔案。

  6. 調用 Amazon Textract API 並解析 Amazon Textract 響應 JSON。

  7. 將解析的 JSON 文件與TemplateJSONfile.

  8. 導入後續處理更正。

最終的 JSON 輸出文件具有正確的KeyNameValue針對每個必要欄位。

目標技術堆疊

  • Amazon SageMaker 

  • Amazon S3 

  • Amazon Textract

自動化和擴充

您可以自動化重複執行工作流程使用 AWS Lambda 函數,該函數會在新的 PDF 檔案新增至 Amazon S3 時啟動 Amazon Amazon Textract。然後,Amazon Textract 會執行處理指令碼,最終輸出可以儲存到儲存位置。如需此項目的詳細資訊,請參閱使用 Amazon S3 觸發條件叫用 Lambda 函數在 Lambda 文檔中。

Tools

  • Amazon SageMaker— SageMaker 是全受管理的 ML 服務,可協助您快速輕鬆建置及培訓 ML 模型,然後直接將它們部署至生產就緒的託管環境。

  • Amazon S3— Amazon Simple Storage Service (Amazon S3) 是網際網路儲存服務。

  • Amazon Textract— Amazon Textract 讓您在應用程式中新增文件文字偵測和分析變得更容易。

Epics

任務描述所需的技能
轉換 PDF 檔案。

將 PDF 檔案分割成單一頁面,並將其轉換為 Amazon Textract 的 JPEG 格式,以便您首次執行準備 PDF 檔案。同步作業(Syn API

請注意:您也可以使用 Amazon Textract非同步作業(Asyn API) 用於多頁 PDF 檔案。

DataScientist,開發人員
解析 Amazon Textract 響應 JSON。

開啟Textract_PostProcessing.ipynbJupyter 筆記本(附件),並使用以下代碼調用 Amazon Textract 本 API:

response = textract.analyze_document( Document={         'S3Object': {             'Bucket': BUCKET,             'Name': '{}'.format(filename)                     }                 },         FeatureTypes=["TABLES", "FORMS"])

使用下列程式碼剖析成表單和資料表的回應 JSON:

parseformKV=form_kv_from_JSON(response) parseformTables=get_tables_fromJSON(response)

DataScientist,開發人員
編輯範本 JSON 檔案。

編輯每個KeyName和對應DataType(例如,字串、浮點數、整數或日期),以及表格標頭 (例如ColumnNamesRowNames

此範本適用於每種 PDF 檔案類型,這意味著該範本可以重複使用於具有相同格式的 PDF 檔案。

DataScientist,開發人員
定義後處理修正功能。

亞馬遜 Textract 的響應中的值TemplateJSON檔案是字串。日期、浮點數、整數或貨幣沒有區別。這些值必須轉換為適用於下游使用案例的正確資料類型。 

根據修正每個資料類型TemplateJSON檔案,使用下列程式碼:

finalJSON=postprocessingCorrection(parsedJSON,templateJSON)
DataScientist,開發人員
任務描述所需的技能
準備 PDF 檔案。

準備 PDF 文件通過將它們分割成一個單一的頁面,並將它們轉換成 JPEG 格式的 Amazon Textract同步作業(Syn API

請注意:您也可以使用 Amazon Textract非同步作業(Asyn API) 用於多頁 PDF 檔案。

DataScientist,開發人員
調用 Amazon Textract API。

通過使用下面的代碼調用 Amazon Textract API:

response = textract.analyze_document(         Document={         'S3Object': {             'Bucket': BUCKET,             'Name': '{}'.format(filename)                     }                 },         FeatureTypes=["TABLES", "FORMS"])

DataScientist,開發人員
解析 Amazon Textract 響應 JSON。

使用下列程式碼剖析成表單和資料表的回應 JSON:

parseformKV=form_kv_from_JSON(response) parseformTables=get_tables_fromJSON(response)

DataScientist,開發人員
載入範本 JSON 檔案,並將其與已剖析的 JSON 進行比對。

使用TemplateJSON檔案,藉由使用下列命令擷取正確的索引鍵值組和資料表:

form_kv_corrected=form_kv_correction(parseformKV,templateJSON) form_table_corrected=form_Table_correction(parseformTables, templateJSON) form_kv_table_corrected_final={**form_kv_corrected , **form_table_corrected}

DataScientist,開發人員
後處理修正。

使用DataType中的TemplateJSON檔案和後處理函數,藉由使用下列程式碼來修正資料: 

finalJSON=postprocessingCorrection(form_kv_table_corrected_final,templateJSON)
DataScientist,開發人員

Attachments

attachment.zip