使用亞馬遜文本提取自動從 PDF 文件中提取內容 - AWS 方案指引

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

使用亞馬遜文本提取自動從 PDF 文件中提取內容

創建者:賈天下 (AWS)

環境:生產

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

AWS 服務:Amazon S3; Amazon Textract Amazon SageMaker

Summary

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

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

Amazon Textract 處理檔案時,會建立下列Block物件清單:頁面、行和文字單字、表單 (鍵值組)、表格和儲存格,以及選取元素。其他物件資訊也包括在內,例如邊界方框、置信區間、ID 和關係。Amazon Textract 提取的內容信息作為字符串。需要正確識別和轉換的資料值,因為下游應用程式可以更輕鬆地使用這些值。 

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

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶

  • 現有的亞馬遜簡單儲存服務 (Amazon S3) 儲存貯體,用於在 PDF 檔案轉換為 JPEG 格式以供 Amazon Textract 處理之後存放這些檔案。如需 S3 儲存貯體的詳細資訊,請參閱 Amazon S3 文件中的儲存貯體概觀

  • Textract_PostProcessing.ipynbJupyter 筆記本(隨附),已安裝和配置。如需 Jupyter 筆記本的詳細資訊,請參閱 Amazon 文件中的建立 Jupyter 筆記本。 SageMaker

  • 具有相同格式的現有 PDF 文件。

  • 對 Python 的理解。

限制

架構

此模式的工作流程首先在範例 PDF 檔案上執行 Amazon Textract (第一次執行),然後在與第一個 PDF 具有相同格式 (重複執行) 的 PDF 檔案上執行。下圖顯示組合的「首次執行」和「重複執」工作流程,該工作流程會自動並重複從 PDF 檔案中擷取相同格式的內容。

使用 Amazon Textract 提取 PDF 文件中的內容

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

  1. 將 PDF 文件轉換為 JPEG 格式並將其存儲在 S3 存儲桶中。 

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

  3. 通過為每個必填字段添加正確的KeyName:DataType配對來編輯 JSON 文件。為「重複」執行階段建立TemplateJSON檔案。

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

  5. 準備與您的第一個 PDF 文件具有相同格式的 PDF 文件。

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

  7. 將剖析的 JSON 檔案與檔案相符。TemplateJSON

  8. 導入後處理更正。

最終的 JSON 輸出文件具有正確的KeyNameValue每個必填字段。

目標技術堆疊

  • Amazon SageMaker 

  • Amazon S3 

  • Amazon Textract

自動化和規模

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

工具

  • Amazon SageMaker 是全受管的 ML 服務,可協助您快速輕鬆地建立和訓練機器學習模型,然後將它們直接部署到生產就緒的託管環境中。

  • Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可協助您儲存、保護和擷取任何數量的資料。

  • Amazon Textract 可讓您輕鬆地將文件文字偵測和分析新增至您的應用程式。

史诗

任務描述所需技能

轉換 PDF 檔案。

將 PDF 檔案分割為單一頁面,然後將 PDF 檔案轉換為 JPEG 格式,以便進行 Amazon Textract 同步操作 (Syn API),為您的首次執行做好準備。

附註:您也可以針對多頁 PDF 檔案使用 Amazon Textract 非同步作業 (Asyn API)。

資料科學家、開發人

解析 Amazon Textract 塊響應 JSON。

開啟 Textract_PostProcessing.ipynb Jupyter 筆記本 (隨附),然後使用下列程式碼呼叫 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)
資料科學家、開發人

編輯範本 JSON 檔案。

編輯每個KeyName和對應的解析 JSONDataType(例如字符串,浮點數,整數或日期)和表頭(例如,ColumnNamesRowNames)。

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

資料科學家、開發人

定義後處理校正功能。

Amazon Textract 對TemplateJSON檔案的回應中的值為字串。日期、浮點數、整數或貨幣沒有差異。這些值必須針對您的下游使用案例轉換為正確的資料類型。 

使用以下代碼根據TemplateJSON文件更正每種數據類型:

finalJSON=postprocessingCorrection(parsedJSON,templateJSON)
資料科學家、開發人
任務描述所需技能

準備好 PDF 檔案。

準備 PDF 檔案,方法是將這些檔案分割為單一頁面,然後將它們轉換為 JPEG 格式以進行 Amazon Textract 同步操作 (Syn API)。

附註:您也可以針對多頁 PDF 檔案使用 Amazon Textract 非同步作業 (Asyn API)。

資料科學家、開發人

調用 Amazon Textract 取 API。

使用下列程式碼呼叫 Amazon Textract 取 API:

response = textract.analyze_document( Document={ 'S3Object': { 'Bucket': BUCKET, 'Name': '{}'.format(filename) } }, FeatureTypes=["TABLES", "FORMS"])
資料科學家、開發人

解析 Amazon Textract 塊響應 JSON。

通過使用下面的代碼解析響應 JSON 成一個表單和表:

parseformKV=form_kv_from_JSON(response) parseformTables=get_tables_fromJSON(response)
資料科學家、開發人

加載模板 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}
資料科學家、開發人

後處理校正。

DataTypeTemplateJSON文件和後處理函數中使用,通過使用以下代碼更正數據: 

finalJSON=postprocessingCorrection(form_kv_table_corrected_final,templateJSON)
資料科學家、開發人

相關資源

附件

若要存取與此文件相關聯的其他內容,請解壓縮下列檔案:attachment.zip