一張紙質文檔上的文字內容如何提取出來?拍照,對照片使用光學字符識別(OCR)軟件進行識別,很容易就能夠搞定。html
然而,一樣一張紙質文檔上的文字,如何讓計算機程序理解其中所包含的內容?單憑OCR就不行了,這時候須要用到天然語言處理和實體提取技術。git
Amazon Textract是一項機器學習(ML)服務,可以輕鬆從各種文檔掃描件中提取文本與數據。Textract超越了簡單的OCR來識別表單中的字段內容和表中存儲的信息。基於此,你們可使用Amazon Textract即時「讀取」幾乎任何類型的文檔,並在無需任何人工或代碼編寫的前提下準確提取其中的文本與數據。github
Amazon Textract在各個領域中擁有諸多實際應用。例如,人才管理企業可使用Amazon Textract對候選人的技能集進行自動化提取,醫療保健組織則可從文檔中快速提取患者信息以知足醫療需求等。chrome
在組織處理各種文檔時,每每要求咱們從文檔中的非結構化文本處提取實體。例如,合同文檔中可能包含大量文本段落,其中的名詞與合同條款以天然語言形式直接列出,而非如表格數據般具備清晰的鍵/值或表單結構。Amazon Comprehend是一項天然語言處理(NLP)服務,可以從非結構化文本當中提取關鍵性短語、地點、名稱、組織、事件以及情感等。使用自定義實體識別,你們能夠將並未預先受到支持的新實體類型劃歸至預設的通用實體類型當中,藉此根據特定業務提取實體以知足實際需求。json
在本文中,咱們將展現如何使用Amazon Textract與Amazon Comprehend從文檔掃描件中提取自定義實體。segmentfault
用例概述架構
在本文中,咱們將對Resume Entities for NER數據集中的簡歷文檔進行處理,提取其中的實體,並嘗試以自動化方式實現整個流程以得到多種洞察看法,例如候選人掌握的具體技能等。咱們使用Amazon Textract從這些簡歷中提取文本,並使用Amazon Comprehend自定義實體功能,將AWS、C以及C++等技能識別爲自定義實體。如下截屏所示,爲示例輸入文檔。機器學習
如下截屏所示,爲使用Amazon Textract與Amazon Comprehend生成的相應輸出。異步
解決方案概述ide
下圖所示,爲一套無服務架構解決方案。該架構可以處理傳入文檔,使用Amazon Textract進行自定義實體提取,並使用Amazon Comprehend對自定義模型進行訓練。在將文檔上傳至Amazon Simple Storage Service (Amazon S3) 存儲桶時,即會觸發對應的AWS Lambda函數。該函數將調用Amazon Textract DetectDocumentText API以提取文本,並使用提取到的文本內容調用以進一步檢測其中的自定義實體。
整個解決方案分爲兩個部分:
啓動AWS CloudFormation堆棧
在本文中,咱們將使用AWS CloudFormation堆棧部署解決方案,並建立方案中所須要的各項資源,具體包括S3存儲桶、Amazon SageMaker實例以及必要的AWS身份與訪問管理(AWS Identity and Access Management,簡稱IAM)角色。關於各棧的更多詳細信息,請參閱演練:堆棧更新。
或者也能夠直接選擇Launch Stack以啓動該棧。
你們能夠在Events選項卡的堆棧建立流程部分,檢查各種事件。堆棧建立完成以後,請查看Resources選項卡以查看AWS CloudFormation模板建立的全部資源。
在Jupyter notebook上運行工做流
要運行工做流,請完成如下操做步驟:
到這裏,將看到如如下截屏所示的文件夾結構。
代碼演練
將全部文檔上傳至S3存儲桶。
如今各PDF已經準備就緒,可供Amazon Textract執行OCR處理。經過StartDocumentTextDetection異步API調用啓動處理流程。
在本文中,咱們受篇幅所限,僅展現兩份PDF格式的簡歷。若是須要,可使用所有220份簡歷。咱們已經將全部簡歷處理完成,供您直接參考。
要使用Amazon Comprehend訓練自定義實體識別模型,那麼與任何模型訓練工做同樣,訓練數據都是必不可少的前提條件。在本文中,咱們使用Ground Truth標記咱們的實體。在默認狀況下,Amazon Comprehend可以識別諸如人員、職務以及組織之類的實體。關於更多詳細信息,請參閱檢測實體。爲了展現自定義實體識別功能,咱們將重點關注簡歷中的候選人技能實體。Ground Truth已經提供充足的標記數據,你們能夠經過GitHub repo直接獲取這部分數據(詳見enity_list.csv文件)。關於標記數據的操做說明,請參閱使用Amazon SageMaker Ground Truth與Amazon Comprehend開發NER模型。
如今,咱們已經掌握了原始數據與標記數據,能夠開始訓練模型了。要啓動此流程,可以使用create_entity_recognizer API 調用。提交訓練做業以後,能夠在Amazon Comprehend控制檯上看到正在訓練的識別器。
在訓練過程當中,Amazon Comperhend會保留一部分數據做爲測試素材。在識別器訓練完成以後,你們還能夠查看各實體的識別性能以及識別器自身的總體性能水平。
咱們準備了部分文本樣本,用於測試剛剛訓練完成的自定義實體識別器。咱們經過相同的步驟執行OCR,然後將Amazon Textract輸出上傳至Amazon S3,並啓動自定義識別器做業。
在提交做業後,能夠在Amazon Comprehend控制檯的Analysis Jobs之下查看分析進度。
分析做業完成後,能夠下載輸出並查看結果。在本文的示例中,咱們將JSON結果轉換爲表格形式以提升可讀性。
總結
機器學習與人工智能可以極大提高組織的敏捷水平,將本來只能手動完成的任務轉爲自動化流程,藉此加強執行效率。在本文中,咱們演示了一套端到端架構,可經過Amazon Textract與Amazon Comprehend提取候選人技能等自定義實體。本文還將你們講解了如何使用Amazon Textract進行數據提取,以及如何使用Amazon Comprehend經過自有數據集訓練自定義實體識別器,並藉此實現自定義實體識別。這一流程能夠普遍應用於各個行業,例如醫療保健與金融服務等。
要了解關於Amazon Textract提供的各項文本與數據提取功能的更多詳細信息,請參閱Amazon Textract工做原理解讀。