臨近年末你們都忙,而公司的財務人員尤其忙碌。各類工做須要處理,尤爲是發票相關的那些。雖然不少地方已經能夠提供電子版發票,但紙質發票在不少時候依然是惟一的選擇。若是隻是整理在一塊兒進行歸檔,那還好說;但若是你須要從一大堆紙質發票中找出某些信息,這時候該怎麼辦?html
===git
各行各業的組織都須要處理大量紙質文件,其中又以發票類票據居多。以往,對於包含表格、表單、段落以及複選框的各種掃描文檔,咱們每每很難從中提取出有效信息。雖然目前很多組織已經經過人工、自定義代碼或者光學字符識別(OCR)等技術解決了信息提取難題,但其中仍然須要藉助完善的表單提取與自定義工做流模板。github
此外,在從文檔中提取到文本或其餘形式的內容以後,用戶還但願從收據或發票中幫助最終用戶整理出更多深層洞見。但這又須要構建起復雜的天然語言處理(NLP)模型,模型的訓練又要佔用大量訓練數據與計算資源。機器學習模型的構建與訓練每每既昂貴、又極爲耗時。web
而且對於最終用戶來講,提供相似於人的界面來與這些文檔交互是很麻煩的。雖然最終用戶能夠經過給服務檯打電話的方式獲得很多幫助,但隨着時間的推移,組織成本總會所以而不斷提高。後端
本文將向你們介紹如何使用AWS AI服務自動實現文本數據處理與洞見發現。藉助AWS AI服務(包括Amazon Textract、Amazon Comprehend以及Amazon Lex),咱們能夠設置自動化無服務器解決方案以知足上述要求。咱們將分步引導您完成如下操做流程:api
接下來,咱們將介紹用於構建這樣一套解決方案的具體服務與架構選項。服務器
相關服務架構
這套解決方案將使用如下AI服務、無服務器技術以及託管服務創建起一套可擴展且具有成本效益的架構:less
架構機器學習
下圖所示,爲這套解決方案的基本架構。
此架構包含如下操做步驟:
*在聊天機器人顯示歡迎致辭以後,用戶輸入「Show me the invoice summary(顯示發票摘要)」便可調用GetInvoiceSummary Lex意圖,並由Lambda函數調用Amazon Comprehend DetectEntities API以檢測要實現的實體。
*當用戶輸入「Get me the invoice details(獲取發票明細)」時,便可調用GetInvoiceDetails意圖,Amazon Lex會提示用戶輸入發票編號,並由Lambda函數調用Amazon Comprehend DetectEntities API以返回發票的詳細信息。
*在用戶輸入「Can you show me the invoice notes for <invoice number>(可否顯示〈發票編號〉發票註釋)」時,便可調用GetInvoiceNotes意圖,由Lambda函數調用Amazon Comprehend DetectKeyPhrases API以返回與發票相關的註釋內容。
*使用現有CloudFormation棧做爲嵌套棧,你們能夠將Lexbot Web UI部署在AWS CloudFormation模板中。要下載該棧,請參閱爲聊天機器人部署Web UI。該嵌套棧將部署一套Lex Web UI,並將此網頁做爲S3存儲桶的靜態網站。Web UI使用Amazon Cognito生成用於身份驗證的訪問令牌,並使用AWS CodeStar設置交付管道。最終用戶將經過Web UI與該聊天機器人進行交互。
使用AWS CloudFormation部署此架構
咱們須要部署一套CloudFormation模板,用於置備必要的AWS身份與訪問管理(AWS Indentity and Access Management,簡稱IAM)角色、服務,並提供解決方案所必需的Amazon S三、Lambda、Amazon Textract、Amazon Comprehend以及Amazon Lex聊天機器人等組件。
關於上述資源的更多詳細信息,請參閱AWS IAM資源。
此模板使用AWS無服務器應用程序模式(AWS Serverless Application Model,AWS SAM)以簡化面向無服務器應用程序的函數與API定義流程,同時爲各項服務提供環境變量等功能支持。
如下截屏所示,爲Stack Detail頁面中顯示的棧狀態,目前爲CREATE_IN_PROGRESS。在20分鐘以內,該狀態將轉換爲CREATE_COMPLETE,表明棧建立完成。
將文檔上傳至S3存儲桶
要將文檔上傳至新的S3存儲桶,請選擇與以前複製的AssetsUploadBucket相對應的S3存儲桶URL。上傳PDF或圖像,便可開始文本提取流程。
咱們也能夠從GitHub repo下載本文中使用的發票數據,並將其上傳至AssetsUploadBucket S3 URL。建議在發票模板中使用自定義解決方案。關於上傳文件的更多詳細信息,請參閱如何向S3存儲桶上傳文件與文件夾?
在上傳完成以後,能夠在Amazon S3控制檯的Overview選項卡中看到該文件。
在文件上傳完畢後,便可開始文檔文本提取流程。要查看待提取的文檔,請打開存儲桶並選擇以前複製的URL。
在Overview選項卡中,能夠下載該文件並檢查內容,審覈其是否與上傳的文檔徹底相同。
構建聊天機器人
咱們將使用如下會話對機器人進行建模:
Bot: Welcome to InvoiceBot. You can ask me to provide your invoice summary, or details of your invoices, or your invoice notes__(歡迎訪問InvoiceBot__。您能夠要求我提供發票摘要、發票明細或發票註釋)
用戶:Show me the invoice summary(顯示發票摘要)
Bot: I reviewed your input documents and found 1 invoice with invoice numbers 35678-9 totaling $2100.0. I can get you invoice details or invoice notes. Simply type your request__(我檢查了您的輸入文件,發現其中包含1__張發票,發票編號爲35678-9__,金額總計2100__美圓。我能夠爲您提供發票詳細信息或發票註釋。請輸入您的要求)
用戶:Get me the invoice details(獲取發票明細)
Bot: Please enter the invoice number__(請輸入發票編號)
用戶:35678-9
Bot: Invoice Details for 35678-9: On 5/10/2019 for the item One there is a charge of 1500.00. On 5/11/2019 for the item Merchant Two there is a charge of 100.00. On 5/12/2019 for the item Merchant Three there is a charge of 300.00. On 5/13/2019 for the item Merchant Three there is a charge of 200.00. You can request me for invoice notes or simply close this chat.__(35678-9__發票明細:2019/5/10__,費用項一金額爲1500__美圓。2019/1/11__,費用項二爲100__美圓。2019/5/12__,費用項三爲300__美圓。20195/13__,費用項四爲200__美圓。您能夠要求我提供發票記錄,也能夠直接關閉本次聊天。)
用戶:Can you show me the invoice notes for 35678-9(顯示35678-9號發票註釋)
Bot: Invoice Notes for 35678-9: 5/13/2019 Merchant Three 200.00 Merchant Three 300.00 Laptop Office Supplies Merchant Two 100.00 Team Dinner Food 5/12/2019 5/11/2019 Desks and Office Supplies 5/10/1019 Merchant One 1500.00 Chairs . Feel free to try the options again or you can simply close this chat__(35678-9__號發票註釋:2019/5/13__,購入三項計200__美圓。購入三項計300__美圓,爲電腦辦公桌。2019/5/12__購入兩項100__美圓,爲團隊晚餐。2019/5/11__,爲辦公桌與辦公服務器。2019/5/10 _購入一項計1500__美圓,爲椅子。_
咱們還可使用如下意圖構建其餘Amazon Lex機器人(InvoiceBot):
發佈聊天機器人
以前的解決方案概述中所提到,咱們可使用Amazon Lex聊天機器人(InvoiceBot)與Amazon Comprehend提取自Amazon Textract文本中的洞見進行交互。
要發佈聊天機器人,請完成如下操做步驟:
這時系統會出現顯示彈框。
在機器人發佈完成後,系統將打開如下頁面。
使用聊天機器人
咱們的聊天機器人如今已經就緒並可供使用。導航至複製自AWS CloudFormation Outputs選項卡處的URL LexUIWebAppUrl。如下截屏所示,爲用戶與該機器人的對話結果(從左至右閱讀):
總結
本文介紹瞭如何在Amazon Lex中建立一款會話式聊天機器人,使用Amazon Textract從圖像或PDF文檔中提取文本,使用Amazon Comprehend從文本中提取洞見,並經過機器人實現與洞見的交互。本文中所使用的代碼皆發佈在GitHub repo當中,供你們隨意使用及擴展。