達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?

本文整理自達觀數據高級技術專家楊慧宇9月3日的直播公開課——《金融文檔結構化實踐》。直播回放鏈接:https://www.bilibili.com/video/BV1KC4y1b7nb


嘉賓簡介:楊慧宇,達觀數據高級技術專家,負責 NLP,RPA 等技術在金融行業的實踐應用。


隨著技術的發展和社會的變革,金融行業在近些年逐漸暴露了各種危機。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?


市場競爭

金融行業雖然在大眾印象中是暴利行業,但實際上行業年均複合增長率已經呈現出下降的趨勢,並且面臨著螞蟻集團、微信支付、陸金所等互聯網金融公司所帶來的影響和競爭。


力成本

中國的人口紅利在逐漸消失,勞動力成本也在不斷上升,尤其像新時代的 90 後員工不願意天天進行重複性的工作,希望能夠在工作中體現出自己獨一無二的價值,這一點實際上也是很大的痛點。


監管趨嚴

金融行業領域監管越來越嚴格。證監會、交易所都在不斷地發佈新的監管規則,而金融企業內部的合規、風控這些機構就要隨之進行更新,這些都離不開信息技術的支持。隨著監管的越來越嚴格,企業內部所造成的文書工作的增加也會帶來很多工作上的負擔,比如要進行很多信息上的披露,上市公司要發佈各種各樣事件的曝光,這些都會給大家帶來工作上的負擔。但是因為文件越來越多,人工處理文本的能力,卻無法得到相應的提升,這樣就會造成工作上的疏忽,給工作帶來潛在的風險。


技術進步

現在券商,銀行,保險公司等都希望利用人工智能、雲計算、大數據、機器人和自動化等技術強化金融行業的數字化能力,並要考量以前的非結構化數據資產能不能發揮應有的價值。


結合以上趨勢,從文檔處理的角度出發,本文將探討相應的解決方案。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?

金融行業的文檔特徵有以下幾點:


文檔密集型

金融行業是文檔密集型的行業,不管是券商、銀行、保險、基金、私募,這些企業都有大量的文書處理,比如像招股書,債券募集書,這些都是投行業務等行業中會涉及到的。上市企業要提供他的派息公告,股權質押公告,重組公告,審計的會計師事務所要提供相應的審計報告,基金公司會提供基金合同,還有銀行會處理各種各樣函證,這些都是各種各樣的文檔。


文檔格式繁雜

文檔格式繁雜,而且往往都是非結構化的文檔,比如 word、pdf 與 pdf 的電子版、掃描件,還有圖片格式 jpg 這樣的文件等等。


文檔處理容錯性低

這是金融行業的特徵,很強的監管性導致了該行業對於文檔處理的容錯性非常低。輕則可能鬧出烏龍事件,嚴重時監管機構可能會對他進行警告,甚至做出罰款,更為嚴重時,對於券商而言可能會影響客戶公司的上市。這些都是文檔處理容錯性低的體現。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?

上圖列舉了金融行業曾經犯過的低級錯誤,債券募集書裡提到了高管聲明,正常應該說“本募集說明書不存在虛假記載”,例子中出現了重大遺漏,把 “不” 字給漏掉了,導致了意思完全相反;

右上角的圖是關於發行超短期融資券的註冊文件。但因為人員的疏忽,拼音打字的時候打錯了,打成了超短裙。右下這幅圖實際上是數字的校驗錯誤,可以看到合計的比例實際上是對不上的。

這些都是由於日常工作中因為疏忽導致的各種各樣的風險。文檔的機器智能處理,雖然不可能說完全 100% 地去解決各種各樣的問題,但是可以有效地去降低人工處理過程中帶來的潛在的風險。

討論了以上問題,接下來的內容將討論應對的辦法 —— 關於金融文檔結構化實踐,包括三部分:

第一部分:關於金融文檔解析的算法落地;

第二部分:金融文檔的信息抽取算法概述;

第三部分:達觀數據在金融結構化場景中的應用


1關於金融文檔解析的算法落地



達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?

上圖可以看到是剛剛提到的各種各樣類型的文檔,比如營業執照、發票以及保單這些屬於格式相對比較固定的表格形式的文檔類型。

另外如上圖的銀行流水,銀行賬單,還有其他文件的表格雖然也是表格的形式,但格式很不固定,其文字信息構成是密度很高的結構。還有上圖右邊的這種股權質押公告,既有表格,又有段落的信息,下面的債券募集書,本身是很長的很規範化的文檔,這些都是在實際業務中需要去處理的文檔類型。它們的文本結構實際上是五花八門,有表格,有正文,篇章結構等各個方面,基本上你能想象到的,都存在。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?

以 PDF 為例講一下的文檔解析的具體算法落地。PDF 文件可能既包含的掃描件,也包含 PDF 的可複製的這種電子文檔的格式,被廣泛應用於日常生活中。這裡列舉了 Adobe 公司出的 Tutorial,PDF 文件本身的協議是讓機器去讀的,上圖左邊協議人無法看懂,因為跟平時看到的 PDF 文件本身的段落、章節、表格是完全不一樣的。比如從上圖右側從 root 節點開始到 Catalog,然後裡面有各個 Pages,Pages 然後到 Page,每個 Page 裡面可能又包含 Resources 項,Resources 裡面有可能像字體這種信息,Contents 就是文本的信息。

但這些信息對於人類理解來說,是沒有任何意義的。只是規定了諸如”hello world” 這兩個單詞應該出現在屏幕上的哪個位置,或者某線條應該出現在哪個位置,而這些元素本身沒有任何文檔信息,和平時讀的 PDF 的結構完全不一樣。所以這時候要把 PDF 文件轉成作為文檔的智能解析,就需要找到並處理隱含的各種各樣的文檔結構信息。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?

達觀數據是將日常人看到的結構轉換總結出來,像目錄、表格、圖片、頁眉、頁腳,包括段落標題等等。還有論文裡面經常出現的公式,甚至像剛看到印章。上圖右邊是達觀數據總結出來靜態類圖,以這樣的數據結構來表示一篇 PDF 文件和其中各種信息,把原本機器才能理解的協議,轉化成了人類能夠讀懂的協議。

文檔解析實際上很好地結合了 CV 和 NLP 算法落地的場景,包括軟件工程能力。應用看似簡單,無非就是表格、段落、章節,看起來好像特徵很明顯,但實際上對於算法原理、數據結構、工程能力,甚至業務知識、場景理解,都有很高的要求。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?

前文提到,文檔智能解析包含有很多類型,以表格解析為例來介紹,來看看是怎樣一步一步從 machine-readable 變成 human-readable 的內容的。

上圖列舉了三個財務報表,在金融行業俗稱叫三大表,資產負債表、現金流量表和利潤表。三大表信息相對來說比較固定,它的格式對於人來說差不多,但是對於機器來說有很大的差別。比如最左邊的很清晰的一個有線框,它的邊框表格非常完整,中間是一個掃描件。裡面還有蓋章,印章對內容有遮蓋,而且掃描的質量也不是很清晰,你可以看到最左邊和最右邊的線條是缺失的狀態。

最右邊的這幅圖完全沒有線條,沒有財務知識的人,可能會因為信息密集以及沒有線條劃分,理解時遇到困難。除了信息理解困難,表格中還有隻有專業人士才能理解的符號,比如說括號,在財務領域,括號表示的是負號的概念。那像最左邊就用負號去表示,這裡面的數字底下的橫線,實際上也是有特定的財務含義在裡面的。雖然說對於人來說大體看起來相同,但實際上對於機器來說,這些都是需要去考慮並且要去做特定的處理,才能達到很完美的解析效果。這種情況下大致的表格解析的流程是:

1先定位到這樣的表格,要框出的表格的大致範圍,尤其是對於無框表格來說,沒有線條這些信息,那隻能通過諸如目標檢測這類的 CV 算法,才能夠定位到這樣的表格:

2做線條識別,剛剛你看到有的表格是有線的,有的表格是缺線的,有的表格甚至一條線都沒有。這對於線條識別來講就提出了很高的要求。那有了表格的位置,有了線條,那這時候就可以構造出大致的單元格,注意,還要考慮到是不是有單元格要進行合併。


對於無線來講,這時候單元格的合併就比較困難,可能要利用 NLP 獲取的信息來判斷的單元格上下或者是左右,是否是表達連續的內容。

有了這些信息以後,最終可以生成表格,但是到這為止還是遠遠不夠的。有了這樣表格以後,在實際業務中還會面臨各種各樣的問題。假設要去做表格的定位,我要識別資產負債表,那肯定要判斷的表頭是什麼樣子。

具體到掃描件,掃描件首先做 OCR 的識別, 而OCR 識別有可能會有錯誤,比如千分位符和小數點,可能掃描件掃得不清晰,很有可能模型就識別錯了。這時候要根據你的業務知識去做文本的糾錯,比如說 1 識別成 L,0 識別成了 O,這都是很有可能出現的問題。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?

上圖給出了很極端的例子,正常情況下用掃描件是不會有這種情況的。上圖不僅是通過拍攝得到的,而且的拍攝角度不是很理想,有變形,甚至有了揉捏,揉捏後再鋪平還會有褶皺,給圖像的質量都帶來了很大的影響。

第二張圖是達觀數據做表格定位模型的結果,可以看到基本上是比較好的定位到了表格的範圍。

第三幅圖就是表格解析的結果。可以看到儘管有各種各樣的角度的變化,線條的揉捏,但是依然還是能夠把線條識別得很好,這些都是實際情況中可能會遇到的情況,只不過這個例子確實極端了一點。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?

CCKS2019 的任務是用 PDF 文件內容做結構化,去嘗試構建領域的知識圖譜。金融領域有海量的公告文件,去做自動化的結構化抽取,滿足投研分析、風控、金融監管、事件抽取等等各類需求。在金融領域,目前沒有太多文件信息結構化的工具,怎麼樣能夠通過自動化技術來去從各類公告中抽取信息呢?剛才也提到,任務就是從公司定期報告中去提取裡面財務報表內各種各樣的信息點,那麼輸入就是很標準的 PDF 文件,裡面有各種各樣的資產負債表、利潤表、現金流量表。輸出的是比如像企業的證券代碼,證券的簡稱,還有的各種各樣的財務數據。達觀憑藉剛剛提到的副文本解析上的積累,尤其是在表格解析的能力上面,提出的模型方案整體測試集達到 0.978 的準確率,準確率基本上可以達到工業上可用的狀態。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?

下面來介紹段落解析。NLP 裡面有基礎任務,比如說分詞,是屬於序列標註的一類任務。比如說分詞裡面,舉個例子 “他來自達觀數據 “,可以分成三個詞:他、來自、達觀數據。對於每個字我們定義了四個類型, B、M、E、S 分別代表了詞的開始、中間和結束,S 表示字單獨成詞,“他” 就是 S 標籤,“來自” 是 BE 標籤,“達觀數據” 是 BMME 標籤,也就是說把分詞任務變成了對於每字符來講的四分類問題,去解決這樣的序列標註問題的時候就有很多成熟的算法可以去使用,比如說最早的隱馬爾可夫、CRF,還有雙向 LSTM 等等,這些都可以用在分詞、命名實體識別、詞性標註等等這些任務上,這是簡單的 NLP 的基礎知識的分享。

那麼這和段落解析有什麼關係呢?段落解析的任務類似於分詞任務,字符對應的是文章裡面的文本行,段落就是詞,把分詞任務和段落解析任務做類比,每一行有像分詞任務裡字符一樣的標籤:BMES,分別表示段落的起始、中間、結尾,還有獨立成段的概念。

剛剛講到序列標註裡面有很多算法,如 CRF、雙向 LSTM,包括最新的 BERT 等,都可以在段落解析上嘗試使用。段落解析與分詞稍微不同的是:分詞是要考慮到每字符的上下文的情況,可能逗號在序列集裡面就是 S,結合了上下文的語義信息去做概率的判斷,但是在分段的時候,實際上每一行的語義信息太過豐富,這在實踐上來講是不太好用的。但分段也有自己的特徵,比如說正常的段落,會有比如說像縮進的特徵,結尾可能會有標點特徵,獨立成行的標題可能會有字符的數字開頭這樣的特徵,這些都可以作為特徵輸入到模型裡去。

這樣段落解析的問題大概就有了解決方案。請大家思考一個問題,目前段落解析的訓練集是很正規的文檔,可能解決起來比較簡單。但比如像有些從業人員寫作的方法不是很正規,導致其生成的文檔類型飄忽不定,縮進跟訓練集完全不一樣,這時候就會遇到各種各樣的 badcase,怎麼樣去解決?難道是重新標註,再訓練,再迭代這樣的模型嗎?當然也是一種方法,但是這樣時間成本也會比較高。有的時候甚至說因為不規範的文檔和已有正規文檔的特徵是衝突的時候該怎麼樣去解決?值得大家思考一下。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?

以上是整個文檔解析算法落地的情況,本文以表格解析和段落解析為例,大致介紹了一下流程。另外,像圖片、PDF、word,這些都可以去做文檔解析。

從非結構化數據變成半結構化數據,有了這些目錄、章節、段落、表格等信息以後,實際上就可以去做其他事情,如從業人員在寫作的時候,經常會遇到目錄和章節不一致的情況,比如:章節改了,目錄沒改。目錄改了,章節沒改。而有了這些不一致的信息,就可以去做審核。

再比如:章節信息有 1、2、3、4,有的時候大家是去做簡單的複製,複製的時候忘了去修改,同樣也可以做審核。但是實際上有這些半結構化數據,還是遠遠不夠的。這時就要在半結構化數據的基礎之上,把轉變為完全或者說業務上結構化的數據。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?

比如說金融文檔裡或者財務報表裡,可以去提取像應付賬款、實收資本、流動資產這些內容。在提取這些內容以後,首先可以把這些數據存到數據庫裡面,做結構化存儲。第二有了這些內容,可以做比如說像公式上的校驗,根據已知的財務公式,可以去計算數字是否有問題。有了這些結構化數據,就有了更多的可能。


2金融文檔的信息抽取算法概述

有兩種類型的數據,首先是有正文的數據,抽取裡面的數字、人名等等信息。另外還有表格裡面的數據,表格裡面的數據是天然的半結構化結果,要從裡面把財務數據的指標數據等提取出來。

這兩種文檔類型的信息,實際上數據處理方法是不太一樣的。簡單的說明一下,正文的信息抽取,常見的分詞 NER 抽取都是基於一維的文本信息。那常見的方法有剛才介紹過有 CRF、雙向 ASTM,bert 系列,各種 bert 的模改的這種模型算法,還有預處理要正則表達式等等,都可以去做這樣的信息抽取。但是在實際情況中,只有這些算法是完全不夠的,需要加上各種各樣的業務知識,還有各種各樣的工程落地。

比如說這篇文檔有 200 多頁,或者像招股書一樣 500 多頁,bert 本身模型就夠大了,那 500、600 頁的文檔再去做這樣的抽取會很慢。這時候是不是可以去利用業務上的相關知識等來做更加工程落地的應用?

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?


比如說前文提到的財務數據,可能就是在某些章節裡面才會出現,所以可以去利用的章節信息去做抽取。當然章節信息本身就是業務知識,有財務數據,前面有業務的關鍵詞,也可以去當做這種特徵來去使用。

抽取是非常依賴標註的,那怎麼樣去確保標註質量?這都是在落地中需要考慮的問題。這麼多模型,不能靠 bert 解決所有問題,這是不現實的。無論從性能上來講,還是其他方面都不太現實,這時候需要在不同場景下要去使用不一樣的模型。那不同的模型怎麼樣去做融合,得到最終的輸出?實際上這是很 trick 的問題。

在實際使用中,不可避免會有抽取的錯誤,任何 AI 模型都達不到 100% 的效果,怎麼通過業務上的使用,能夠讓數據越來越準確,讓抽取效果越來越準確,形成這樣數據閉環呢?這也是在算法落地中必須要考慮的問題。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?

文本抽取的算法大家都比較熟悉,許多論文、博客各方面都介紹的非常多。這裡給大家以海外發票信息為例,介紹文檔抽取算法。海外發票信息這樣文本實際上是有很多種不同的表現形式,字段有的出現在左上角、右上角,有的出現在表格裡,格式也是千差萬別,各個國家的發票可能都不太一樣。

如何結合位置特徵,結合表格的表頭信息,或者本身的語義信息,能夠把這些信息綜合起來,提高抽取的準確率呢?可以預見,單純用序列標註去解決這樣的問題實際上是不會有太好的效果。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?

這時候就需要把整體的頁面的佈局、文本信息(比如說表格裡可能有字體是加粗的,字號可能也會大,存在斜體等)、context 上下文、抽取的單元格表頭的樣子等各種各樣的因素考慮進去。

可以做三種歸類:OCR 的文本信息、字體信息和文字本身,文字本身通常指是不是有語義上信息,比如金額就肯定是數字,字段不會出現像漢字或者是英文字符等等。這些細節都是在抽取時要考慮的信息,實際上就是綜合各類信息的多模態的抽取。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?

今年微軟亞研院提出來的 layout language model 的算法,如上圖所示。可以看出,實際上跟本文思路非常相似,比如說抽取表單的時候,利用的文本信息,去做 image 的文本信息(text embedding),加了 positionembedding 層,就是把每個 OCR 識別出來的字符的框,X0,Y0,即左上角和框的座標,分別去做了 4 層的 position embedding,又在基礎之上疊加了 Image embedding,就是圖像特徵,比如剛才提到的這種字體字號等等這些信息,把這些各種各樣特徵考慮進來,去做了多模態的語言模型。

對於這種像表格表單,尤其像海外發票這樣很多變的場景、文檔類型來講,那麼能不能夠嘗試去提高抽取的效果?layout language model 在訓練的時候,跟本文 Bert 也很類似,實際上也是 mask 了字符做抽取,訓練的時候是用了 10% 的訓練的時間做隨機的替換,10% 的時間不改變,還有剩下的 80% 是替換為 mask,跟本文的 Bert 訓練的思路是基本上差不多。但同時把各種各樣的特徵都考慮進去,來提高表格類型這種數據的抽取效果。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?

前文提到除了常見的算法,還要考慮在實際落地場景中會遇到的各種各樣的問題。在表格抽取的時候,主流算法諸如雙向 LSTM、CRF 等可能效果沒有那麼好了。那麼就可以去嘗試用像微軟這種開源的 layout language model 去做嘗試。換句話說,要去做信息抽取的任務,你還要去理解算法,要去熟悉的業務知識,能夠理解什麼樣的場景下用什麼算法最適合。舉一個工程上的例子,比如在 600 頁的招股書上單單用 bert 去抽取,肯定性能上是非常非常差的。在實際落地中如上圖這五大因素都是要去考慮到的。


3達觀數據在金融結構化數據領域的應用場景

最後一部分內容來介紹達觀數據在金融結構化數據領域的應用場景。

企業貸款信息的錄入

企業在去銀行貸款的時候,需要提交各種各樣的證照。營業執照,開戶的許可證,身份證等等各種信息,這些信息往往都是掃描件。這時無論是去做自動化的抽取也好,還是做審核實際上都是非常耗費人力。這種情境下就可以利用本文提到的文檔解析和信息抽取的技術,把需要的信息錄入信貸系統裡。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?




企業貸款資料審核

比如說銀行客戶經理在給企業客戶辦貸款時,像銀行的普惠金融部,給小微企業做貸款時要評估、出具如上圖這樣的盡調報告。都需要把信息要去填入到銀行內部通常叫信貸管理系統裡,來做這樣的風控的建模,評估的企業的風險等級、出具淨值調查的報告。


這些信息如果靠人力錄入效率是非常低的。完全可以完全依賴於信息抽取結構化的能力,做到自動化填列。有了信息的填列以後,還需要去做審核工作。比如審核內部的文檔、合同是否合規的?這同樣需要先去做要素的抽取,判斷條款是否是缺失的。

企業去提交貸款信息的時候,要提交財報,如何判斷財報是否是做過手腳?勾稽關係是不是平衡的?資料和原始的文件的信息是不是一致?這些都要去做審核。如果去做人工錄入,肉眼審核的效率也是實際上是非常低下的。此種情境下也可以考慮利用機器的抽取的結果來去做審核工作。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?


國際業務資料錄入與審核

像上文提到的海外發票,不像國內的發票,版式相對固定。每個國家甚至每個地區都不太一樣,信息分佈都不太一樣,如果人工錄入,需要操作人能夠篩別出不同國家的發票,會比正常的信息填入更加的耗時耗力。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?


債券募集書,招股說明書的審核

如上截圖也展示出來,把裡面的正文裡的金額,還有表格裡面的金額去做抽取,抽取後可以依照本文的公式、計算表格的佔比是否是一致等內容作驗證。全文某一個信息提到了好幾次,每信息提到的數字是不是應該是要一致的,做上下文的一致性審核。有了結構化的數據以後,這些都成為了可能。

達觀數據高級技術專家分享:如何在金融行業應用文檔結構化?

以上的應用場景已經非常豐富,最後再講一點應用,面對企業各種各樣的結構化數據,還可以構建知識圖譜。

比如說股權關係的圖譜、行業的上下游的關係圖譜、資金往來甚至人員關係的圖譜。達觀基於結構化數據的技術,也有這樣的類似的產品叫淵海知識圖譜,可以去構建金融企業所需要的圖譜。有了這些圖譜以後,好處首先在於搜索結果能得到比較明確的答案,基於這種數據,建立知識庫這樣的 QA 系統。

此外,基於企業的資金關係圖譜,或者說股權關係圖譜,能夠評估到企業上下游的是否可能有洗錢或者欺詐的行為,通過這種股權穿透,能夠洞察到到企業的風險。這些強大的功能,都是在有了結構化數據的基礎之上,才具備了實現的可能,併為之後的更多應用展開打下基石。


分享到:


相關文章: