專利名稱:收款機打印數(shù)據(jù)格式自動提取方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機與打印機的控制與輸出技術(shù),特別涉及與計算機連用的打印機控制與數(shù)據(jù)字符的識別技術(shù)。
背景技術(shù):
為了從收款機打印小票的數(shù)據(jù)中提取出有效的經(jīng)營數(shù)據(jù),特別是金額與合計等數(shù)據(jù),需要對打印小票的格式進行分析。通常的方法是利用打印小票的微型打印機的十六進制打印方式將收款機打印小票的數(shù)據(jù)打印出來,再由人來分析哪些是打印字符,哪些是控制碼,還要分析這些打印字符哪些是管理信息,哪些是商品信息,而且還要分析這些控制碼的功能是什么,才能提取出有用的小票打印格式。這種打印后進行識別的方案費時費力,還容易出錯。
例如圖3所述一種商場銷售打印小票示例中,前四行是票頭,后三行是票尾,中間的商品明細信息中,又有中文名稱和編碼及價格信息,還有收款和找贖等信息。紙面分析已經(jīng)夠復(fù)雜了,分析這些信息的機內(nèi)表示碼又更加復(fù)雜。
發(fā)明內(nèi)容
本發(fā)明為克服現(xiàn)有技術(shù)的不足之處,提高效率和易于操作,提出一種新的自動識別的收款機打印小票數(shù)據(jù)格式提取方法,在預(yù)先對不同商家不同的小票打印格式,即票頭、明細、票尾信息所占用的行數(shù)、欄目(列)數(shù)及其數(shù)據(jù)信息類型的不同,進行歸納、統(tǒng)計、分析的基礎(chǔ)上,采用軟件規(guī)范的格式語言來描述打印格式,形成自動識別方法。無須等待小票打印到紙面,而采用數(shù)據(jù)處理設(shè)備模擬打印機接收從收款機發(fā)給打印機的所有數(shù)據(jù),并自動分析和識別可視字符與控制碼,在不同商家的情況下預(yù)選一下對象設(shè)置,即可自動完成小票數(shù)據(jù)格式的提取。本方法針對的商家是有限的若干類,每次針對某一個商家調(diào)整其初始優(yōu)化條件和特殊標(biāo)記,即可對該商家形成完整的小票數(shù)據(jù)格式提取步驟,完成聯(lián)機型前置式自動提取。
本發(fā)明的目的可以這樣來達到設(shè)計一種收款機打印數(shù)據(jù)格式自動提取方法,由收款機打印輸出端連接的數(shù)據(jù)處理機開辟緩沖區(qū)BUFEER,接收所有收款機輸出給打印機的數(shù)據(jù),并對這些數(shù)據(jù)進行分類、比較和識別;所述打印數(shù)據(jù)包括票頭、明細和票尾數(shù)據(jù)區(qū);其特征在于所述自動提取方法包括以下步驟F、確定明細區(qū)各行、列明細單元的特定類型代碼;G、按所述特定類型代碼提取各明細項金額,并計算本次交易總金額;H、以計算的所述總金額查找票面合計金額項,并提取該票面合計金額項左列的關(guān)鍵字符串。
圖1-1和圖1-2是本發(fā)明收款機打印數(shù)據(jù)格式自動提取方法主要步驟流程圖;圖2是所述打印數(shù)據(jù)格式自動提取方法分區(qū)提取流程圖;圖3是一種打印票面與其對應(yīng)機器碼分析對照圖。
具體實施例方式
以下結(jié)合附圖詳述本發(fā)明的實施例。
一種收款機打印數(shù)據(jù)格式自動提取方法,由收款機的打印輸出端連接的數(shù)據(jù)處理機開辟緩沖區(qū)BUFEER,接收所有收款機輸出給打印機的數(shù)據(jù),并對輸出打印數(shù)據(jù)進行分類、比較和識別;所述打印數(shù)據(jù)包括票頭、明細和票尾數(shù)據(jù)區(qū);其特征在于所述自動提取方法包括以下步驟A、識別打印數(shù)據(jù)基本單元;B、建立打印數(shù)據(jù)結(jié)構(gòu)數(shù)組。
C、確定打印數(shù)據(jù)格式中明細項所占用的行數(shù);D、確定明細區(qū)首行和末行的位置;E、確定明細項區(qū)域的總行數(shù)。
F、確定明細區(qū)各行、列明細單元的特定類型代碼;G、按所述特定類型代碼提取各明細項金額,并計算本次交易總金額;H、以計算的所述總金額查找票面合計金額項,并提取該票面合計金額項左列的關(guān)鍵字符串。
所述步驟A又包括以下分步驟a1、以典型的行分隔符將打印數(shù)據(jù)從上至下進行分行;a2、以列分隔符從左至右將各行內(nèi)順序分成可打印字符的基本單元;所述步驟B又包括以下內(nèi)容以行為單位,建立小票數(shù)據(jù)的識別特征描述結(jié)構(gòu)數(shù)組;所述結(jié)構(gòu)數(shù)組又包含行號、該行總列數(shù)及行內(nèi)每一基本單元的特定類型代碼;所述特定類型代碼定義為符合所述明細項單元規(guī)定的數(shù)據(jù)類型;所述步驟C又包括以下分步驟c1、分別累計各元素成員特定類型代碼與行數(shù)為1或2或3的匹配行數(shù);c2、確定行描述匹配比例最高的明細項描述行數(shù);所述分步驟c1又包括以下細分步驟c11、按每個明細項為1行描述對比結(jié)構(gòu)數(shù)組,累計各元素中成員的特定類型代碼符合匹配的行數(shù)MAX1;計算相對匹配比例 c12、按每個明細項為2行描述對比結(jié)構(gòu)數(shù)組,累計各元素中成員的特定類型代碼符合匹配的行數(shù)MAX2;計算相對匹配比例 c13、按每個明細項為3行描述對比結(jié)構(gòu)數(shù)組,累計各元素中成員的特定類型代碼符合匹配的行數(shù)MAX3;計算相對匹配比例 所述分步驟c2又包括以下內(nèi)容確定K1、K2、K3中的最大值為明細項描述行數(shù)。
所述步驟D又包括以下分步驟d1、按行數(shù)遞增順序確定首次符合最高匹配比例的明細項描述行數(shù)的行的序號,即明細區(qū)首行;d2、按類似方法從所述首行開始,確定明細區(qū)最后明細項的最后一描述行的序號,即末行;所述步驟E又包括以下內(nèi)容以所述末行行數(shù)減去所述首行行數(shù),確定所述明細區(qū)的區(qū)域大小,即從首行開始至末行的最后一描述行的行數(shù)。
所述步驟F又包括以下內(nèi)容按照已確定的明細項不同行中各列明細單元的特定類型的特征確定各明細單元的特定類型代碼;所述步驟G又包括以下分步驟g1、在票頭區(qū)按識別的行列格式逐行提取其店員、收銀員及編號等有用信息;g2、在明細區(qū)按識別的行列格式逐行提取其商品名及金額等有用信息,并計算總金額合計;所述步驟H又包括以下內(nèi)容在票尾區(qū)按識別的行列格式提取與計算總金額相等的合計金額,并提取其左列的關(guān)鍵字符。
實用中,本發(fā)明各流程可分述如下1)、打印小票數(shù)據(jù)基本單元的識別—流程(2.1.1-1)通過識別打印機打印數(shù)據(jù)中最典型的行分隔符(0X0A)和列分隔符(0X20),將小票數(shù)據(jù)按從上至下分行,每行從左至右分列的順序?qū)⑿∑睌?shù)據(jù)順序分成可打印字符的基本單元。
此例中,可打印行數(shù)為21,每行最大列數(shù)為5(第二行)。
2)、建立小票數(shù)據(jù)結(jié)構(gòu)數(shù)組—流程(2.1.1-2)以行為單位,建立小票數(shù)據(jù)的識別特征描述結(jié)構(gòu)數(shù)組,每一結(jié)構(gòu)數(shù)組元素含有行號、該行總列數(shù)及該行每一基本單元的特定類型代碼等多項成員。特定類型代碼為符合明細項單元規(guī)定的數(shù)據(jù)類型。例如,序號、商品名、貨幣金額、重量等。結(jié)構(gòu)數(shù)組為Detailtype,有元素21個,Maxdt=21。小票數(shù)據(jù)格式提取是通過對結(jié)構(gòu)體數(shù)組Detailtype中各元素及元素成員做識別、分析、綜合而確定的。
例如Detail Lines(7)第7行中含有貨幣金額類型代碼。
Detail Lines(12)第12行中含有序號類型代碼。
3)、確定小票格式中明細項描述行數(shù)—流程(2.1.1-3)按每個明細項可能是1行、2行或3行描述,分三個情況,分別對比結(jié)構(gòu)數(shù)組Detail type[i],累計各元素中成員的特定類型代碼符合匹配的行數(shù)MAX,再對各累計匹配行數(shù)MAX做分析。
此例中明細項為1行描述累計匹配行數(shù)最大值MAX1=5;明細項為2行描述累計匹配行數(shù)最大值MAX2=5;明細項為3行描述累計匹配行數(shù)最大值MAX3=0;相對打印行數(shù)匹配比例為Ki=MAXiMaxdt/i]]>十分明顯,明細項2的行描述的匹配比例最高,由此確定了小票格式中明細項描述行數(shù)為2行,即Detail Lines=2。
4)、確定明細項首行及末行位置—流程(2.1.1-4)
按明細項2行描述的格式,再次統(tǒng)計Detail type[i]中各元素的成員特定類型代碼匹配的次數(shù),找出首次出現(xiàn)高匹配次數(shù)的行數(shù)。高匹配的元素可認為是符合明細項正常格式的元素。
此例中,高匹配次數(shù)比較的估計值可參考流程(2.1.1-3)中的MAX2,找到Detail type[i]中首次出現(xiàn)高匹配次數(shù)的行數(shù)為第6行,即Min_dt=6。將Detailtype中從元素min_dt開始符合明細項正常格式的后續(xù)內(nèi)容保存至另一結(jié)構(gòu)數(shù)組中Dt,進行進一步分析。
結(jié)構(gòu)數(shù)組 Dt[i]=Detailtype[i], i=1-Maxdt同時也確定了小票數(shù)據(jù)票頭區(qū)域與明細項區(qū)域的劃分為FirstDetail=Detailtype[min_dt]其中,F(xiàn)irstDetail中的行號-1小票行即為票頭的最后一行作為票頭識別標(biāo)志2;LastDetail中的行號-1小票行即為票尾的第一行作為票尾識別標(biāo)志1。FirstDetail中的行號-2小票行即為票頭的最后一行作為票頭識別標(biāo)志1;LastDetail中的行號-2小票行即為票尾的第一行作為票尾識別標(biāo)志2。
5)、確定明細項區(qū)域大小—流程(2.1.1-5)從Dt(min_dt)元素開始,按每明細項二行描述格式,再次分析Dt各元素,提取出明細項不同行各列明細單元的特定類型代碼生成di,此例中明細項確定為二行描述,則填寫d1、d2、而d3=0。
根據(jù)確定的d1、d2特定類型代碼,從Dt[min_dt](FirstDetail)開始至Dt[max_dt]仔細進行類型匹配比對,確定出明細區(qū)最后一明細項的最后一描述行max_dt,并賦值給LastDetail。
此例中max_dt=Last Detail=15,由此可確定明細區(qū)域從第6行至15行。
6)、進一步確定每一明細項各行、各列明細單元的特定類型代碼—流程(2.1.1-6)
根據(jù)前面確定出來的d1、d2、d3,結(jié)合對應(yīng)數(shù)據(jù)再次分析明細項各描述行內(nèi)各列明細單元的確切特定類型代碼,確定易混淆項。例如,序號與數(shù)量、單價金額與小計金額等。
7)、小票數(shù)據(jù)格式驗證及累計金額關(guān)鍵字符提取—流程(2.1.1-7、8)按照上述流程確定的小票數(shù)據(jù)格式,執(zhí)行2.1.2“票頭、明細票尾數(shù)據(jù)提取流程”,重新分析小票數(shù)據(jù),提取出各明細項金額,并計算小票總金額(流程2.1.1-7)。
8)、在票尾區(qū)數(shù)據(jù)中查找與計算總金額相等的合計金額,并提取前面的關(guān)鍵字符串。
此例中合計金額為75.00,關(guān)鍵字符串為“實收”。
同時此步操作亦對前述流程確定的小票格式做了提取正確性的驗證。
權(quán)利要求
1.一種收款機打印數(shù)據(jù)格式自動提取方法,由收款機打印輸出端連接的數(shù)據(jù)處理機開辟緩沖區(qū)BUFEER,并對接收到的輸出打印數(shù)據(jù)進行分類、比較和識別;所述打印數(shù)據(jù)包括票頭、明細和票尾數(shù)據(jù)區(qū);其特征在于所述自動提取方法包括以下步驟F、確定明細區(qū)各行、列明細單元的特定類型代碼;G、按所述特定類型代碼提取各明細項金額,并計算本次交易總金額;H、以計算的所述總金額查找票面合計金額項,并提取該票面合計金額項左列的關(guān)鍵字符串。
2.根據(jù)權(quán)利要求1所述的打印數(shù)據(jù)格式自動提取方法,其特征在于還包括以下步驟C、確定打印數(shù)據(jù)格式中明細項所占用的行數(shù);D、確定明細區(qū)首行和末行的位置;E、確定明細項區(qū)域的總行數(shù)。
3.根據(jù)權(quán)利要求2所述的打印數(shù)據(jù)格式自動提取方法,其特征在于還包括以下步驟A、識別打印數(shù)據(jù)基本單元;B、建立打印數(shù)據(jù)結(jié)構(gòu)數(shù)組。
4.根據(jù)權(quán)利要求3所述的打印數(shù)據(jù)格式自動提取方法,其特征在于所述步驟C又包括以下分步驟c1、分別累計各元素成員特定類型代碼與行數(shù)為1或2或3的匹配行數(shù);c2、確定行描述匹配比例最高的明細項描述行數(shù);所述步驟D又包括以下分步驟d1、按行數(shù)遞增順序確定首次符合最高匹配比例的明細項描述行數(shù)的行的序號,即明細區(qū)首行;d2、按類似方法從所述首行開始,確定明細區(qū)最后明細項的最后一描述行的序號,即末行;所述步驟E又包括以下內(nèi)容以所述末行行數(shù)減去所述首行行數(shù),確定所述明細區(qū)的區(qū)域大小,即從首行開始至末行的最后一描述行的行數(shù)。
5.根據(jù)權(quán)利要求4所述的打印數(shù)據(jù)格式自動提取方法,其特征在于所述步驟F又包括以下內(nèi)容f1、按照已確定的明細項不同行中各列明細單元的特定類型的特征確定所述各明細單元的特定類型代碼;所述步驟G又包括以下分步驟g1、在票頭區(qū)按識別的行列格式逐行提取其店員、收銀員及編號等有用信息;g2、在明細區(qū)按識別的行列格式逐行提取其商品名及金額等有用信息,并計算總金額合計;所述步驟H又包括以下內(nèi)容在票尾區(qū)按識別的行列格式提取與計算總金額相等的合計金額,并提取其左列的關(guān)鍵字符。
6.根據(jù)權(quán)利要求5所述的打印數(shù)據(jù)格式自動提取方法,其特征在于所述步驟A又包括以下分步驟a1、以典型的行分隔符將打印數(shù)據(jù)從上至下進行分行;a2、以列分隔符從左至右將各行內(nèi)順序分成可打印字符的基本單元;所述步驟B又包括以下內(nèi)容以行為單位,建立小票數(shù)據(jù)的識別特征描述結(jié)構(gòu)數(shù)組;所述結(jié)構(gòu)數(shù)組又包含行號、該行總列數(shù)及行內(nèi)每一基本單元的特定類型代碼;所述特定類型代碼定義為符合所述明細項單元規(guī)定的數(shù)據(jù)類型;所述分步驟c1又包括以下細分步驟c11、按每個明細項為1行描述對比結(jié)構(gòu)數(shù)組,累計各元素中成員的特定類型代碼符合匹配的行數(shù)MAX1;計算相對匹配比例 c12、按每個明細項為2行描述對比結(jié)構(gòu)數(shù)組,累計各元素中成員的特定類型代碼符合匹配的行數(shù)MAX2;計算相對匹配比例 c13、按每個明細項為3行描述對比結(jié)構(gòu)數(shù)組,累計各元素中成員的特定類型代碼符合匹配的行數(shù)MAX3;計算相對匹配比例 所述分步驟c2又包括以下內(nèi)容確定K1、K2、K3中的最大值為明細項描述行數(shù)。
全文摘要
一種收款機打印數(shù)據(jù)格式自動提取方法,由收款機打印輸出端連接的數(shù)據(jù)處理機開辟緩沖區(qū)BUFEER,并對接收到的輸出打印數(shù)據(jù)進行分類、比較和識別;所述打印數(shù)據(jù)包括票頭、明細和票尾數(shù)據(jù)區(qū);尤其是所述自動提取方法包括以下步驟F、確定明細區(qū)各行、列明細單元的特定類型代碼;G、按所述特定類型代碼提取各明細項金額,并計算本次交易總金額;H、以計算的所述總金額查找票面合計金額項,并提取該票面合計金額項左列的關(guān)鍵字符串。本發(fā)明采用軟件規(guī)范的格式語言來描述打印格式,形成自動識別方法,在不同商家的情況下預(yù)選一下對象設(shè)置,即可自動完成小票數(shù)據(jù)格式的提取。
文檔編號G06K9/18GK1547102SQ0314265
公開日2004年11月17日 申請日期2003年6月11日 優(yōu)先權(quán)日2003年6月11日
發(fā)明者岑國榮, 李焰, 李巖 申請人:蛇口廣華電子技術(shù)有限公司