專利名稱:一種針對(duì)檢測(cè)儀器輸出數(shù)據(jù)篩選提取的處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)分析處理技術(shù),特別是涉及一種檢測(cè)儀器輸出數(shù)據(jù)篩選提取的處理方法。
背景技術(shù):
目前,檢驗(yàn)檢測(cè)領(lǐng)域中使用的檢測(cè)儀器最終的檢測(cè)結(jié)果通常會(huì)在用戶終端生成PDF、TXT、XLS格式的電子文檔,如果需要對(duì)這些檢測(cè)結(jié)果進(jìn)一步分析,則需要由人工將檢驗(yàn)結(jié)果錄入到關(guān)系型數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)檢驗(yàn)結(jié)果的電子數(shù)據(jù)化,以供長(zhǎng)期有效存儲(chǔ),并作為進(jìn)一步數(shù)據(jù)分析的基礎(chǔ)。當(dāng)檢測(cè)儀器眾多并檢測(cè)頻繁時(shí),由人工不斷錄入無(wú)法滿足實(shí)現(xiàn)工作需要且極易發(fā)生人為錄入錯(cuò)誤而使后繼續(xù)工作無(wú)法進(jìn)行。因此需要通過(guò)一種數(shù)據(jù)處理方法,讀出不同類型檢測(cè)儀器輸出的結(jié)果數(shù)據(jù),并進(jìn)行分析處理解析出有效的檢測(cè)結(jié)果數(shù)據(jù),最終存儲(chǔ)到關(guān)系型數(shù)據(jù)庫(kù)中。
發(fā)明內(nèi)容
本發(fā)明的目的在于解決現(xiàn)有技術(shù)的不足,提供一種檢測(cè)儀器輸出數(shù)據(jù)的處理方法。為了實(shí)現(xiàn)這一目的,必須解決以下技術(shù)問(wèn)題I.根據(jù)設(shè)備輸出的結(jié)果格式,定義好提出數(shù)據(jù)的配置文件。因?yàn)樵O(shè)備眾多,輸出的檢驗(yàn)結(jié)果也各式各樣,所以建立配置文件描述需要提取數(shù)據(jù)的形式。并根據(jù)數(shù)據(jù)存取需求定義在配置文件中定義好輸出格式,以供其它指令程序讀入到關(guān)系數(shù)據(jù)庫(kù)中。2.需要設(shè)計(jì)一種抽取數(shù)據(jù)的方法,將整個(gè)文件的文本抽取出來(lái),并將文本從上到下,從左到右按設(shè)定的邏輯順序進(jìn)行解析,解析的過(guò)程是利用正則表達(dá)式的實(shí)現(xiàn)的。當(dāng)文本解析到結(jié)尾時(shí),所有需要的數(shù)據(jù)就都抽取出來(lái)了。本發(fā)明采取的技術(shù)方案是—種檢測(cè)儀器輸出數(shù)據(jù)的處理方法,步驟如下I)根據(jù)檢測(cè)儀器輸出數(shù)據(jù)的格式,定義邏輯配置文件,并保存為XML格式文件;2)讀取邏輯配置文件,將配置文件編譯為執(zhí)行邏輯規(guī)則集合的解析引擎;3)將檢測(cè)儀器輸出的數(shù)據(jù)文件讀入內(nèi)存,啟動(dòng)解析引擎,執(zhí)行解析過(guò)程;4)輸出解析結(jié)果。進(jìn)一步,步驟2所述的將配置文件編譯為執(zhí)行邏輯規(guī)則集合的解析引擎的編譯過(guò)程包括如下步驟A)根據(jù)配置文件針對(duì)的檢測(cè)儀器輸出數(shù)據(jù)類型,生成根規(guī)則;B)判斷是否需要生成葉規(guī)則,是則在根規(guī)則下生成葉規(guī)則,葉規(guī)則的類型為控制結(jié)構(gòu)規(guī)則、文本匹配規(guī)則、結(jié)果輸出規(guī)則中的任意一種規(guī)則;否則結(jié)束編譯過(guò)程。C)判斷是否在步驟B生成的葉規(guī)則下繼續(xù)生成葉規(guī)則,是則在葉規(guī)則下生成葉規(guī)貝U,葉規(guī)則的類型為控制結(jié)構(gòu)規(guī)則、文本匹配規(guī)則、結(jié)果輸出規(guī)則中的任意一種規(guī)則;否則執(zhí)行步驟B,并且將葉規(guī)則定義為葉子規(guī)則。
進(jìn)一步,步驟3所述的解析過(guò)程,包括如下步驟A)順序讀取檢測(cè)輸出數(shù)據(jù),判斷是否是表頭標(biāo)示,如果是則執(zhí)行步驟B,否則繼續(xù)步驟A ;B)順序讀取檢測(cè)輸出數(shù)據(jù),判斷是是含分隔符標(biāo)示,如果是則執(zhí)行步驟C,否則繼續(xù)步驟B ; C)順序讀取檢測(cè)輸出數(shù)據(jù),判斷是否是表尾標(biāo)示,如果是則結(jié)束解析過(guò)程,否則執(zhí)行步驟D ;D)判斷是否是需要的數(shù)據(jù)項(xiàng)標(biāo)示,如果是則執(zhí)行步驟E,否則執(zhí)行步驟C ;E)提取數(shù)據(jù)項(xiàng)作為解析結(jié)果。進(jìn)一步,步驟I所述的定義邏輯配置文件的方法如下A)定義判斷檢驗(yàn)數(shù)據(jù)的表頭標(biāo)示;根據(jù)表頭標(biāo)示,定義控制結(jié)構(gòu)規(guī)則,在控制結(jié)構(gòu)規(guī)則內(nèi)定義文本匹配規(guī)則;B)定義通過(guò)循環(huán)控制實(shí)現(xiàn)逐條檢驗(yàn)結(jié)果數(shù)據(jù)取出根據(jù)檢驗(yàn)結(jié)果數(shù)據(jù)位置,定義控制結(jié)構(gòu)規(guī)則,在控制結(jié)構(gòu)規(guī)則內(nèi)定義文本匹配規(guī)則;C)定義判斷檢驗(yàn)數(shù)據(jù)的結(jié)束標(biāo)示根據(jù)結(jié)束標(biāo)示,定義控制結(jié)構(gòu)規(guī)則,在控制結(jié)構(gòu)規(guī)則內(nèi)定義文本匹配規(guī)則;D)定義篩選輸出的數(shù)據(jù)根據(jù)數(shù)據(jù)位置,定義控制結(jié)構(gòu)規(guī)則,在控制結(jié)構(gòu)規(guī)則內(nèi)定義文本匹配規(guī)則和結(jié)果輸出規(guī)則。本發(fā)明的有益效果在于使用本發(fā)明所述的方法,可以將不同設(shè)備的檢驗(yàn)結(jié)果通過(guò)邏輯模板設(shè)置的方式自動(dòng)轉(zhuǎn)為關(guān)系性電子數(shù)據(jù),且不需要再做程序設(shè)計(jì),有利檢驗(yàn)結(jié)果數(shù)據(jù)的電子化管理,提高了檢驗(yàn)結(jié)果的利用率,使檢驗(yàn)人員從人工錄入檢驗(yàn)結(jié)果的繁瑣事務(wù)性勞動(dòng)中解脫出來(lái),提高了工作效率。
圖I是本發(fā)明所涉及的數(shù)據(jù)篩選提取處理流程示意2是檢測(cè)儀器輸出檢驗(yàn)數(shù)據(jù)格式的參考樣例圖3是根據(jù)xml配置文件解析出來(lái)的結(jié)果其中I、檢測(cè)儀器輸出的檢驗(yàn)數(shù)據(jù)的表頭2、檢測(cè)儀器輸出的5條檢驗(yàn)結(jié)果數(shù)據(jù)3、檢驗(yàn)儀器輸出的檢驗(yàn)數(shù)據(jù)的結(jié)束標(biāo)示
具體實(shí)施例方式檢測(cè)儀器輸出數(shù)據(jù)格式如圖2所示,進(jìn)行數(shù)據(jù)處理最終得到圖3的輸出結(jié)果的方法如下I、根據(jù)數(shù)據(jù)格式編輯邏輯配置文件,以圖2檢驗(yàn)輸出數(shù)據(jù)為例,最后生成邏輯配置文件的格式如下所示行01:〈if>
行02 <conditions>//注釋判斷表頭該判斷工作被放在if規(guī)則的分支條件中。regex是一個(gè)基于正則表達(dá)式技術(shù)的分支條件;如果正則表達(dá)式匹配成功,則執(zhí)行if■規(guī)則的then子規(guī)則集。//行 03 〈regex pattern = " RetTime\s*Type\s*Area\s*Amt/Area\s*Amount\s*Grp\s*Name" />行 04 : 〈regex pattern = " ( :-*\|)+_*〃 />行05 !〈/conditions〉行06 :〈then>//注釋如果判斷條件滿足,while規(guī)則表示重復(fù)執(zhí)行該規(guī)則的子規(guī)則集。如果在whi Ie的子規(guī)則集的執(zhí)行過(guò)程中遇到break規(guī)則,則while規(guī)則執(zhí)行結(jié)束。因?yàn)椴襟E3是一個(gè)反復(fù)執(zhí)行的步驟,因此這里用while規(guī)則來(lái)描述。Illl行07 〈while〉行08 :<if>行09 :〈conditions〉//注釋判斷是否到達(dá)檢驗(yàn)結(jié)果表尾。如果是表尾,則執(zhí)行〈break〉規(guī)則跳出循環(huán)。//行 10:〈regex pattern =" \s*Totals\s*: " />
行11 :〈/conditions〉行12 :〈then〉行13 :〈break/〉行14 :〈/then〉行15 : </if>行I6
<regexpattern = " ( ’ pi,\d{2}\. \d{3})\s+( ’ p2,[~\s\d]*) \s+( ’ p3,-1 - \d+( : \. \d+) I [+_] \d\.
+ [eE] [+_]\d+)\s+( ’p4’-|_ \d+( : \. \d+) \d\.
+ [eE] [+-]\d+)\s+( ’ p5’-|- \d+( :\.\d+) [+-] \d\.
+ [eE] [+-]\d+)\s+( ,p6,[~\s]+) " >//注釋取一條數(shù)據(jù)記錄,執(zhí)行正則表達(dá)式的匹配。如果匹配成功,則表示找到一條檢測(cè)數(shù)據(jù)。此時(shí),將執(zhí)行regex規(guī)則的子規(guī)則集。該子規(guī)則集用來(lái)在添加輸出結(jié)果。//行17 :〈xmlnode name = " Signal " >//注釋xmlnode規(guī)則用于向輸出結(jié)果中添加xml節(jié)點(diǎn)。因?yàn)槲覀兲崛〉臄?shù)據(jù)最終都是保存在一個(gè)個(gè)的xml節(jié)點(diǎn)中的,因此需要在適當(dāng)?shù)奈恢檬褂脁mlnode規(guī)則來(lái)生成節(jié)點(diǎn)。//行 18 〈xmlnode name =" Amount" >行19 :〈xmlGroup saveGroup = " p5" />//注釋xmlGroup 規(guī)則的作用是取最近一次匹配的正則表達(dá)式的結(jié)果。其中P6是正則表達(dá)式分組的名稱。正則表達(dá)式執(zhí)行引擎會(huì)在匹配成功時(shí)會(huì)按分組提取文本。另外,xmlGroup規(guī)則會(huì)將匹配結(jié)果輸出到當(dāng)前xml節(jié)點(diǎn)的內(nèi)容中。//行20 〈/xmlnode〉行 21 :〈xmlnode name =" Name" >行22 :〈xmlGroup saveGroup = " p6" />行23 〈/xmlnode〉
行24 〈/xmlnode〉行25 〈/regex〉行26: 〈/while〉行27 〈/then〉
行28 </if>配置文件生成的主要過(guò)程是,第(I)步定位到檢驗(yàn)數(shù)據(jù)的表頭1,根據(jù)圖2中RetTime—行,定義為配置文件的中行03、行04;第(2)步通過(guò)循環(huán)控制實(shí)現(xiàn)逐條檢驗(yàn)結(jié)果數(shù)據(jù)2取出定義,定義為配置文件的中行16到行25 ;第(3)步為判斷檢驗(yàn)數(shù)據(jù)的結(jié)束標(biāo)示3,定義為配置文件的行08到行15 ;第(4)步為定義篩選輸出的數(shù)據(jù),本例中需要篩選輸出的數(shù)據(jù)有Amount、Name,定義為配置文件的行17到行24。配置文件用xml生成,下表中表示部分定義規(guī)則。
權(quán)利要求
1.一種針對(duì)檢測(cè)儀器輸出數(shù)據(jù)篩選提取的處理方法,步驟如下 1)根據(jù)檢測(cè)儀器輸出數(shù)據(jù)的格式,定義邏輯配置文件,并保存為XML格式文件; 2)讀取邏輯配置文件,將配置文件編譯為執(zhí)行邏輯規(guī)則集合的解析引擎; 3)將檢測(cè)儀器輸出的數(shù)據(jù)文件讀入內(nèi)存,啟動(dòng)解析引擎,執(zhí)行解析過(guò)程; 4)輸出解析結(jié)果。
2.根據(jù)權(quán)利要求I所述的處理方法,其特征在于步驟2所述的將配置文件編譯為執(zhí)行邏輯規(guī)則集合的解析引擎的編譯過(guò)程包括如下步驟 A)根據(jù)配置文件針對(duì)的檢測(cè)儀器輸出數(shù)據(jù)類型,生成根規(guī)則; B)判斷是否需要生成葉規(guī)則,是則在根規(guī)則下生成葉規(guī)則,葉規(guī)則的類型為控制結(jié)構(gòu)規(guī)則、文本匹配規(guī)則、結(jié)果輸出規(guī)則中的任意一種規(guī)則;否則結(jié)束編譯過(guò)程。
C)判斷是否在步驟B生成的葉規(guī)則下繼續(xù)生成葉規(guī)則,是則在葉規(guī)則下生成葉規(guī)則,葉規(guī)則的類型為控制結(jié)構(gòu)規(guī)則、文本匹配規(guī)則、結(jié)果輸出規(guī)則中的任意一種規(guī)則;否則執(zhí)行步驟B,并且將葉規(guī)則定義為葉子規(guī)則。
3.根據(jù)權(quán)利要求I或2任意一項(xiàng)所述的處理方法,其特征在于步驟3所述的解析過(guò)程,包括如下步驟 A)順序讀取檢測(cè)輸出數(shù)據(jù),判斷是否是表頭標(biāo)示,如果是則執(zhí)行步驟B,否則繼續(xù)步驟A ; B)順序讀取檢測(cè)輸出數(shù)據(jù),判斷是是含分隔符標(biāo)示,如果是則執(zhí)行步驟C,否則繼續(xù)步驟B; C)順序讀取檢測(cè)輸出數(shù)據(jù),判斷是否是表尾標(biāo)示,如果是則結(jié)束解析過(guò)程,否則執(zhí)行步驟D; D)判斷是否是需要的數(shù)據(jù)項(xiàng)標(biāo)示,如果是則執(zhí)行步驟E,否則執(zhí)行步驟C; E)提取數(shù)據(jù)項(xiàng)作為解析結(jié)果。
4.根據(jù)權(quán)利要求1-3任意一項(xiàng)所述的處理方法,其特征在于步驟I所述的定義邏輯配置文件的方法如下 A)定義判斷檢驗(yàn)數(shù)據(jù)的表頭標(biāo)示;根據(jù)表頭標(biāo)示,定義控制結(jié)構(gòu)規(guī)則,在控制結(jié)構(gòu)規(guī)則內(nèi)定義文本匹配規(guī)則; B)定義通過(guò)循環(huán)控制實(shí)現(xiàn)逐條檢驗(yàn)結(jié)果數(shù)據(jù)取出根據(jù)檢驗(yàn)結(jié)果數(shù)據(jù)位置,定義控制結(jié)構(gòu)規(guī)則,在控制結(jié)構(gòu)規(guī)則內(nèi)定義文本匹配規(guī)則; C)定義判斷檢驗(yàn)數(shù)據(jù)的結(jié)束標(biāo)示根據(jù)結(jié)束標(biāo)示,定義控制結(jié)構(gòu)規(guī)則,在控制結(jié)構(gòu)規(guī)則內(nèi)定義文本匹配規(guī)則; D)定義篩選輸出的數(shù)據(jù)根據(jù)數(shù)據(jù)位置,定義控制結(jié)構(gòu)規(guī)則,在控制結(jié)構(gòu)規(guī)則內(nèi)定義文本匹配規(guī)則和結(jié)果輸出規(guī)則。
全文摘要
本發(fā)明公開(kāi)一種針對(duì)檢測(cè)儀器輸出數(shù)據(jù)篩選提取的處理方法,包括步驟根據(jù)檢驗(yàn)結(jié)果的格式設(shè)置邏輯配制文件;加載邏輯配制文件;讀取檢驗(yàn)結(jié)果原始文件;根據(jù)邏輯配制文件對(duì)檢驗(yàn)結(jié)果的原始文本進(jìn)行邏輯解析;根據(jù)邏輯配置文件解析定義的輸出格式輸出數(shù)據(jù)。按照本發(fā)明的方法,用戶只需要設(shè)置或修改邏輯配制文件,即可對(duì)不同檢驗(yàn)設(shè)備輸出數(shù)據(jù)進(jìn)行篩選提取,不需要進(jìn)行額外的程序開(kāi)發(fā),從而實(shí)現(xiàn)了不同設(shè)備輸出自身格式數(shù)據(jù)文件的統(tǒng)一數(shù)據(jù)管理,提高了數(shù)據(jù)有利用率和檢驗(yàn)人員的工作效率。
文檔編號(hào)G06F17/30GK102799584SQ201110135008
公開(kāi)日2012年11月28日 申請(qǐng)日期2011年5月24日 優(yōu)先權(quán)日2011年5月24日
發(fā)明者王美, 汪先富, 吳梅山, 豐蘇, 黃國(guó)明, 沈曉, 付文新, 徐國(guó)志, 周琳琳, 邊濤 申請(qǐng)人:中華人民共和國(guó)天津出入境檢驗(yàn)檢疫局, 天津市基弘電子技術(shù)有限公司