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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

AI時代文檔識別技術之表格圖像識別詳解

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-10 19:30 ? 次閱讀
本文主要介紹基于深度神經(jīng)網(wǎng)絡的表格圖像識別解決方案。作者系騰訊QQ研發(fā)中心——CV應用研究組的yonke。
來源:騰訊技術工程微信號

1.前言

1.1背景

大多數(shù)人日常辦公處理的文件,無非就是表格和文檔,其中表格的重要性毋庸置疑。在各行各業(yè)的桌面辦公場景中,Excel和WPS是電子表格的事實標準。我們經(jīng)常遇到這種需求:將一個表格圖片的內(nèi)容導入Excel。

以前我們只能對著圖片把內(nèi)容一點點敲進excel,既低效又容易出錯。近年來,在深度學習的加持下,OCR (Optical Character Recognition,光學字符識別)的可用性不斷提升,大量用戶借助OCR軟件,從圖片中自動提取文本信息

然而對于表格場景,只是提取文本依然不夠,用戶還需反復手動復制粘貼以還原出電子表格,這依然耗費大量時間。因此我們實現(xiàn)了一種識別表格圖像的解決方案,并與騰訊文檔結(jié)合,切實提升用戶辦公效率。

下面是我們的識別效果展示:

1.2 業(yè)界方案

表格圖像識別有較高的商業(yè)價值,一般都在付費的專業(yè)OCR軟件中才能體驗到:比如ABByy fine reader。這些軟件所用的技術,并沒有完全公開。

比如ABByy公開的論文中,也只是簡略介紹主要原理,無法復現(xiàn),且距今已久,后期的技術進步無法得知。因此我們難以從商業(yè)軟件中得到啟示。
遍閱近幾年比較有實操價值的論文,可分為以下三種思路:

1)利用OCR檢測文本,從文本框的空間排布信息推導出有哪些行、有哪些列、哪些單元格需合并,由此生成電子表格;
2)運用圖像形態(tài)學變換、紋理提取、邊緣檢測等手段,提取表格線,再由表格線推導行、列、合并單元格的信息;
3)神經(jīng)網(wǎng)絡端到端學習,代表工作是TableBank,使用image to text技術,將表格圖片轉(zhuǎn)為某種結(jié)構(gòu)化描述語言(比如html定義表格結(jié)構(gòu)的標簽)。

經(jīng)過實驗,發(fā)現(xiàn)以上三種思路都有不便落地的缺陷:

思路1)極度依賴OCR檢測結(jié)果和人工設計的規(guī)則,對于不同樣式的表格,需做針對性開發(fā),推廣性差;
思路2)依賴傳統(tǒng)圖像處理算法,在魯棒性方面較欠缺,并且對于沒有可見線的表格,傳統(tǒng)方法很吃力,很難把所有行/列間隙提取出來;
思路3)解決方案沒有次第,一旦出現(xiàn)bad case,無法從中間步驟快速干預修復,只能重新調(diào)整模型(還不一定能調(diào)好),看似省事,實則不適合工程落地。

2.基于深度圖像分割的方案

針對已有方案的缺點和優(yōu)點,我們提出一套更具可行性的解決方案。流程如下:

1) 對表格圖片應用深度學習進行圖像分割,分割的目的是對表格線部分進行標注,分割類別是4類:橫向的線,豎向的線,橫向的不可見線,豎向的不可見線,類間并不互斥,也就是每個像素可能同時屬于多種類別,這是因為線和線之間有交點,交點處的像素是同屬多條線的。

2)對分割圖分別做幾何分析,即先提取連通區(qū)域,再對連通區(qū)域擬合折線,再對游離的線段根據(jù)距離和傾角進行合并形成框線。由于拍攝角度或者紙張的彎曲,一般原圖表格會有一些傾斜,可使用投影變換(perspective transformation)對原圖進行校正,使得橫框線校至水平,豎框線校至豎直。

3) 對校正后的圖調(diào)用OCR,識別其中的文本內(nèi)容,以及每個字符的坐標。

4) 根據(jù)第2)步得到的框線,計算出有哪些行,哪些列,其中哪些單元格跨行列合并了。由此得到每個單元格在圖中的位置(top_left, top_right, bottom_left, bottom_right)四點坐標。

5) 將單元格位置,與字符坐標進行匹配,決定每個字符在哪個單元格中。最后計算每個單元格的字號大小,對齊方式等格式信息。

下面對每個步驟進行詳細剖析。

2.1 圖像分割模型

圖像分割(segmentation)旨在對圖像的每個像素賦予標簽。在這里,我們的分割任務有多標簽,每個像素可能屬于橫線、豎線、不可見橫線、不可見豎線。

為了提取上述各種線所在的像素,我們嘗試了多種圖像分割算法和二值化算法:OTSU二值化、adaptiveThreshold二值化、Canny算子、SED(Structural Edge Detection)算法、深度學習圖像分割。深度學習在準確性和魯棒性有壓倒性優(yōu)勢,我們最后專注于深度學習方法,而拋棄所有傳統(tǒng)算法。

目前較常用的深度學習圖片分割模型有DeepLab系列,fcn,Unet,SegNet等,經(jīng)過實驗對比我們發(fā)現(xiàn)在這個問題中,以上方法最后收斂效果幾乎是一樣的,故我們選擇收斂速度最快的Unet。

為了更快的速度,對于backbone的設計,我們參考mobilenet,使用depthwise+pointwise替代常規(guī)卷積。表格線是細長型物體,角度要么基本水平,要么基本豎直,并且有的線會很長,在橫豎方向上更大的感受野將帶來更多好處。故我們選用的卷積核形狀為5x1和1x5,實測比常用的3x3能達到更好的性能,MIOU指標有2%的提升。由于標簽不互斥,我們不用softmax做輸出,而是用4個sigmoid,分別表示4個標簽的概率。由于各類像素數(shù)量不平衡,我們的損失函數(shù)采用加權(quán)交叉熵,迭代到后期收斂速度變慢后可用Dice Coeff Loss。訓練數(shù)據(jù)我們采用人工標注+仿真生成結(jié)合。下圖是我們訓練收斂后的效果,直觀看擬合得還不錯。

2.2 分割結(jié)果幾何分析

對分割結(jié)果設定閾值0.5進行二值化,轉(zhuǎn)成幾張二值化圖,分別表示每種線所屬的像素。接著對每個二值化圖求連通區(qū)域。對連通區(qū)域進行過濾,長度太小的丟棄。對剩下的每個有效連通區(qū)域,分別擬合折線,即得到大量線段。對線段的角度進行統(tǒng)計,橫、豎兩種線段與x軸的夾角均值應接近0和90度,若否,則認為識別失敗并終止。在橫、豎線段中,若有角度偏離均值3個標準差以上的,則過濾掉。對于剩下的線段,應用DisjointSet算法進行合并,被合并的線段構(gòu)成一條新的長直線,這些直線代表框線。兩線段合并的判定條件是:夾角小于15度,并且一條線段的端點到另一條線段的距離小于一定閾值。

最終得到的若干直線,就是表格的框線。但是手機拍攝的照片一般都有一些傾斜,為便于后續(xù)處理和提高OCR結(jié)果的質(zhì)量,我們將對圖片進行傾斜校正。校正方法使用投影變換,也即擬合一個單應矩陣H,使得HX=X',X的每一列是在每條直線上以固定距離采樣的點的齊次坐標,X'的對應列是該點校正后的齊次坐標。橫線校正至水平,也即線上所有點的y坐標一致;豎線校正至豎直,也即線上所有點的x坐標一致。最后將求得的投影變換應用到原圖中,將圖片也校正。

2.3 OCR

將校正后的圖片送去OCR,可得到圖中每個字符的坐標。注意我司幾個OCR平臺返回的結(jié)果都是一串文字的文本框,這個文本框不一定與表格單元格能一一對應,有可能一個文本框里包含多個單元格,也可能一個單元格里檢測出多個文本框。每個文本框中有若干字符,附帶的字符坐標對判斷其所屬單元格就十分重要了。下圖是我司某個OCR平臺所返回的識別結(jié)果。

2.4 識別表格結(jié)構(gòu)

接下來需要識別表格的結(jié)構(gòu),以跟OCR結(jié)果進行匹配。我們對一個完整的表格定義如下:

1)所有單元格,單元格定義為[起始行,結(jié)束行,起始列,結(jié)束列]
2)每一行的行高(像素)
3)每一列的列寬(像素)
4)每個單元格的字號大小(像素)
5)每個單元格的對齊方式(left/right/center)
6)每個單元格的文字內(nèi)容

表格的結(jié)構(gòu)是指1),2)和3)。我們提出一套高效的算法從表格線推導出每行(列)的高(寬)和所有單元格的坐標。

由表格框線推導行(列)的高(寬)比較容易,只需對所有的橫(豎)線按從上(左)到下(右)排序,相臨框線形成一行(列),所以只需計算相臨框線的y坐標(x坐標)差即可。

由表格框線推導單元格坐標就不太容易了。因為現(xiàn)實中存在很多單元格合并的情況,一個單元格可能跨了若干行和若干列。對此我們的思路是列舉所有的單元格候選,每個單元格表示為(起始行,結(jié)束行,起始列,結(jié)束列),然后對所有單元格按面積從小到大排序。接著遍歷排序好的候選單元格,去判斷其上下左右的框線是否都真實存在,若存在,則此單元格就在原圖存在。注意到,每當確立一個單元格存在,所有與其共享起始行和起始列的其他單元格則不可能再存在,因為我們不考慮單元格中套著單元格的情況。所以雖然單元格候選集很大,但我們可以利用這一性質(zhì)在遍歷過程中進行剪枝,所以會很高效。

2.5 匹配文字內(nèi)容,確定字號和對齊方式

2.4定義的表格還有4)5)6)沒有識別。經(jīng)過以上步驟,我們已經(jīng)得到每個單元格的坐標和每個字符的坐標。接下來就只需進行對號入座就可得到每個單元格中的文本,也即解決了6)。字號可由OCR文本高度確定,但是由于返回的高度總有一些不一樣,實際表格中常常不會有太多字號,經(jīng)常是同一列的單元格用一樣的字號。因此我們對所有得到的文本高度進行聚類,當兩行文本高度比例在[0.91, 1.1]之間,就可以認為是同個高度。聚好類后,對類內(nèi)高度求平均值,以平均值做為此類所有文本的真實高度。最后將文本高度換算為字號,由此4)也解決了。最后根據(jù)文本在單元格中的位置,判斷每個單元格的對齊方式,對于對齊方式,也采取類似的聚類方法來去除噪音。由此5)也解決了。

至此,表格的所有單元格,每一行的行高,每一列的列寬,每個單元格的字號大小,每個單元格的對齊方式,每個單元格的文字內(nèi)容都已經(jīng)識別出來了。只需將單位換成Excel、WPS或者騰訊文檔的標準單位,就可以轉(zhuǎn)成電子表格了!

3.實現(xiàn)與部署

3.1 整體流程

我們實現(xiàn)的這套表格識別方案,擁有客戶端實時檢測表格和后臺識別生成表格兩個部分。上文介紹的是后臺識別生成的部分??蛻舳藢崟r檢測所用的模型是SSD(Single Shot MultiBox Detector),可實時框選表格所在的區(qū)域,協(xié)助用戶調(diào)整拍攝角度。系統(tǒng)流程如下圖所示:

我們的方案目前集成在騰訊文檔中,大家可以體驗。

3.2 訓練數(shù)據(jù)仿真

我們?nèi)斯げ杉瘶俗⒘藬?shù)萬樣本。做為補充,我們也程序仿真生成樣本。仿真方法是先對背景圖要放表格的區(qū)域進行紋理檢測,將高頻部分去掉,再做Inpainting,這樣既保留的背景,又留出了空白。接著隨機生成表格結(jié)構(gòu),在背景留白處畫出表格,在畫線,放文字之后,還需在線和文字的像素周圍將高斯噪聲加上,以模擬相機傳感器的成像特點。最后對生成的圖和標注圖進行mesh warp,模仿紙張扭曲。

4.性能指標

4.1 深度學習分割模型性能

我們的深度學習表格線分割模型和其他傳統(tǒng)的算法對比如下。測試數(shù)據(jù)是人工標注的真實表格圖片,數(shù)量4w張??梢钥闯鑫覀兊哪P痛蟠髢?yōu)于傳統(tǒng)算法。

name 精確率(Precision) 召回率(Recall) MIOU
我們的深度學習模型 95.03% 97.54% 90.22%
OTSU 59.67% 63.84% 55.26 %
adaptiveThreshold 63.93% 88.45% 50.21%
Canny 71.75% 70.33% 63.85%
SED 81.35% 86.16% 64.03%

4.2 表格結(jié)構(gòu)識別的性能指標

為了客觀評價我們整套表格識別方案的性能。我們構(gòu)造一個數(shù)據(jù)集,并建立一個評價指標系統(tǒng)。表格識別結(jié)果好不好,不能只靠肉眼判定,要量化評價。表格結(jié)構(gòu)識別過程,可看成是對單元格的檢測,我們關注檢測的precision和recall指標。為計算precision和recall,需計算true positive,false positive,false negative樣本,計算策略如下:

在2w張表格圖片樣本中驗證,以下是目前為止我們的性能

name 指標的意義
平均準確率 0.8736 反映了重建結(jié)果中,有多少單元格是真實存在的,有多少是錯置的
平均召回率 0.9241 反映了重建結(jié)果中,漏掉了多少單元格
adaptiveThreshold 63.93% 88.45% 50.21%
TP樣本平均IOU 0.8212 反映了重建結(jié)果中,那些我們認為正確重建的單元格,跟圖片的本來樣子有多像



推薦閱讀:

更多騰訊AI相關技術干貨,請關注專欄騰訊技術工程

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

    關注

    1789

    文章

    46348

    瀏覽量

    236512
  • 計算機視覺
    +關注

    關注

    8

    文章

    1689

    瀏覽量

    45875
收藏 人收藏

    評論

    相關推薦

    AI大模型在圖像識別中的優(yōu)勢

    大模型借助高性能的計算硬件和優(yōu)化的算法,能夠在短時間內(nèi)完成對大量圖像數(shù)據(jù)的處理和分析,顯著提高了圖像識別的效率。 識別準確性 :通過深度學習和計算機視覺技術
    的頭像 發(fā)表于 10-23 15:01 ?78次閱讀

    圖像識別算法有哪幾種

    圖像識別算法是計算機視覺領域的核心技術之一,它通過分析和處理圖像數(shù)據(jù),實現(xiàn)對圖像中的目標、場景和物體的識別和分類。
    的頭像 發(fā)表于 07-16 11:22 ?756次閱讀

    圖像檢測和圖像識別的原理、方法及應用場景

    圖像檢測和圖像識別是計算機視覺領域的兩個重要概念,它們在許多應用場景中發(fā)揮著關鍵作用。 1. 定義 1.1 圖像檢測 圖像檢測(Object Detection)是指在
    的頭像 發(fā)表于 07-16 11:19 ?2335次閱讀

    圖像識別算法都有哪些方法

    圖像識別算法是計算機視覺領域的核心任務之一,它涉及到從圖像中提取特征并進行分類、識別和分析的過程。隨著深度學習技術的不斷發(fā)展,圖像識別算法已
    的頭像 發(fā)表于 07-16 11:14 ?4567次閱讀

    圖像識別算法的提升有哪些

    引言 圖像識別是計算機視覺領域的核心任務之一,旨在使計算機能夠自動地識別和理解圖像中的內(nèi)容。隨著計算機硬件的發(fā)展和深度學習技術的突破,圖像識別
    的頭像 發(fā)表于 07-16 11:12 ?504次閱讀

    圖像識別算法的優(yōu)缺點有哪些

    圖像識別算法是一種利用計算機視覺技術圖像進行分析和理解的方法,它在許多領域都有廣泛的應用,如自動駕駛、醫(yī)療診斷、安全監(jiān)控等。然而,圖像識別算法也存在一些優(yōu)缺點。 一、
    的頭像 發(fā)表于 07-16 11:09 ?988次閱讀

    圖像識別算法的核心技術是什么

    圖像識別算法是計算機視覺領域的一個重要研究方向,其目標是使計算機能夠像人類一樣理解和識別圖像中的內(nèi)容。圖像識別算法的核心技術包括以下幾個方面
    的頭像 發(fā)表于 07-16 11:02 ?450次閱讀

    圖像識別技術包括自然語言處理嗎

    圖像識別技術與自然語言處理是人工智能領域的兩個重要分支,它們在很多方面有著密切的聯(lián)系,但也存在一些區(qū)別。 一、圖像識別技術與自然語言處理的關系 1.1
    的頭像 發(fā)表于 07-16 10:54 ?502次閱讀

    圖像識別技術在醫(yī)療領域的應用

    一、引言 圖像識別技術是一種利用計算機視覺技術圖像進行分析和處理的技術。隨著計算機技術、人工智
    的頭像 發(fā)表于 07-16 10:48 ?500次閱讀

    圖像識別技術的原理是什么

    圖像識別技術是一種利用計算機視覺和機器學習技術圖像進行分析和理解的技術。它可以幫助計算機識別
    的頭像 發(fā)表于 07-16 10:46 ?723次閱讀

    圖像識別屬于人工智能嗎

    屬于。圖像識別是人工智能(Artificial Intelligence, AI)領域的一個重要分支。 一、圖像識別概述 1.1 定義 圖像識別是指利用計算機
    的頭像 發(fā)表于 07-16 10:44 ?739次閱讀

    如何利用CNN實現(xiàn)圖像識別

    卷積神經(jīng)網(wǎng)絡(CNN)是深度學習領域中一種特別適用于圖像識別任務的神經(jīng)網(wǎng)絡結(jié)構(gòu)。它通過模擬人類視覺系統(tǒng)的處理方式,利用卷積、池化等操作,自動提取圖像中的特征,進而實現(xiàn)高效的圖像識別。本文將從CNN的基本原理、構(gòu)建過程、訓練策略以
    的頭像 發(fā)表于 07-03 16:16 ?795次閱讀

    神經(jīng)網(wǎng)絡在圖像識別中的應用

    隨著人工智能技術的飛速發(fā)展,神經(jīng)網(wǎng)絡在圖像識別領域的應用日益廣泛。神經(jīng)網(wǎng)絡以其強大的特征提取和分類能力,為圖像識別帶來了革命性的進步。本文將詳細介紹神經(jīng)網(wǎng)絡在圖像識別中的應用案例,包括
    的頭像 發(fā)表于 07-01 14:19 ?519次閱讀

    圖像識別技術原理 圖像識別技術的應用領域

    圖像識別技術是一種通過計算機對圖像進行分析和理解的技術。它借助計算機視覺、模式識別、人工智能等相關技術
    的頭像 發(fā)表于 02-02 11:01 ?2062次閱讀

    如何使用Python進行圖像識別的自動學習自動訓練?

    如何使用Python進行圖像識別的自動學習自動訓練? 使用Python進行圖像識別的自動學習和自動訓練需要掌握一些重要的概念和技術。在本文中,我們將介紹如何使用Python中的一些常用庫和算法來實現(xiàn)
    的頭像 發(fā)表于 01-12 16:06 ?499次閱讀