0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何實(shí)現(xiàn)自動(dòng)識(shí)別并提取圖片中的文本內(nèi)容

電子工程師 ? 來源:未知 ? 作者:李倩 ? 2018-10-29 09:56 ? 次閱讀

【導(dǎo)讀】提到 Dropbox,大家可能都知道這是一個(gè)文件同步、備份、共享的云存儲(chǔ)軟件。其實(shí) Dropbox 可以實(shí)現(xiàn)的功能遠(yuǎn)不止這些。今天就為大家介紹 Dropbox 一個(gè)非常強(qiáng)大又實(shí)用的功能——自動(dòng)識(shí)別并提取圖片中的文本內(nèi)容,包含 PDF 文檔中的圖片。比如,當(dāng)用戶搜索其中某個(gè)文件中出現(xiàn)的一段文本時(shí)(英文文本),在搜索結(jié)果中就會(huì)顯示出這個(gè)文件。下面我們就為大家介紹這樣的功能是如何實(shí)現(xiàn)的。

前言

自動(dòng)識(shí)別圖片中的文字功能有很多好處,最顯著的提升是能夠讓 Dropbox 用戶搜索從前無法搜索的內(nèi)容。Dropbox 用戶上傳的圖片和 PDF 文檔總數(shù)已經(jīng)超過了兩百億,這其中有超過百分之十的文件真正的內(nèi)容都是文本,但格式是圖片,比如說手機(jī)拍攝的小票或者白板的照片。這些就是我們要進(jìn)行文字識(shí)別的對象了。PDF 文件中有 25% 左右是文檔的掃描件,這些也屬于我們想實(shí)現(xiàn)自動(dòng)文字識(shí)別的對象。

對用戶來說,文檔和文檔的掃描件好像差不太多,但對計(jì)算機(jī)來說區(qū)別可就大了。文檔可以進(jìn)行索引并搜索,而圖片說白了只是一些像素點(diǎn)罷了。像 TXT、DOCX 和 html 格式的文件一般來說都可以進(jìn)行索引,而像 JPEG、PNG 和 GIF 這些圖片格式一般來說是不能直接進(jìn)行索引的。對 PDF 文件來說要分情況,比如 PDF 里的圖片也是不能夠索引的。圖像文本自動(dòng)識(shí)別功能可以智能地區(qū)分所有的文檔和文檔中包含哪類數(shù)據(jù)。

分析

講如何實(shí)現(xiàn)之前我們先要對這個(gè)問題進(jìn)行一些初步的分析,具體來說就是回答下面三個(gè)問題:

什么文件需要進(jìn)行文字識(shí)別

如何判斷文件是否包含有文字

對于 PDF 文件是否所有頁都需要全部識(shí)別?識(shí)別多少是有用的?

需要進(jìn)行識(shí)別的主要是當(dāng)前沒有可用索引文本內(nèi)容的文件,包括圖片格式和還有一部分 PDF 文檔,但其實(shí)這部分文件只占所有文件的很小一部分,所以解決這個(gè)問題很重要的一個(gè)步驟就是建立一個(gè)機(jī)器學(xué)習(xí)模型來判斷文件是否包含可識(shí)別的文字。比如說某文檔的照片我們就需要進(jìn)行識(shí)別,但如果只是自拍拍到了衣服上的字,這時(shí)候識(shí)別恐怕就沒有什么意義了。這里我們使用了一個(gè)卷積神經(jīng)網(wǎng)絡(luò)來進(jìn)行二元分類。

我們經(jīng)過統(tǒng)計(jì)發(fā)現(xiàn) JPEG 這一最常見的圖片格式中有大約 9% 可能包含文字。PDF 文件的每一頁則可能屬于下面三種情形之一:

非圖片,只有可索引的文字

含有文字的圖片

完全沒有文字內(nèi)容的圖片

這三類中我們感興趣的其實(shí)只有第二類。我們發(fā)現(xiàn)第二類情況在三種情況之中約占 28%。PDF文件的數(shù)量雖然只有 JPEG 圖片數(shù)量的一半,但每個(gè) PDF 文件平均有 8.8 頁。所以綜合看來要處理的 PDF 文件個(gè)數(shù)超過 JPEG 圖片量十多倍。不過用下面這個(gè)很簡單的辦法就能大大降低需要處理的 PDF 文件數(shù)目。

文件總頁數(shù)

有些 PDF 文件頁數(shù)很多,可能好幾千頁的都有。如果我們沒頭沒腦的通通識(shí)別會(huì)很占時(shí)間和資源。我們統(tǒng)計(jì)了一下 PDF 文件的頁數(shù),發(fā)現(xiàn)超過一半的文件都只有一頁,超過十頁的文件大約只占 PDF 文件總數(shù)的 10%。所以我們設(shè)定了一個(gè)標(biāo)準(zhǔn),不管文件有多長只識(shí)別前面十頁。

這樣算下來 90% 的 PDF 文檔我們都能實(shí)現(xiàn)完全索引。較長的文檔我們雖然沒有完全實(shí)現(xiàn)識(shí)別和索引,但能搜十頁也比完全搜索不到好的多了。

自動(dòng)文字識(shí)別系統(tǒng)

▌圖片的渲染

對于 PDF 文件中圖片的渲染由兩種可行的方式:一個(gè)是將頁面中的圖片一張張?zhí)崛〕鰜?,另一個(gè)是將一頁文件當(dāng)一整張圖片來處理。這兩種方法我們都測試了,不過 Dropbox 的文件預(yù)覽功能已經(jīng)有了完善的 PDF 渲染能力,所以最終我們選擇了第二個(gè)方法。這樣處理的話,像 PowerPoint 或者 Post Script 這樣的文件格式,只要能支持預(yù)覽,我們就能進(jìn)行識(shí)別,而且詞與詞、段與段之間的順序不會(huì)被打亂。

我們的渲染功能是基于谷歌的 PDFium 開發(fā)的。這其實(shí)也是 Chrome 瀏覽器所使用的 PDF 渲染引擎。渲染的過程中我們使用了并行處理來降低延遲。

▌文件圖像分類

模型方面我們先用了 GoogLeNet 來進(jìn)行特征提取,然后用了一個(gè)線性分類器來實(shí)現(xiàn)有無文字的分類。訓(xùn)練所用的圖片有些是網(wǎng)上公開的,有些是用戶和 Dropbox 員工提供的,一共有幾千張。

我們發(fā)現(xiàn)一開始訓(xùn)練模型的時(shí)候準(zhǔn)確率略低,模型把天際線、光溜溜的墻和開放水域這類圖片都判斷為有文字了。其實(shí)我們?nèi)搜鄱疾惶菀卓闯鲞@些圖片有什么共同點(diǎn),不過模型認(rèn)為只要是背景比較均一,有橫線的就是有文字。最后是通過人工標(biāo)記和給訓(xùn)練集中加入這類圖片才克服了這個(gè)問題,從而把準(zhǔn)確率提上來了。

▌識(shí)別圖片的四個(gè)角

用戶上傳的圖片因?yàn)榕恼战嵌鹊脑?,一般來說都不是我們想要的矩形和直角,所以必須進(jìn)行矯正。要矯正的話,就要取得圖片中文件四個(gè)角的坐標(biāo),這個(gè)功能我們也是用卷積神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)的。具體地說,就是把 Densenet-121 的輸出換成了四個(gè)角的坐標(biāo)。

訓(xùn)練這個(gè)模型用了幾百張圖。標(biāo)記數(shù)據(jù)集的過程,需要一張一張地把文件的四個(gè)邊找出來。這項(xiàng)工作我們是在亞馬遜上眾包完成的。有的圖某個(gè)角可能壓根沒拍著,那這個(gè)角的坐標(biāo)就跑到圖片外面去了,這時(shí)候就只能靠人工腦補(bǔ)了。

為了加快速度,訓(xùn)練模型的時(shí)候用的圖片分辨率比實(shí)際的圖片分辨率低,所以輸出的坐標(biāo)也是低分辨率圖片上的坐標(biāo)。為了提高精度,我們在四個(gè)角附近,用高分辨率的圖片把模型重跑了一遍。這樣既提升了訓(xùn)練的速度,又能得到高精度圖片上四個(gè)角的坐標(biāo)。

▌單詞提取

這一部分以矯正過的圖片作為輸入,輸出的則是單詞的內(nèi)容和定界框。單詞就按照識(shí)別出的順序一一加入索引。如果文件超過一頁,則繼續(xù)建立索引一直達(dá)到 10 頁的限制就停。

上面講的的這幾個(gè)部分組合起來看是這樣的:

圖中標(biāo)出的步驟我們來分別介紹一下:

通過檢查文件格式判斷是否含有圖片;判斷用戶權(quán)限

判斷圖片或 PDF 文件是否含有可識(shí)別的文字

判斷圖片的四個(gè)角以便進(jìn)行矯正

提取單詞

加入索引

圖中有一個(gè)我們之前沒有介紹過的 Auto-OCR lambda 模塊,這其實(shí)是一個(gè) Cape 微服務(wù)。Cape 是 Dropbox 在 16 年底推出的一個(gè)異步事件流處理框架,Dropbox 很多功能都用到了Cape。有了這個(gè) Cape 微服務(wù),當(dāng)用戶對文件進(jìn)行增改的時(shí)候文字識(shí)別功能就能自動(dòng)觸發(fā)了,也就是圖中列出來的步驟 1 到 5。

得益于 Dropbox 預(yù)覽功能所提供的基礎(chǔ)設(shè)施,這一系列從讀取文件,判斷類型,矯正到最后識(shí)別操作的效率很高,而且這套系統(tǒng)對文件的操作(比如渲染)是進(jìn)行了緩存的,所以當(dāng)用戶上傳同一個(gè)文件不會(huì)造成系統(tǒng)資源的二次開銷。增加支持的文件類型和操作也是非常容易,只要為新的文件類型開發(fā)一個(gè)預(yù)覽插件就行了。現(xiàn)在對 PDF 文件的識(shí)別也是通過插件來實(shí)現(xiàn)的。

為了提供系統(tǒng)的穩(wěn)定性,我們在插件的調(diào)用過程中使用了指數(shù)補(bǔ)償算法并加入了隨機(jī)值。拿第一步調(diào)用的插件來說,重試之后失敗率降低了 88%。

性能優(yōu)化

剛開始測試的時(shí)候我們發(fā)現(xiàn)所使用的機(jī)器學(xué)習(xí)模型所占的資源和帶來的延遲完全在我們能接受的范圍之外,所以必須進(jìn)行優(yōu)化。我們決定先從配置參數(shù)著手,因?yàn)槲覀儼l(fā)現(xiàn)如果模型的性能遭遇瓶頸,很多時(shí)候簡單地改變配置參數(shù)就能收到很好的效果。下面我們就來舉幾個(gè)例子說明一下。

我們的第一個(gè)改動(dòng)是關(guān)閉了 TensorFlow 的多核支持。Dropbox 系統(tǒng)并行是在 CPU 層面實(shí)現(xiàn)的。每個(gè)核只運(yùn)行一個(gè)單線程的程序,這樣可以避免對數(shù)據(jù)的損壞也能降低惡意軟件入侵的風(fēng)險(xiǎn)。然而,TensorFlow 默認(rèn)是開啟多核支持的。這樣相當(dāng)于每一個(gè)核又在跑多線程了,由此引起的上下文切換使得系統(tǒng)吞吐量損失了約 2/3。

關(guān)閉多核支持后性能還是不夠好。所以我們又換成了支持 AVX2 指令集的 TensorFlow 并將模型和環(huán)境用 TensorFlow XLA 提前編譯成一個(gè) C++ 庫。此外我們還調(diào)整了一些隱藏層的節(jié)點(diǎn)數(shù)量。

圖像四個(gè)角坐標(biāo)和文本方向的判斷我們所采用的模型架構(gòu)是 Densenet-121。相比之前用過的 Inception-Resnet-v2 來說速度大概快了一倍,坐標(biāo)識(shí)別的準(zhǔn)確率只是稍遜,而且是可以忽略不計(jì)的程度。

其實(shí)我們所作的這些工作都是為了加深對文件結(jié)構(gòu)和內(nèi)容的理解,讓用戶使用 Dropbox 時(shí)可以有更好的體驗(yàn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:Dropbox如何使用機(jī)器學(xué)習(xí)從數(shù)十億圖片中自動(dòng)提取文字

文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    AI提取圖片里包含的文字信息-解決文字無法復(fù)制的痛點(diǎn)

    這個(gè)文字識(shí)別接口里不僅僅有通用文字識(shí)別功能,還支持很多其他功能:比如身份證、駕駛證、保險(xiǎn)單、手寫文本、火車票,行駛證.......等等功能。還支持用戶自定義識(shí)別模板,指定需要
    的頭像 發(fā)表于 07-07 09:37 ?1589次閱讀
    AI<b class='flag-5'>提取</b><b class='flag-5'>圖片</b>里包含的文字信息-解決文字無法復(fù)制的痛點(diǎn)

    如何實(shí)現(xiàn)串口的自動(dòng)識(shí)別

    用visa設(shè)計(jì)串口通信程序每次都得選擇串口,請問有沒有哪位大俠會(huì)設(shè)計(jì)能夠自動(dòng)識(shí)別串口的程序??謝謝了~
    發(fā)表于 03-23 22:48

    求助帖 labview自動(dòng)識(shí)別

    自動(dòng)識(shí)別 ,不想直接在前面板組合框中輸入,因?yàn)槿绻砀裰械腁和B變成C和D的話就不匹配了,想實(shí)現(xiàn)自動(dòng)識(shí)別。問題是組合框是字符串類型,A,B形成了一個(gè)一維數(shù)組,怎么辦!??!求助
    發(fā)表于 04-19 14:34

    請問USB自動(dòng)識(shí)別芯片RH7901是怎樣自動(dòng)識(shí)別充電設(shè)備的?

    本帖最后由 一只耳朵怪 于 2018-5-22 14:19 編輯 USB自動(dòng)識(shí)別芯片RH7901RH7902 怎樣自動(dòng)識(shí)別充電設(shè)備的?***彭SRH7901 RH7902是USB充電協(xié)議端口
    發(fā)表于 05-22 14:15

    NLPIR在文本信息提取方面的優(yōu)勢介紹

    自動(dòng)識(shí)別并抽取圖片中的文字信息。2、對結(jié)構(gòu)化表格數(shù)據(jù)知識(shí)抽取KGB能夠自適應(yīng)解讀并抽取結(jié)構(gòu)化表格數(shù)據(jù),實(shí)現(xiàn)知識(shí)的快速生成。3、對非結(jié)構(gòu)化文檔知識(shí)抽取KGB知識(shí)規(guī)則引擎,能夠快速定位非結(jié)構(gòu)化文檔中
    發(fā)表于 09-12 15:33

    車輛自動(dòng)識(shí)別稱重系統(tǒng)的工作原理

    車輛自動(dòng)識(shí)別稱重系統(tǒng)的工作原理車輛自動(dòng)識(shí)別稱重系統(tǒng)組成車輛自動(dòng)識(shí)別稱重系統(tǒng)典型方案示意圖車輛自動(dòng)識(shí)別稱重系統(tǒng)給用戶帶來的利益
    發(fā)表于 03-01 09:31

    如何利用SPD實(shí)現(xiàn)內(nèi)存自動(dòng)識(shí)別和配置?

    SPD規(guī)范及數(shù)據(jù)格式是什么?卡的自動(dòng)識(shí)別和配置過程是怎樣進(jìn)行的?
    發(fā)表于 04-27 06:51

    基于AI通用文字識(shí)別能力,檢測和識(shí)別文檔翻拍、街景翻拍等圖片中的文字

    鏈接,完成設(shè)備調(diào)試的相關(guān)配置:使用真機(jī)進(jìn)行調(diào)試使用模擬器進(jìn)行調(diào)試3. 代碼結(jié)構(gòu)解讀基于AI的通用文字識(shí)別示例教程主要內(nèi)容包括:圖片列表展示、輸入文本、分詞、通用文字
    發(fā)表于 08-27 11:27

    如何實(shí)現(xiàn)系統(tǒng)自動(dòng)識(shí)別并切斷電池供電的呢?

    便攜式設(shè)備經(jīng)常會(huì)存在USB供電和鋰電池供電并存的情況,那么當(dāng)USB插入供電的時(shí)候如何實(shí)現(xiàn)系統(tǒng)自動(dòng)識(shí)別并切斷電池供電的呢?帶著這個(gè)問題我們來看下今天的分享內(nèi)容。如下電路主要是實(shí)現(xiàn)USB插
    發(fā)表于 01-26 07:40

    基于SAW技術(shù)的車輛自動(dòng)識(shí)別系統(tǒng)的實(shí)現(xiàn)

    介紹了基于SAW器件的無線識(shí)別技術(shù)的原理,詳細(xì)闡述了一種采用SAW(聲表面波)技術(shù)的高速運(yùn)動(dòng)車輛自動(dòng)識(shí)別系統(tǒng)的實(shí)現(xiàn)。
    發(fā)表于 07-16 15:41 ?22次下載

    基于機(jī)器學(xué)習(xí)的日志自動(dòng)識(shí)別

    的前提條件,對分析結(jié)果有著直接影響。提出了一種基于機(jī)器學(xué)習(xí)的方法以支持日志自動(dòng)識(shí)別。通過系統(tǒng)分析廣泛使用的大規(guī)模開源軟件,總結(jié)出日志函數(shù)編寫的主要形式,并提取不同形式間的共性特征,進(jìn)而基于機(jī)器學(xué)習(xí)實(shí)現(xiàn)
    發(fā)表于 11-23 11:21 ?8次下載

    RFID技術(shù)如何實(shí)現(xiàn)車證自動(dòng)識(shí)別

    將RFID 技術(shù)應(yīng)用于車輛自動(dòng)識(shí)別,在國外已經(jīng)比較成熟,主要就是由于RFID技術(shù)具有的特點(diǎn)比較適用于車輛自動(dòng)識(shí)別
    發(fā)表于 03-01 20:16 ?3198次閱讀
    RFID技術(shù)如何<b class='flag-5'>實(shí)現(xiàn)</b>車證<b class='flag-5'>自動(dòng)識(shí)別</b>

    使用MATLAB編程軟件和機(jī)器視覺實(shí)現(xiàn)汽車車牌自動(dòng)識(shí)別

    以汽車牌照的識(shí)別為例,具體研究了車牌自動(dòng)識(shí)別的原理。整個(gè)處理過程分為預(yù)處理、邊緣提取、車牌定位、字符分割和字符識(shí)別五大模塊,用MATLAB軟件編程來
    發(fā)表于 08-28 09:38 ?35次下載
    使用MATLAB編程軟件和機(jī)器視覺<b class='flag-5'>實(shí)現(xiàn)</b>汽車車牌<b class='flag-5'>自動(dòng)識(shí)別</b>

    圖片文字識(shí)別:揭開數(shù)字世界的神秘面紗

    隨著數(shù)字化時(shí)代的到來,我們生活中的大部分?jǐn)?shù)據(jù)都以圖片的形式存在。然而,這些圖片中蘊(yùn)含的信息往往比文字更豐富,如何從這些圖片中提取有價(jià)值的信息,是數(shù)字世界中一個(gè)十分重要的問題。這時(shí),圖片
    的頭像 發(fā)表于 05-11 18:20 ?615次閱讀

    水位自動(dòng)識(shí)別攝像機(jī)

    隨著科技的不斷發(fā)展,水位自動(dòng)識(shí)別攝像機(jī)作為一種智能技術(shù)產(chǎn)品,正在逐漸應(yīng)用于各種領(lǐng)域,為監(jiān)測水位提供了更加便捷、準(zhǔn)確的方法。這種攝像機(jī)可以自動(dòng)識(shí)別水位的高低,實(shí)時(shí)監(jiān)測水域情況,為防洪排澇、水資源
    的頭像 發(fā)表于 07-31 10:34 ?377次閱讀
    水位<b class='flag-5'>自動(dòng)識(shí)別</b>攝像機(jī)