• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于OCR技術(shù)的航天器材料及器件試驗(yàn)數(shù)據(jù)識別系統(tǒng)

      2023-02-06 10:12:36陸俊杰魏亞東李曉峰李洪普
      計(jì)算機(jī)測量與控制 2023年1期
      關(guān)鍵詞:單元格字符表格

      陸俊杰,魏亞東,李曉峰,王 成,李洪普,李 鋒

      (1.中船重工奧藍(lán)托無錫軟件技術(shù)有限公司,江蘇 無錫 214000;2.哈爾濱工業(yè)大學(xué) 材料科學(xué)與工程學(xué)院,哈爾濱 150001;3.中國船舶科學(xué)研究中心,江蘇 無錫 214000)

      0 引言

      表格作為一種高度精煉的信息表達(dá)手段,以簡單明了、規(guī)范、便攜等鮮明特點(diǎn)廣泛存在于各類試驗(yàn)報(bào)告文檔種。表格信息的識別和提取在計(jì)算機(jī)處理以前只是依靠人眼識別判斷,工作繁瑣還容易出錯。表格文檔識別作為一類獨(dú)特的數(shù)據(jù)內(nèi)容智能識別技術(shù),與常規(guī)的文字、符號、圖像等形式相比較,其內(nèi)容含有復(fù)雜的層級關(guān)系。在對表格內(nèi)部線條進(jìn)行識別過程中,最影響識別結(jié)果的因素有光線昏暗、分辨率、規(guī)范程度等。

      文檔中對于各種數(shù)據(jù)呈現(xiàn)形式的表格,除了上述外部因素對識別結(jié)果的影響外,表格內(nèi)部同樣也會因?yàn)槲淖峙c線的重疊等問題干擾整體的識別正確性。在進(jìn)行表格字符識別過程中,經(jīng)常出現(xiàn)內(nèi)部線條不規(guī)范從而無法區(qū)分的問題,再加上需要提取識別的數(shù)據(jù)常常是文檔內(nèi)的核心,因此需要更為精準(zhǔn)、快速的數(shù)據(jù)識別技術(shù)。

      檢測表格線對表格單元格中的文本識別非常重要。目前針對不同表格具有不同的單元格提取方法,Zheng等人采用基于有向單項(xiàng)鏈檢測表格線,通過確定黑色游程長度來檢測線條,并且如果滿足某些條件,就可以與其他線條合并[2];Zuo等人提出了一種魯棒的表格登記方法,用于更好地理解來自掃描表格圖像的結(jié)構(gòu)化信息,其中使用了基于卷積的表格線檢測方法,但前提是提供了表結(jié)構(gòu),其中包括表頭、行和列的數(shù)量,甚至是近似的單元格大小[3];Tian等人根據(jù)表格特征定位表區(qū)域,并基于Hough 變換方法檢測表格線;劉昱首先采用投影法確定表格框線坐標(biāo),然后利用搜索法確定表格框線的長度[4];夏禾采用基于區(qū)域生長的表格定位方法;何柳提出了一種分步提取表格特征的表格識別方法,首先利用基于連通域的表格輪廓提取方法提取表格輪廓,確認(rèn)表格所在區(qū)域,然后通過基于數(shù)學(xué)形態(tài)的表格線提取方法提取表格中的表格線,最后根據(jù)所提取表格線交點(diǎn)特征獲取表格單元信息,完成表格的識別[5]。

      現(xiàn)如今國內(nèi)外航天器材料及器件數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)錄入主要通過自定義文件模板導(dǎo)入或鍵盤輸入,需要依賴人工去處理原始數(shù)據(jù),工作繁瑣且浪費(fèi)時間;然而,主流的原始數(shù)據(jù)都以表格的文件存儲形式,其中最普遍的是PDF文檔表格數(shù)據(jù)。因而為了提高工作效率、優(yōu)化數(shù)據(jù)錄入方式、提升系統(tǒng)智能化、自動化操作,提出基于OCR技術(shù)的航天器材料及器件試驗(yàn)數(shù)據(jù)識別系統(tǒng),自動識別提取PDF文檔中的表格數(shù)據(jù),為仿真模型的建立、仿真結(jié)果比對以及退化模型的建立提供參考依據(jù)。

      1 航天器材料及器件試驗(yàn)數(shù)據(jù)試別系統(tǒng)結(jié)構(gòu)及原理

      光學(xué)字符識別,簡稱為OCR(optical character recognition),是指電子設(shè)備(例如掃描儀或數(shù)碼相機(jī))檢查紙上打印的字符,經(jīng)過檢測暗、亮的模式肯定其形狀,而后用字符識別方法將形狀翻譯成計(jì)算機(jī)文字的過程。它是模式識別領(lǐng)域中最富有挑戰(zhàn)性的研究課題,從20世紀(jì)50年代開始,許多的研究者劇針對該領(lǐng)域開展可廣泛的探索,時至今日,人們在正規(guī)化理論、特征抽取理論、匹配理論等方面取得了眾多成果,正逐漸成為計(jì)算機(jī)視覺領(lǐng)域的重要任務(wù),在名片、車牌、身份證、表格表單、發(fā)票識別系統(tǒng)等廣泛應(yīng)用[6]。

      典型的OCR識別系統(tǒng)通常由以下幾部分組成:

      1)預(yù)處理。

      預(yù)處理通常包含對原始圖像的去噪、傾斜校正和各種濾波處理。

      2)版面分析。

      版面分析是根據(jù)內(nèi)容的排版布局進(jìn)行分割的技術(shù)。其原理是為了得到滿足要求的字符塊,遵循預(yù)先設(shè)計(jì)的劃分規(guī)則去解析,判別劃分出來的字符塊是否滿足需求。

      3)字符切分。

      根據(jù)上述版面分析的原理設(shè)計(jì)相應(yīng)的內(nèi)容分割算法,發(fā)展至今常用的算法例如基于結(jié)構(gòu)分析的切分算法、基于識別結(jié)果的切分算法、整體切分算法、綜合切分算法等[7]。

      4)特征提取。

      特征提取作為識別系統(tǒng)中相對核心的步驟,其原理是分析所切分出來的字符塊,總結(jié)統(tǒng)計(jì)其通用特性的過程。

      5)分類識別。

      分類識別其原理是在特征提取得到的數(shù)據(jù)庫中,判斷是否含有與現(xiàn)有字符高度匹配的類型。

      6)后處理。

      后處理的原理是通過常規(guī)的話語、詞組等整理生成的先驗(yàn)知識,修改識別得到的字符,提高準(zhǔn)確性。

      航天器材料及器件數(shù)據(jù)庫需要集中匯入海量的國內(nèi)外數(shù)據(jù)作為支撐,其主要的數(shù)據(jù)文件是PDF文檔。在PDF文檔中,數(shù)據(jù)的展現(xiàn)形式包含表格數(shù)據(jù)、文字、曲線數(shù)據(jù)、圖像數(shù)據(jù)等,其中數(shù)量最多的是表格數(shù)據(jù),因此最大的需求是針對PDF文檔內(nèi)的表格需要高效的方法進(jìn)行識別提取。

      因此,針對需要批量處理的固定格式的表格,本文提出設(shè)計(jì)基于OCR的航天器材料及器件試驗(yàn)數(shù)據(jù)識別系統(tǒng),采用如今較為流行的Python語言進(jìn)行系統(tǒng)開發(fā)。

      在試驗(yàn)數(shù)據(jù)識別系統(tǒng)中,采用B/S架構(gòu)實(shí)現(xiàn)前后端操作交互,在客戶端進(jìn)行PDF文件的上傳和審閱操作;在服務(wù)端,對PDF文件進(jìn)行表格檢測、數(shù)據(jù)識別、數(shù)據(jù)提取等。

      本系統(tǒng)采用奧藍(lán)托公司自主研發(fā)產(chǎn)品TDM作為基礎(chǔ)平臺,該平臺吸取國外相近產(chǎn)品的框架設(shè)計(jì)及優(yōu)點(diǎn),主體框架使用跨平臺語言JAVA進(jìn)行編碼開發(fā),數(shù)據(jù)處理使用QT(C++)進(jìn)行編碼開發(fā),可以在Windows、Unix、Linux等不同操作系統(tǒng)運(yùn)行。系統(tǒng)多次經(jīng)過第三方測評,成熟可靠。在TDM的基礎(chǔ)上進(jìn)行功能模塊的定制化和優(yōu)化工作,有助于整個系統(tǒng)開發(fā)工作的開展,其優(yōu)點(diǎn)有提高系統(tǒng)擴(kuò)充模塊的能力;減少系統(tǒng)功能之間的耦合度;優(yōu)化系統(tǒng)對外的封閉程度。

      試驗(yàn)數(shù)據(jù)識別系統(tǒng)所搭建的網(wǎng)絡(luò)結(jié)構(gòu)是服務(wù)器/客戶端模式,其優(yōu)勢在于具備普適性、高性能和嚴(yán)格的規(guī)則。此模式根據(jù)客戶端種類具體劃分為客戶機(jī)服務(wù)器模式(Clietn/Server,簡稱C/S)和瀏覽器/服務(wù)器模式(Brower/Server,簡稱B/S)。具體功能描述如下文所示。

      1.1 客戶端

      1)C/S客戶端:提供系統(tǒng)所有的基礎(chǔ)工具,例如數(shù)據(jù)建模工具、動態(tài)展現(xiàn)定置工具、流程定義工具、數(shù)據(jù)導(dǎo)入工具、數(shù)據(jù)展現(xiàn)工具等。這些工具基于Java、C#以及C++進(jìn)行開發(fā),用到的技術(shù)框架包括Qt、EMF(eclipse modeling framework)、GEF(graphical editing framework)、SWT(standard widget toolkit)、JFace、Dom4J、Castor、XFire HTTP Client等。

      2)B/S客戶端:作為網(wǎng)頁應(yīng)用功能的集合,包括數(shù)據(jù)查詢、管理以及相關(guān)維護(hù)工作[8]。通常使用Javascript開發(fā)語言,基于js語言所涉及的技術(shù)框架包括VUE、JSTL、JSP、Ajax(Ext)等。

      1.2 服務(wù)器端

      1)模型層:創(chuàng)建數(shù)據(jù)模型,提供各模型之間的數(shù)據(jù)交互操作。

      2)控制層:主要負(fù)責(zé)前端頁面與用戶的交互操作,其原理是從通過與數(shù)據(jù)模型的讀寫操作實(shí)現(xiàn)用戶的輸入或輸出。

      3)服務(wù)層:主要負(fù)責(zé)對客戶端開發(fā)工具的交互,采用WebService技術(shù)實(shí)現(xiàn)前后端的交互。

      4)業(yè)務(wù)邏輯層:主要負(fù)責(zé)創(chuàng)立規(guī)則、實(shí)現(xiàn)涉及系統(tǒng)流程的設(shè)計(jì),作為相對關(guān)鍵的一層,其效果是承上啟下,加強(qiáng)上下之間的耦合程度。

      5)持久層:主要負(fù)責(zé)與數(shù)據(jù)庫之間的交互,其原理是整合數(shù)據(jù)庫增刪改查等操作指令,通過自定義方式實(shí)現(xiàn)系統(tǒng)與數(shù)據(jù)庫的交互操作,不再使用數(shù)據(jù)庫查詢語言。

      6)基礎(chǔ)層:作為系統(tǒng)運(yùn)轉(zhuǎn)的主要呈現(xiàn)方式,采用Spring容器搭建整體系統(tǒng)的軟硬件環(huán)境。

      圖1 系統(tǒng)技術(shù)架構(gòu)

      整個系統(tǒng)的核心是基于OCR的表格檢測、表格識別和數(shù)據(jù)提取功能,將采用Python語言進(jìn)行開發(fā),可以實(shí)現(xiàn)對PDF文檔的轉(zhuǎn)換,自動篩選表格,提取大量數(shù)據(jù),以達(dá)到所需設(shè)計(jì)要求。

      2 系統(tǒng)軟硬件設(shè)計(jì)

      2.1 版面分析

      PDF文檔本質(zhì)上不包含任何段落、句子和單詞內(nèi)容,只包含字符及其位置,因而導(dǎo)致很難區(qū)分組成段落的字符與組成表格的字符、頁腳、圖形描述字符之間的不同,相較于其他格式文檔缺少文本流。因而本系統(tǒng)采用PDFPlumber工具庫來實(shí)現(xiàn)對PDF文檔的解析。

      PDFPlumber工具庫采用Python語言開發(fā),基于pdfminer.six構(gòu)建,主要功能包含獲取PDF中的文本字符、矩形和行的詳細(xì)信息、表格提取。該工具庫由PDF類和Page類組成,PDF類的功能是打開PDF文檔獲取整體信息;Page類作為工具庫的核心,獲取PDF文檔的詳細(xì)信息,包含頁面的高寬、頁碼數(shù)量、每個頁面的數(shù)據(jù)對象。

      面對PDF文檔每一頁無法區(qū)分詳細(xì)類別的數(shù)據(jù)對象,通過采用pdfminer.six的版面分析算法實(shí)現(xiàn)對文檔內(nèi)容的分類。版面分析算法通過對字符定位的啟發(fā)式方法來重建其中的一些結(jié)構(gòu),尤其是對于語句和段落。版面分析包含有3個階段,將字符分組為單詞和行,其次將行分組為框,最后分層分組文本框,其結(jié)果是PDF頁面上布局對象的有序?qū)哟谓Y(jié)構(gòu)。

      圖2 版面分析結(jié)果和層次結(jié)構(gòu)

      2.1.1 字符分組

      水平和垂直接近的字符被分組到一行上。它們之間的距離應(yīng)該由字符間距(圖3中的M)和線條重疊參數(shù)決定。兩個字符的邊界框之間的水平距離應(yīng)小于字符邊距,垂直邊界框之間的重疊應(yīng)小于線條重疊。

      圖3 版面分析結(jié)果和層次結(jié)構(gòu)

      字符間距和線條重疊的值與字符邊界框的大小有關(guān)。字符間距相對于任意一個邊界框的最大寬度,而線條重疊相對于任意一個邊界框的最小高度。

      字符之間需要插入空格,因?yàn)镻DF格式?jīng)]有空格字符的概念。如果兩個字符之間的距離比字距(圖3中的W)更遠(yuǎn),則插入一個空格。字距是相對于新字符的最大寬度或高度的。更小的字距會創(chuàng)建更小的單詞。

      通過上述字符分組操作得到的結(jié)果是一個行列表。每行包含一個字符列表。這些字符要么是源自PDF文件的原始LTChar字符,要么是表示單詞之間的空格或每行末尾的換行符的插入的LTAnno字符。

      2.1.2 行分組

      字符轉(zhuǎn)換為文本的第二步是分組行。每一行都有一個邊界框,該邊界框由其所包含字符的邊界框決定。通過同樣的方法,布局分析算法使用邊框?qū)π羞M(jìn)行分組。

      水平重疊和垂直接近的線被分組。每行的垂直距離由線條邊距決定。此邊距是相對于邊界框的高度指定的。如果邊界框的頂部(見圖4L1)和底部(見圖4L2)之間的距離比絕對線距(即線條邊距乘以邊界框的高度)更近,則線是接近的。

      圖4 行分組結(jié)果

      2.1.3 文本框分層分組

      職工是安置工作的主要對象,職工對于煤礦安置措施的接受度直接影響安置工作的順利進(jìn)行。在本次安置工作中,員工對于煤礦關(guān)閉和職工安置措施接受得很無奈,但接受速度極快,很多員工表示,煤礦關(guān)閉已成事實(shí),只能接受。從正式開展安置工作開始,十天內(nèi)成功解除勞動合同員工共478人。除辦理退休和內(nèi)退的員工,剩下尚未完成安置的員工已不足兩百人。

      字符轉(zhuǎn)換為文本的最后一步是對文本框進(jìn)行分組。此步驟重復(fù)合并相鄰的兩個文本框。

      邊界框的緊密程度計(jì)算為兩個文本框之間的區(qū)域(圖中的藍(lán)色區(qū)域)。這就是兩條線周圍的邊界框的面積減去每條線的邊界框的面積。

      通過布局分析算法的三階段,PDF文檔轉(zhuǎn)換為文本存放在PDFPlumber.Page類的性值中,方便后續(xù)操作。

      2.2 表格檢測

      通過布局分析算法解析PDF文檔獲取的文本信息包含有多種PDF對象,例如文本字符、線條、二維矩陣、圖像等。為了進(jìn)而篩選甄別出表格數(shù)據(jù),采用特定的表格檢測方法進(jìn)行表格的提取。

      PDFPlumber的表格檢測方法是基于圖像形態(tài)學(xué)的表格線提取,這是一種自底向上的方法,其原理是表格線由水平和垂直方向組成表格且與字符信息在形態(tài)上存在較大差別。

      2.2.1 候選表格線

      在PDF文檔的每一頁中,將可見的線作為候選表格線,適用于抽取線框完整的表格。通過pdfminer.six的布局分析算法,已經(jīng)將文檔中的水平、豎直的線解析出來,使用pdfplumber.container.Container子類獲取線的信息,其中定義了訪問chars、rects、edges等基本對象的屬性。TableFinder類中的get_edges方法通過utils模塊中的filter_edges函數(shù)對每一個Page實(shí)例對象中的解析出的edges對象進(jìn)行篩選和過濾,過濾條件包括:方向、最小長度等。

      對于線框不完整的表格(包括無線框表格),將根據(jù)文本的對齊情況猜測出一些水平和豎直的線,這些線稱作為“Text Edge” 。TableFinder類的get_edges方法通過調(diào)用同模塊中的words_to_edges_v和words_to_edges_h,根據(jù)每一頁中解析出的words(word指的應(yīng)該是由每一行上彼此間距較小的字符合成的連續(xù)字符串)的對齊情況,猜測出豎直方向和水平方向上可能存在的線。

      2.2.2 合并邊

      通過上面的方法將獲取到數(shù)量不少的線段,其中必然存在冗余,因而需要篩選掉不需要的線段、合并重疊的線段。

      1)如果平行線之間的垂直距離非常小,則對他們進(jìn)行對齊以達(dá)到同一條直線上,pdfplumer使用平均位置進(jìn)行對齊。

      2)對于同一直線上的部分線段出現(xiàn)相互之間近端點(diǎn)的距離非常小的情況,同樣需要進(jìn)行合并。

      2.2.3 尋找相交點(diǎn)

      因?yàn)槲臋n中的表格以及表格單元格基本上都是矩形的,而矩形是可以由其頂點(diǎn)確定的,所以,在找到那些可能是表格或單元格邊界的線之后,接下來是找出它們的交點(diǎn)。pdfplumber.table模塊中edges_to__intersections函數(shù),用于找到水平線與豎直線之間的交點(diǎn),最終的返回的結(jié)果是一個字典,以交點(diǎn)坐標(biāo)作為key,value中保存的是相交于該交點(diǎn)的線。

      2.2.4 生成單元格

      在找到了可能的表格線以及這些線的交點(diǎn)之后,根據(jù)這些信息將找到并識別出可能存在的單元格,其步驟主要包含以下幾步:

      1)首先對所有交點(diǎn)按照自左向右、自上向下的方式排序。

      2)找到以每個交點(diǎn)作為左上角的最小的單元格,因?yàn)閷斎氲狞c(diǎn)進(jìn)行了排序,所以返回的單元格也是以同樣的順序排序的。

      2.2.5 生成單元格

      根據(jù)前面找到的單元格,把連通的單元格合并到一起生成對應(yīng)的表格,其步驟主要包含以下幾步:

      1)對單元格的邊框進(jìn)行處理,生成4個角的坐標(biāo)。

      2)根據(jù)可用單元格4個角的坐標(biāo)判斷單元是否屬于當(dāng)前正在生成的表格。

      (1)當(dāng)單元格與當(dāng)前正在生成的表格相交時,把該單元格加入到當(dāng)前表格中,以后該單元格就不再可用了。

      (2)當(dāng)沒有單元格可以加入到當(dāng)前生成的表格的時候,保存該表格,并把當(dāng)前正在生成的表格設(shè)成空表格,判斷剩下可用的單元能夠加入到當(dāng)前表格中。

      (3)當(dāng)所有單元格都加入到某一表格之后,停止這一過程。

      3)按照表格的左上角坐標(biāo)進(jìn)行排序。

      4)過濾掉那些過小的表格。

      5)把剩下的表格封裝到pdfplumber.table.Table類的實(shí)例對象,Table類中的extract方法可以根據(jù)表格、單元格以及字符的位置,抽取位于表格及其各個單元格內(nèi)部的文本,最后以行的形式返回出來。

      通過上述五大階段可實(shí)現(xiàn)在PDF文檔中檢測識別出表格信息,通過基于圖像形態(tài)學(xué)的表格線檢測方法找尋有效線段,合并重疊的線段,根據(jù)線段相交點(diǎn)找尋單元格,最終將單元格合并成表格。

      2.3 數(shù)據(jù)操作

      通過pdfplumber工具庫獲取到PDF文檔中所有的表格數(shù)據(jù),系統(tǒng)提供數(shù)據(jù)展示、數(shù)據(jù)編輯、數(shù)據(jù)保存等功能,以滿足此系統(tǒng)的實(shí)際使用需求。

      2.3.1 數(shù)據(jù)展示

      系統(tǒng)采用B/S架構(gòu)搭建,前端采用基于Javascript語言的ExtJS框架搭建頁面,以控件形式展示表格數(shù)據(jù)。

      2.3.2 數(shù)據(jù)編輯

      在前端以控件形式展示提取的表格數(shù)據(jù)后,系統(tǒng)提供表格數(shù)據(jù)編輯的功能,包含對表頭標(biāo)題的修改以及表格數(shù)據(jù)的編輯。

      2.3.3 數(shù)據(jù)保存

      在實(shí)現(xiàn)對PDF文檔的解析和表格提取之后,系統(tǒng)提供數(shù)據(jù)保存功能,主要包含對表格數(shù)據(jù)、自定義試驗(yàn)信息的保存。

      3 系統(tǒng)實(shí)現(xiàn)

      航天器材料及器件試驗(yàn)數(shù)據(jù)識別系統(tǒng)將根據(jù)上述系統(tǒng)設(shè)計(jì)進(jìn)行搭建,本章將詳細(xì)描述系統(tǒng)實(shí)現(xiàn)過程。

      圖5是航天器材料及器件試驗(yàn)數(shù)據(jù)識別系統(tǒng)的架構(gòu)設(shè)計(jì),采用B/S架構(gòu)實(shí)現(xiàn)客戶端、服務(wù)端的交互操作,基于OCR的表格識別功能部署在服務(wù)端進(jìn)行。根據(jù)系統(tǒng)設(shè)計(jì),客戶端界面搭建采用ExtJS框架,服務(wù)端采用JAVA語言開發(fā),其中嵌入運(yùn)用Python語言開發(fā)的表格識別功能模塊。

      圖5 試驗(yàn)數(shù)據(jù)識別系統(tǒng)架構(gòu)

      3.1 系統(tǒng)界面

      系統(tǒng)界面布局可劃分為3塊,操作區(qū)、試驗(yàn)信息區(qū)和展示區(qū)。操作區(qū)提供功能按鈕,包含識別前的文檔選擇按鈕、解析完成后的數(shù)據(jù)編輯按鈕、數(shù)據(jù)保存按鈕、原文檔預(yù)覽按鈕等。試驗(yàn)信息區(qū)顯示試驗(yàn)信息表單,提供對試驗(yàn)/仿真名稱、數(shù)據(jù)來源、負(fù)責(zé)單位、輻照源、類別、時間、人員、國別、子效應(yīng)類型、測試對象類型、測試對象名稱、測試對象型號等。展示區(qū)以控件形式展示PDF文檔識別提取出來的表格數(shù)據(jù),包含表頭和單元格內(nèi)容。

      圖6 系統(tǒng)界面

      點(diǎn)擊PDF解析按鈕打開文件選擇界面,挑選本地PDF文檔進(jìn)行識別。

      3.2 基于OCR的表格識別

      3.2.1 PDF文檔讀取

      在客戶端選擇PDF文檔后,其文件路徑傳輸至后臺進(jìn)行解析。首先使用pdfplumber.PDF類中的open函數(shù)打開PDF文檔,若讀取成功則返回一個pdfplumber.PDF類實(shí)例,該實(shí)例中主要包含metadata、pages和len(pdf.pages)這3個屬性。metadata屬性是從PDF的Info中獲取元數(shù)據(jù)鍵 /值對字典。 通常包括“ CreationDate”,“ ModDate”,“ Producer”等;pages屬性是一個包含多個pdfplumber.Page實(shí)例的列表,每一個實(shí)例代表PDF每一頁的信息。

      pdfplumber.Pages類提供了最核心的參數(shù)屬性和方法函數(shù),其中主要包含有page_number、width、height屬性以及extract_text(x_tolerance=0, y_tolerance=0)、extract_tables(table_settings) 方法。

      3.2.2 表格檢測

      上述內(nèi)容實(shí)現(xiàn)PDF文檔讀取之后,所有頁面信息整合返回一個pdfplumber.PDF類實(shí)例,其中pdfplumber.Pages類包含有字符、線段、圖像、表格等信息。pdfplumber把表格抽取的功能封裝在TableFinder這個類中,在其構(gòu)造函數(shù)_init_中,清晰的定義了表格抽取的基本流程。接下來將詳細(xì)描述實(shí)現(xiàn)過程。

      1)識別表格線。

      TableFinder類中的get_edges方法包含了3種不同的方式用來確定文檔中可能存在的表格線。

      對于線框完全的表格,TableFinder類中的get_edges方法通過通過utils模塊中的filter_edges函數(shù)對每一個Page實(shí)例對象中的解析出的edges對象進(jìn)行篩選和過濾,過濾條件包括:方向、最小長度等。

      對于線框不完全的表格,TableFinder類的get_edges方法通過調(diào)用同模塊中的words_to_edges_v和words_to_edges_h,根據(jù)每一頁中解析出的words(word指的應(yīng)該是由每一行上彼此間距較小的字符合成的連續(xù)字符串)的對齊情況,猜測出豎直方向和水平方向上可能存在的線。words_to_edges_v和words_to_edges_h函數(shù)的邏輯歸納為根據(jù)words位置進(jìn)行聚類,篩選掉words少于word_threshhold的文本行,最終把剩下文本行的邊緣線作為找到的邊返回。

      2)合并表格邊。

      pdfplumber.table.TableFinder類的get_edges方法會調(diào)用同一模塊下的merge_edges函數(shù)實(shí)現(xiàn)上述功能,如果像素內(nèi)的平行線不再同一水平或垂直位子則進(jìn)行修正;如果同一直線上的線段不能拼接為單個線段則進(jìn)行修正。

      3)尋找相交點(diǎn)。

      pdfplumber.table模塊中edges_to__intersections函數(shù),用于找到水平線與豎直線之間的交點(diǎn),最終的返回的結(jié)果是一個字典,以交點(diǎn)坐標(biāo)作為key,value中保存的是相交于該交點(diǎn)的線。

      4)生成單元格。

      pdfplumber.table.TableFinder類調(diào)用同一模塊下的intersections_to_cells函數(shù),根據(jù)前面找到的線和交點(diǎn)找出可能存在的單元格。

      5)生成表格。

      pdfplumber.table.TableFinder類調(diào)用同一模塊下的cells_to_tables函數(shù),根據(jù)前面找到的單元格,把連通的單元格合并到一起生成對應(yīng)的表格。

      3.3 表格數(shù)據(jù)提取和展示

      在完成上述表格識別操作后,對PDF文檔中每一頁內(nèi)容進(jìn)行表格數(shù)據(jù)提取,提取出來的數(shù)據(jù)存放至本地新創(chuàng)建的Excel文檔中,根據(jù)PDF頁碼順序劃分sheet頁進(jìn)行數(shù)據(jù)存放,數(shù)據(jù)提取效果如圖7所示。

      圖7 表格數(shù)據(jù)提取

      試驗(yàn)數(shù)據(jù)識別系統(tǒng)讀取存放表格數(shù)據(jù)的Excel文檔,通過tab控件形式將每一頁提取出的表格數(shù)據(jù)進(jìn)行展示,其中根據(jù)表頭內(nèi)容是否為空以及特定關(guān)鍵詞判定來剔除部分無需展示的表格數(shù)據(jù),數(shù)據(jù)展示如圖8所示。

      圖8 數(shù)據(jù)展示

      3.4 表格數(shù)據(jù)操作

      3.4.1 數(shù)據(jù)編輯

      1)在數(shù)據(jù)展示頁面,提供表頭、表格數(shù)據(jù)的編輯功能。通過按鈕點(diǎn)擊打開當(dāng)前頁的表頭信息列表,原始表頭和修改表頭分兩列對比展示,如圖9所示。

      圖9 表頭信息編輯

      2)在tab頁的表格控件中,通過雙擊單元格進(jìn)行數(shù)據(jù)編輯,如圖10所示。

      圖10 表格數(shù)據(jù)編輯

      3.4.2 文檔預(yù)覽

      數(shù)據(jù)展示界面提供原始報(bào)告預(yù)覽功能,通過按鈕點(diǎn)擊實(shí)現(xiàn)網(wǎng)頁在線預(yù)覽PDF文檔,有助于表格數(shù)據(jù)的編輯操作,如圖11所示。

      圖11 PDF文檔預(yù)覽

      4 結(jié)果與分析

      本文設(shè)計(jì)了基于OCR技術(shù)的航天器材料及器件試驗(yàn)數(shù)據(jù)識別系統(tǒng),實(shí)現(xiàn)了對PDF文檔的表格識別、數(shù)據(jù)提取等功能,根據(jù)PDF文檔內(nèi)表格數(shù)量的不同,實(shí)現(xiàn)識別速率在3秒到35秒不等。在識別規(guī)整表格和無旋轉(zhuǎn)的字符數(shù)據(jù)情況中,識別準(zhǔn)確率達(dá)到100%,在識別不規(guī)整或存在旋轉(zhuǎn)字符的情況中,識別準(zhǔn)確率略有下降,字符識別清晰但字符排列順序有偏差。經(jīng)過測試,系統(tǒng)能夠正常識別PDF文檔的表格數(shù)據(jù),提取和展示數(shù)據(jù)正常,對于相對規(guī)整的表格不存在表格識別失敗或錯誤的現(xiàn)象,系統(tǒng)運(yùn)行穩(wěn)定,對比效果如圖12所示。

      圖12 PDF文檔識別對比

      5 結(jié)束語

      本文介紹了基于OCR的航天器材料及器件試驗(yàn)數(shù)據(jù)識別系統(tǒng),一個利用OCR技術(shù)對PDF文檔格式的航天器材料及器件試驗(yàn)表格數(shù)據(jù)識別和提取的B/S架構(gòu)系統(tǒng)。系統(tǒng)主要實(shí)現(xiàn)了PDF文檔轉(zhuǎn)文本、表格檢測、數(shù)據(jù)提取、數(shù)據(jù)編輯等功能。本文結(jié)合EXT、JAVA、Python等技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了航天器材料及器件試驗(yàn)數(shù)據(jù)識別系統(tǒng),具體工作內(nèi)容如下:

      1)簡要介紹航天器材料及器件試驗(yàn)數(shù)據(jù)識別系統(tǒng)的業(yè)務(wù)架構(gòu)和數(shù)據(jù)流程。

      2)重點(diǎn)闡述航天器材料及器件試驗(yàn)數(shù)據(jù)識別系統(tǒng)的關(guān)鍵功能設(shè)計(jì)。

      3)詳細(xì)展示整體系統(tǒng)的實(shí)現(xiàn)過程和功能演示效果。

      在系統(tǒng)的實(shí)際運(yùn)行過程中,所設(shè)計(jì)的PDF文檔轉(zhuǎn)文本、表格檢測、數(shù)據(jù)提取、數(shù)據(jù)編輯等功能正常,達(dá)到預(yù)期目標(biāo)。針對pdf格式文檔借助文字識別、圖像處理等技術(shù)實(shí)現(xiàn)自動提取表格數(shù)據(jù),解決傳統(tǒng)人工提取數(shù)據(jù)存在的耗時長、出錯率高等弊端。對于相關(guān)領(lǐng)域的數(shù)據(jù)識別系統(tǒng)設(shè)計(jì)具有一定的參考價值和借鑒意義。

      該系統(tǒng)仍有改進(jìn)優(yōu)化的方面:

      1)擴(kuò)大PDF文檔識別數(shù)據(jù)種類和識別復(fù)雜度,除了表格,還能包含對曲線、關(guān)鍵詞、旋轉(zhuǎn)字符的識別提取。

      2)隨著深度學(xué)習(xí)與OCR領(lǐng)域的結(jié)合,針對PDF文檔的識別提取能夠更為智能和精確,將文檔內(nèi)圖像數(shù)據(jù)也囊括到可識別數(shù)據(jù)種類中。

      猜你喜歡
      單元格字符表格
      尋找更強(qiáng)的字符映射管理器
      《現(xiàn)代臨床醫(yī)學(xué)》來稿表格要求
      玩轉(zhuǎn)方格
      玩轉(zhuǎn)方格
      統(tǒng)計(jì)表格的要求
      統(tǒng)計(jì)表格的要求
      統(tǒng)計(jì)表格的要求
      字符代表幾
      一種USB接口字符液晶控制器設(shè)計(jì)
      電子制作(2019年19期)2019-11-23 08:41:50
      消失的殖民村莊和神秘字符
      尼玛县| 同德县| 新龙县| 邮箱| 开原市| 新兴县| 福海县| 梅河口市| 津南区| 汉川市| 响水县| 鹰潭市| 周口市| 永顺县| 麻城市| 溆浦县| 剑阁县| 平果县| 彝良县| 靖宇县| 吕梁市| 迁安市| 纳雍县| 洪雅县| 扶绥县| 高安市| 鄂托克前旗| 保亭| 普兰县| 渑池县| 文安县| 纳雍县| 洛浦县| 郓城县| 沙河市| 柳州市| 北宁市| 重庆市| 哈尔滨市| 山丹县| 云和县|