年末忙着整發票的財務人員,這個好東西你可必定要試試

image

臨近年末你們都忙,而公司的財務人員尤其忙碌。各類工做須要處理,尤爲是發票相關的那些。雖然不少地方已經能夠提供電子版發票,但紙質發票在不少時候依然是惟一的選擇。若是隻是整理在一塊兒進行歸檔,那還好說;但若是你須要從一大堆紙質發票中找出某些信息,這時候該怎麼辦?html

===git

各行各業的組織都須要處理大量紙質文件,其中又以發票類票據居多。以往,對於包含表格、表單、段落以及複選框的各種掃描文檔,咱們每每很難從中提取出有效信息。雖然目前很多組織已經經過人工、自定義代碼或者光學字符識別(OCR)等技術解決了信息提取難題,但其中仍然須要藉助完善的表單提取與自定義工做流模板。github

此外,在從文檔中提取到文本或其餘形式的內容以後,用戶還但願從收據或發票中幫助最終用戶整理出更多深層洞見。但這又須要構建起復雜的天然語言處理(NLP)模型,模型的訓練又要佔用大量訓練數據與計算資源。機器學習模型的構建與訓練每每既昂貴、又極爲耗時。web

而且對於最終用戶來講,提供相似於人的界面來與這些文檔交互是很麻煩的。雖然最終用戶能夠經過給服務檯打電話的方式獲得很多幫助,但隨着時間的推移,組織成本總會所以而不斷提高。後端

本文將向你們介紹如何使用AWS AI服務自動實現文本數據處理與洞見發現。藉助AWS AI服務(包括Amazon TextractAmazon Comprehend以及Amazon Lex),咱們能夠設置自動化無服務器解決方案以知足上述要求。咱們將分步引導您完成如下操做流程:api

  • 使用Amazon Textract從收據或發票掃描件(PDF或圖片格式)中提取文本。
  • 經過Amazon Comprehend得出洞見。
  • 使用Amazon Lex以天然語言形式實現與這些洞見的交互。

接下來,咱們將介紹用於構建這樣一套解決方案的具體服務與架構選項。服務器

相關服務架構

這套解決方案將使用如下AI服務、無服務器技術以及託管服務創建起一套可擴展且具有成本效益的架構:less

  • Amazon Cognito—— 幫助咱們快速在Web與移動應用中添加用戶註冊、登陸與訪問控制等功能。
  • AWS Lambda—— 執行代碼以響應觸發器,執行數據更改、系統狀態變化或用戶操做等。因爲Amazon S3可以直接觸發Lambda函數,所以咱們能夠藉此構建起各種實時無服務器數據處理系統。
  • Amazon Lex—— 提供用於建立會話式聊天機器人的接口。
  • Amazon Comprehend——NLP服務,使用機器學習技術從文本中提取洞見與關係。
  • Amazon Textract—— 使用機器學習技術從PDF、JPEG或者PNG格式的掃描文檔中提取文本與數據。
  • Amazon Simple Storage Service(Amazon S3)—— 爲文檔提供對象存儲支持,並容許用戶經過細粒度訪問控制機制實現集中管理。

架構機器學習

下圖所示,爲這套解決方案的基本架構。
image

此架構包含如下操做步驟:

  • 後端用戶或管理員使用AWS管理控制檯或AWS命令行界面(AWS CLI)將PDF文檔或圖像上傳至S3存儲桶。
  • Amazon S3上傳動做觸發AWS Lambda函數。
  • Lambda函數調用Amazon Textract StartDocumentTextDetection API,後者設置一項異步做業以檢測上傳的PDF中的文本內容。
  • 當文本處理完畢以後,Amazon Textract向Amazon Simple Notification Service(Amazon SNS)發出通知。
  • 看成業完成文本檢測任務以後,由另外一項Lambda函數從SNS主題處獲取通知。
  • 當Lambda收到Amazon SNS發來的做業完成通知後,調用Amazon Textract GetDocumentTextDetection API以接收異步操做結果,並將結果加載至S3存儲桶內。
  • 使用Amazon Lex完成意圖整理與分析,咱們還須要使用另一項Lambda函數。關於更詳盡的交互序列,請參閱「使用CloudFormation部署架構」部分中的「構建聊天機器人」內容。
  • Amazon Comprehend使用機器學習技術從文本中提取洞見與關係。Lambda函數使用由Amazon Comprehend提供的boto3 API執行實體與關鍵短語檢測。

    *在聊天機器人顯示歡迎致辭以後,用戶輸入「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聊天機器人等組件。

  • 在美國東部(北弗吉尼亞州)區域啓動如下CloudFormation模板:
  • 請不要修改棧名稱或者參數botname InvoiceBot。
  • 在Capabilities and transforms部分,勾選所有三個複選項,確認由AWS CloudFormation建立IAM資源並擴展模板。

image

關於上述資源的更多詳細信息,請參閱AWS IAM資源

此模板使用AWS無服務器應用程序模式(AWS Serverless Application Model,AWS SAM)以簡化面向無服務器應用程序的函數與API定義流程,同時爲各項服務提供環境變量等功能支持。

  • 選擇Create stack。

image

如下截屏所示,爲Stack Detail頁面中顯示的棧狀態,目前爲CREATE_IN_PROGRESS。在20分鐘以內,該狀態將轉換爲CREATE_COMPLETE,表明棧建立完成。
image

  • 在Outputs選項卡中,複製LexLambaFunctionArn、AssetsUploadBucket、ExtractedTextfilesBucket以及LexUIWebAppUrl的值。

image
將文檔上傳至S3存儲桶

要將文檔上傳至新的S3存儲桶,請選擇與以前複製的AssetsUploadBucket相對應的S3存儲桶URL。上傳PDF或圖像,便可開始文本提取流程。

咱們也能夠從GitHub repo下載本文中使用的發票數據,並將其上傳至AssetsUploadBucket S3 URL。建議在發票模板中使用自定義解決方案。關於上傳文件的更多詳細信息,請參閱如何向S3存儲桶上傳文件與文件夾?

在上傳完成以後,能夠在Amazon S3控制檯的Overview選項卡中看到該文件。
image
在文件上傳完畢後,便可開始文檔文本提取流程。要查看待提取的文檔,請打開存儲桶並選擇以前複製的URL。

image
在Overview選項卡中,能夠下載該文件並檢查內容,審覈其是否與上傳的文檔徹底相同。
image

構建聊天機器人

咱們將使用如下會話對機器人進行建模:

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):

  • GetInvoiceSummary – 用戶請求查看發票摘要時所調用的意圖。由Lambda函數完成,可返回當前可用發票的數量與發票總金額
  • GetInvoiceDetails – 用戶請求查看發票明細時所調用的意圖。可經過Lambda函數實現,用於提供發票各條目明細,包括日期、數量與條目明細。
  • GetInvoiceNotes – 用戶請求查看發票註釋時所調用的意圖。經過Lambda函數完成,提供帶有日期與項目描述的發票註釋信息。

發佈聊天機器人

以前的解決方案概述中所提到,咱們可使用Amazon Lex聊天機器人(InvoiceBot)與Amazon Comprehend提取自Amazon Textract文本中的洞見進行交互。

要發佈聊天機器人,請完成如下操做步驟:

  • 在Amazon Lex控制檯上,選擇Bots。
  • 選擇所建立的聊天機器人。

image

  • 在Intents下,選擇GetInvoiceSummary。
  • 在Fulfilment下,選擇Lambda函數。
  • 輸入LexLambdaFunction以搜索該函數,並選定正確結果。

這時系統會出現顯示彈框。

  • 選擇OK。

image

  • 選擇Save intent。
  • 在另外兩項意圖GetInvoiceDetails與GetInvoiceNotes中,重複上述步驟。
  • 選擇Build。
  • 在構建完成後,選擇Publish。

image

  • image在Create an alias部分,輸入Latest。咱們也可使用其餘名稱,例如測試、開發、beta或者生產等皆可,用於代指機器人的運行環境。
  • 選擇Publish。

在機器人發佈完成後,系統將打開如下頁面。
image

  • 選擇Close。

使用聊天機器人
咱們的聊天機器人如今已經就緒並可供使用。導航至複製自AWS CloudFormation Outputs選項卡處的URL LexUIWebAppUrl。如下截屏所示,爲用戶與該機器人的對話結果(從左至右閱讀):
image

總結
本文介紹瞭如何在Amazon Lex中建立一款會話式聊天機器人,使用Amazon Textract從圖像或PDF文檔中提取文本,使用Amazon Comprehend從文本中提取洞見,並經過機器人實現與洞見的交互。本文中所使用的代碼皆發佈在GitHub repo當中,供你們隨意使用及擴展。

image

相關文章
相關標籤/搜索