????????在全球信息產業高速發展的背景下,IDC預測,2018 到 2025 年之間,全球產生的數據量將會從 33 ZB 增長到 175 ZB, 復合增長率27%,其中超過 80%的數據都會是處理難度較大的非結構化數據,如文檔、文本、圖形、圖像、音頻、視頻等。非結構化數據在大數據時代的重要地位已成為共識。近些年,伴隨著大數據存儲、人工智能(AI)等技術的蓬勃發展,非結構化數據的價值得到了巨大的發揮。如:自然語言處理、圖像識別、語音識別等技術,已在各行業得到廣泛應用,并不斷的提煉數據中的價值。
????????非結構化數據的處理與分析目前主要通過兩種形式提供:一種是將能力封裝在應用系統中,一體化交付給最終用戶,如:人臉身份驗證系統、手持翻譯機等;一種是以PAAS形式,將能力以開發接口的形式暴露給用戶,比較有代表性的有百度AI智能云、阿里云等。前者通過應用封裝,最終用戶感受不到非結構化數據的處理過程,也無需關注。而后者,給了使用者更大的發揮空間,讓用戶可以隨心所欲的應用這些能力。但前提是用戶必須掌握一定的編程能力,才能夠調用平臺提供的接口。這就使得相當一部分擁有數據處理需求而沒有開發能力的用戶被擋在了門外。他們需要去學習一種編程語言或者額外支付開發費用才能實現對非結構化數據處理的需求。
????????需要二次開發才能使用非結構化數據處理與分析能力的方式顯然不符合近年來熱推的“技術平民化”趨勢。“技術平民化”即“低代碼”技術,在數據處理領域其實并不陌生。早在“小”數據時代,對于結構化數據處理與分析就有SAS、SPSS Modeler等一眾知名的商業工具,也有諸如Kettle、RapidMiner等開源工具。這些工具都支持使用者通過可視化交互的方式,實現對結構化數據的ETL(抽取、轉換、裝載)處理及分析建模。進入大數據時代后,在數據科學領域,這種低代碼設計理念得以保留。SAS等公司紛紛轉型,將其技術架構遷移到以Spark為代表的一眾大數據計算框架下。同時,該領域也涌入了許多新晉玩家,如阿里的DataWorks等。但這些工具基本還是面向結構化數據的,只是轉換了計算架構,使得工具能夠支持更大規模的結構化數據處理與分析的需求。而對于規模早已超過數據總量80%的非結構化數據,目前卻鮮有低代碼工具,這也使得大數據處理與分析遠未進入“平民化”階段。
????????一年多前,接到一個朋友的項目需求。在這個項目中,朋友除了有海量的結構化數據需要處理外,還有大量的諸如文檔、圖片、音頻、視頻類數據處理的需求。由于數據種類龐雜,處理需求多樣,采用交付定制系統的方式根本無法滿足用戶不斷演進的數據使用需求。因此,一個能夠讓用戶參與的,可隨用戶需求演進的“平民化”數據處理平臺成為了最佳解決方案。
????????有別于傳統的面向結構化數據的低代碼工具,非結構化數據其內容更多樣,處理手段更專業、存儲方式的選擇也更豐富。如前文所講,非結構化數據包括文檔、文本、圖片、音頻、視頻等不同內容;對于這些不同類型的內容,分別有不同的專業處理需求。對于文本有實體識別、關系識別、文本摘要,圖片有OCR識別、物體識別,音頻有語音識別,視頻有關鍵幀識別等一眾需求。這些需求的專業能力要求很高,除了少數大廠有比較全面的能力覆蓋外,很多公司都只能在其中的一個或幾個方向構建其專業能力;由于非結構化數據沒有模式,其擁有了更廣泛的存儲選擇,其可以存儲在文件系統中,也可以存儲在數據庫中,對于其數據的應用場景而言,沒有本質的差別。
????????針對非結構化數據的存儲及處理特點,筆者和團隊經過一年多的開發,實現了一個能夠給予用戶更多的存儲及處理技術選擇的低代碼工具平臺。該平臺很好的支撐了朋友項目的各類非結構化數據處理需求。比如下面的一個簡單場景。
????????朋友項目中有一些檔案處理的需求,檔案格式有word、pdf等。希望能夠對這些檔案進行自動化處理,抽取檔案中的文字及頭像,構建基礎檔案信息。并意圖在后續的處理流程中進一步分析文本,獲得更有效的內容。(注:為展示系統能力,本文例子中選取了一個臺灣政客的簡歷,該簡歷采用的是繁體字)。檔案原文為一個兩頁的pdf文件,內容如下:
????????(注:這里刪除了一頁違規的圖片信息,內含個人隱私信息)
????????我們的第一個任務是抽取文檔中的文字。在該任務的實現路徑中,有一種是直接抽取pdf中文字的解決方案。但經過測試,發現效果不好。于是嘗試了第二種技術路線,就是先將pdf轉為圖片,然后再使用OCR技術,識別圖片中的文字。由于前文有提到,OCR是一個專業的方向,要訓練一個好的OCR模型是一個非常困難的事,尤其該文檔是繁體字體,就變的更為困難。因此,筆者的平臺采用了開放的態度,集成第三放能力供用戶選擇使用。在該任務中,筆者平臺選擇了百度的OCR識別能力,用它來實現圖片中文字的提取。效果如下圖:
????????如圖所示,這是一個從左到右的數據處理流程。文件輸入算子負責讀入檔案文件;pdf轉換算子負責將pdf轉換為圖片;百度OCR算子負責識別圖片中的文字并將結果輸出到輸出端口。其運行后的效果為:
????????在這里能夠看到pdf被轉成了2個圖片,2個圖片中的文本也被識別并輸出。
????????我們的第二個任務是從檔案中挑出人的頭像圖片,并將其存儲到指定的目錄中。在這里我們集成了百度的物體與場景識別能力。數據流程的效果圖如下:
????????如圖所示,從左至右的流程,文件輸入算子負責讀入檔案文件;圖片抽取文件抽取文檔中的圖片;復制數據流,流的一個分支轉交給百度物體與場景識別算子,另一分支轉交給聯結算子。百度物體與場景識別算子輸出識別到的圖片的各種標簽;過濾算子過濾掉不是人物頭像的標簽,輸出人物頭像標簽并于另一個分支輸出的流在聯結算子處聯結計算,聯結算子只輸出與人物頭像標簽對應的圖片,并經過重新打包轉換后,將頭像寫出到文件系統。其運行后的效果如下:????????通過流程執行輸出的數據我們可以看到,從pdf文件中共抽出三張圖,Image1, Image2和Image3,只有Image2被識別為人物類型。下面我們再看流程的輸入/輸出信息。
????????以上圖1展示的是流程讀入及寫出的相關文件。其中OUTPUT記錄項的Image2文件即流程識別出的頭像文件。點擊查看,效果如圖2,可以看到抽取到的頭像與最初檔案中的頭像一致。本示例給出的讀取和寫出數據源皆為文件系統,使用者可根據實際需要進行調整,平臺目前支持的部分數據源如下圖:
????????筆者團隊提供的低代碼平臺,目前已具備將非結構化數據處理“平民化”的能力,對于結構化數據有同樣友好的支持。可以幫助更多的業務人員、數據研究人員方便的處理及分析數據;便捷的使用第三方的技術能力;真正進入大數據處理的“平民化”時代。
? ? ? ? 追逐同款工具,猛戳以下鏈接:HuggingFists