Dropbox用機器學習,從海量圖片中對文字進行檢索
來源:Dropbox
編譯:Bing
Dropbox是Dropbox公司的線上儲存服務,通過雲端計算實現網際網路上的檔案同步,使用者可以儲存並共享檔案和資料夾。最近,研究人員在一次產品更新後,在使用者的工作流中加入了人工智慧模組,並加入了 光學字元識別(OCR) 技術。使用者從這些變化中最明顯的感受就是, 他們可以在影象或PDF檔案中直接搜尋英文文字。
從影象中(包括PDF)自動識別文字是一項前景廣闊的技術。在Dropbox中,使用者總共儲存了超過200億個影象和PDF檔案,其中10%—20%是文字照片,例如收據和白色背景的影象,這些都是目前影象中文字識別的新物件。另外還有25%的PDF檔案是掃描版文字,同樣可以用作自動文字識別。
從計算機視覺的角度來看,雖然對人類來說,看真實的檔案和影印版的沒有太大差別,但對計算機就大不一樣了:檔案可以通過搜尋被檢索,使用者輸入一些單詞就可以從檔案中找到目標物件。但在影象上,檢索系統就無法工作了,因為它顯示的只是一堆畫素。通常,影象格式(例如JPEG、PNG、GIF等)都無法被檢索,因為它們沒有文字內容。只有基於文字的檔案(例如TXT、DOCX或HTML)才能被檢索。但PDF介於二者中間,因為它既能包含文字,也能包含影象。自動影象中的文字識別可以辨認這些文字,並將其中的資料進行分類。

所以現在,如果使用者在任意格式下搜尋英文文字,Dropbox都能顯示出結果。這篇文章就講解了研究人員的具體做法。
認識問題
首先,我們要對此任務有大致瞭解,尤其是要知道要處理的資料數量有多大,這不僅關係到所需成本,還有助於評估其有用性。具體需要了解的有以下三方面:
- 我們應該處理哪些型別的檔案?
- 這些檔案中有哪些含有可用光學字元識別技術處理的內容?
- 對於像PDF這樣有多頁的檔案,我們需要處理幾頁才能讓模型變得有效?
我們想處理的檔案型別是目前不包含可檢索文字內容的檔案,這包括影象格式和不含有文字的PDF文件。但是,並不是所有的影象或PDF都含有文字,大多數只是一些照片或圖示。所以,研究的關鍵是機器學習模型需要判斷,給定的內容是否能用光學字元識別技術,也就是說其中是否含有能用OCR系統識別出的文字,例如不包含街景照片的檔案的掃描件等等。我們訓練的模型是一個卷積神經網路,輸入影象並處理後,會將輸出結果傳遞到二元決策中,看它是否含有文字內容。
最常見的影象格式是JPEG,我們發現大約有9%的JPEG影象可能含有文字。對於PDF,情況就比較複雜了,因為一份PDF檔案可能含有多頁,每頁又可能有三種類型的內容:
- 已經經過嵌入或可檢索的文字(69%)
- 有圖片格式的文字,暫不可被檢索(28%)
- 沒有實質文字內容(3%)
我們主要關注第二種情況,因為這是我們研究的物件。總的來說,我們的目標使用者擁有的JPEG數量是PDF的兩倍,但是每個PDF檔案平均有8頁,而且PDF可能有更多的文字圖片,所以總的來說,PDF含有的文字是JPEG的10倍。
文字頁數
一旦確定了檔案型別,我們就要決定以何種方式處理這些檔案。有些PDF檔案有很多頁,處理起來很費時。幸運的是,對於長文字,即使只檢索幾頁,也可以讓文字更易於搜尋。所以,我們統計了PDF取樣中頁數的分佈情況,弄清楚每份檔案最多可以對幾頁進行檢索。最終結果顯示,一半的PDF只有一頁內容,大約90%的PDF在10頁及以下。所以我們把上限定為10頁,這意味著我們可以對將近90%的文件進行索引,而且運用了足夠多的頁數。

自動影象文字識別系統的組成
格式轉換
當我們開始用OCR提取文字後,需要確定如何對PDF檔案中的影象資料進行轉換:我們可以對檔案流中的畫素影象目標分開提取,或者可以將整頁PDF轉換成光柵影象資料。兩種方法都實踐之後,我們選擇了後者,因為我們已經已經有了穩定的大型PDF轉換工具。使用這一系統的優點如下:
- 它可以自然地擴充套件到其他需要翻譯或嵌有圖片的檔案格式中,例如PowerPoint、PostScript和其他支援的格式。
- 轉換過程很自然地保留了文字符的順序和頁面中文字的位置,考慮了檔案結構。
在我們此前的Chromium專案中,伺服器部分的轉換是基於PDFium完成的,這是一個由谷歌基於Chrome瀏覽器開源的專案。這一軟體同樣用於對全文的檢測,判斷文字是否只含有圖片,可以幫助我們決定是否進行OCR處理。
一旦我們開始轉換,每份檔案中的內容都會同時進行處理,我們將每一頁轉化成2048×2048的正方形畫素,保留了原始的長寬比。
檔案影象分類
我們帶有OCR技術的機器學習模型最初是為了Dropbox的檔案掃描功能建立的,目的是為了瞭解使用者最近是否上傳了可以“將其轉化成掃描格式”的圖片。分類器在建立時,在影象特徵上使用了一個線性分類器。模型在來源不同的數千張照片上訓練,包括公共影象、私人影象以及Dropbox員工貢獻出的影象。
最初,分類器偶爾會出現誤報的情況(即模型認為影象中含有文字,但實際上沒有),例如在含有白牆、天際線、開闊的水域等照片中。雖然人類能輕鬆分辨這些景觀,但是對分類器來說它們看起來都是一樣的:都有平整開闊的背景和水平線。經過每次迭代後,我們在訓練集中新增“消極”標籤,可以顯著提高模型的分類精確度,從而高效地教會模型,雖然這些影象有很多類似文字檔案的特徵,但它們沒有文字。
拐角檢測
確定影象中文字的拐角並確定它的大致形狀是另一個重要步驟。給定轉角的座標,圖片中的文章可以用簡單的幾何轉換進行修正。文字的拐角檢測元組使用另一個ImageNet深度卷積網路建立的(DenseNet-121),其最頂層換成了一個迴歸因子,可以生成四個拐角座標。有了座標,就能輕易地將文字修正成易於檢測的版本了。
token提取
OCR系統從拐角檢測階段獲取修正過的影象作為輸入,並生成token檢測,包括針對tokens和文字的邊界框。這些大致按token的順序排列並新增到搜尋索引中。如果有多個頁面,每頁上token的列表會連線在一起生成一個大表。
合併各元素

為了能在所有可以被索引的檔案中進行紫銅影象文字識別,我們需要一個系統能對輸入的檔案執行新增和編輯,並開始相關處理。這就需要用到Cape框架,這是一種靈活大型的處理框架,可以進行事件流的分時間處理。我們在OCR處理中加入了新的Cape工作器,稱為lambda,作為框架的一部分。
整個處理過程如下:
- 基於影象中是否有符合要求的JPEG、GIF或PDF,檢查我們是否應該繼續處理文字。
- 執行含有OCR技術的分了器,確定影象中是否有文字。
- 執行文字拐角檢測器,對其進行修正。
- 用OCR引擎提取tokens。
- 向用戶的搜尋索引中新增token列表。
結語
自動圖片文字辨認是計算機視覺和機器學習處理大型資料的重要案例。讓圖片中的文字可搜尋只是深度瞭解文字結構和內容的第一步,有了這一成果,Dropbox可以幫助使用者更好地管理他們的檔案。