收款机打印数据格式自动提取方法

文档序号:6368293阅读:412来源:国知局
专利名称:收款机打印数据格式自动提取方法
技术领域
本发明涉及计算机与打印机的控制与输出技术,特别涉及与计算机连用的打印机控制与数据字符的识别技术。
背景技术
为了从收款机打印小票的数据中提取出有效的经营数据,特别是金额与合计等数据,需要对打印小票的格式进行分析。通常的方法是利用打印小票的微型打印机的十六进制打印方式将收款机打印小票的数据打印出来,再由人来分析哪些是打印字符,哪些是控制码,还要分析这些打印字符哪些是管理信息,哪些是商品信息,而且还要分析这些控制码的功能是什么,才能提取出有用的小票打印格式。这种打印后进行识别的方案费时费力,还容易出错。
例如图3所述一种商场销售打印小票示例中,前四行是票头,后三行是票尾,中间的商品明细信息中,又有中文名称和编码及价格信息,还有收款和找赎等信息。纸面分析已经够复杂了,分析这些信息的机内表示码又更加复杂。

发明内容
本发明为克服现有技术的不足之处,提高效率和易于操作,提出一种新的自动识别的收款机打印小票数据格式提取方法,在预先对不同商家不同的小票打印格式,即票头、明细、票尾信息所占用的行数、栏目(列)数及其数据信息类型的不同,进行归纳、统计、分析的基础上,采用软件规范的格式语言来描述打印格式,形成自动识别方法。无须等待小票打印到纸面,而采用数据处理设备模拟打印机接收从收款机发给打印机的所有数据,并自动分析和识别可视字符与控制码,在不同商家的情况下预选一下对象设置,即可自动完成小票数据格式的提取。本方法针对的商家是有限的若干类,每次针对某一个商家调整其初始优化条件和特殊标记,即可对该商家形成完整的小票数据格式提取步骤,完成联机型前置式自动提取。
本发明的目的可以这样来达到设计一种收款机打印数据格式自动提取方法,由收款机打印输出端连接的数据处理机开辟缓冲区BUFEER,接收所有收款机输出给打印机的数据,并对这些数据进行分类、比较和识别;所述打印数据包括票头、明细和票尾数据区;其特征在于所述自动提取方法包括以下步骤F、确定明细区各行、列明细单元的特定类型代码;G、按所述特定类型代码提取各明细项金额,并计算本次交易总金额;H、以计算的所述总金额查找票面合计金额项,并提取该票面合计金额项左列的关键字符串。


图1-1和图1-2是本发明收款机打印数据格式自动提取方法主要步骤流程图;图2是所述打印数据格式自动提取方法分区提取流程图;图3是一种打印票面与其对应机器码分析对照图。
具体实施例方式
以下结合附图详述本发明的实施例。
一种收款机打印数据格式自动提取方法,由收款机的打印输出端连接的数据处理机开辟缓冲区BUFEER,接收所有收款机输出给打印机的数据,并对输出打印数据进行分类、比较和识别;所述打印数据包括票头、明细和票尾数据区;其特征在于所述自动提取方法包括以下步骤A、识别打印数据基本单元;B、建立打印数据结构数组。
C、确定打印数据格式中明细项所占用的行数;D、确定明细区首行和末行的位置;E、确定明细项区域的总行数。
F、确定明细区各行、列明细单元的特定类型代码;G、按所述特定类型代码提取各明细项金额,并计算本次交易总金额;H、以计算的所述总金额查找票面合计金额项,并提取该票面合计金额项左列的关键字符串。
所述步骤A又包括以下分步骤a1、以典型的行分隔符将打印数据从上至下进行分行;a2、以列分隔符从左至右将各行内顺序分成可打印字符的基本单元;所述步骤B又包括以下内容以行为单位,建立小票数据的识别特征描述结构数组;所述结构数组又包含行号、该行总列数及行内每一基本单元的特定类型代码;所述特定类型代码定义为符合所述明细项单元规定的数据类型;所述步骤C又包括以下分步骤c1、分别累计各元素成员特定类型代码与行数为1或2或3的匹配行数;c2、确定行描述匹配比例最高的明细项描述行数;所述分步骤c1又包括以下细分步骤c11、按每个明细项为1行描述对比结构数组,累计各元素中成员的特定类型代码符合匹配的行数MAX1;计算相对匹配比例 c12、按每个明细项为2行描述对比结构数组,累计各元素中成员的特定类型代码符合匹配的行数MAX2;计算相对匹配比例 c13、按每个明细项为3行描述对比结构数组,累计各元素中成员的特定类型代码符合匹配的行数MAX3;计算相对匹配比例 所述分步骤c2又包括以下内容确定K1、K2、K3中的最大值为明细项描述行数。
所述步骤D又包括以下分步骤d1、按行数递增顺序确定首次符合最高匹配比例的明细项描述行数的行的序号,即明细区首行;d2、按类似方法从所述首行开始,确定明细区最后明细项的最后一描述行的序号,即末行;所述步骤E又包括以下内容以所述末行行数减去所述首行行数,确定所述明细区的区域大小,即从首行开始至末行的最后一描述行的行数。
所述步骤F又包括以下内容按照已确定的明细项不同行中各列明细单元的特定类型的特征确定各明细单元的特定类型代码;所述步骤G又包括以下分步骤g1、在票头区按识别的行列格式逐行提取其店员、收银员及编号等有用信息;g2、在明细区按识别的行列格式逐行提取其商品名及金额等有用信息,并计算总金额合计;所述步骤H又包括以下内容在票尾区按识别的行列格式提取与计算总金额相等的合计金额,并提取其左列的关键字符。
实用中,本发明各流程可分述如下1)、打印小票数据基本单元的识别—流程(2.1.1-1)通过识别打印机打印数据中最典型的行分隔符(0X0A)和列分隔符(0X20),将小票数据按从上至下分行,每行从左至右分列的顺序将小票数据顺序分成可打印字符的基本单元。
此例中,可打印行数为21,每行最大列数为5(第二行)。
2)、建立小票数据结构数组—流程(2.1.1-2)以行为单位,建立小票数据的识别特征描述结构数组,每一结构数组元素含有行号、该行总列数及该行每一基本单元的特定类型代码等多项成员。特定类型代码为符合明细项单元规定的数据类型。例如,序号、商品名、货币金额、重量等。结构数组为Detailtype,有元素21个,Maxdt=21。小票数据格式提取是通过对结构体数组Detailtype中各元素及元素成员做识别、分析、综合而确定的。
例如Detail Lines(7)第7行中含有货币金额类型代码。
Detail Lines(12)第12行中含有序号类型代码。
3)、确定小票格式中明细项描述行数—流程(2.1.1-3)按每个明细项可能是1行、2行或3行描述,分三个情况,分别对比结构数组Detail type[i],累计各元素中成员的特定类型代码符合匹配的行数MAX,再对各累计匹配行数MAX做分析。
此例中明细项为1行描述累计匹配行数最大值MAX1=5;明细项为2行描述累计匹配行数最大值MAX2=5;明细项为3行描述累计匹配行数最大值MAX3=0;相对打印行数匹配比例为Ki=MAXiMaxdt/i]]>十分明显,明细项2的行描述的匹配比例最高,由此确定了小票格式中明细项描述行数为2行,即Detail Lines=2。
4)、确定明细项首行及末行位置—流程(2.1.1-4)
按明细项2行描述的格式,再次统计Detail type[i]中各元素的成员特定类型代码匹配的次数,找出首次出现高匹配次数的行数。高匹配的元素可认为是符合明细项正常格式的元素。
此例中,高匹配次数比较的估计值可参考流程(2.1.1-3)中的MAX2,找到Detail type[i]中首次出现高匹配次数的行数为第6行,即Min_dt=6。将Detailtype中从元素min_dt开始符合明细项正常格式的后续内容保存至另一结构数组中Dt,进行进一步分析。
结构数组 Dt[i]=Detailtype[i], i=1-Maxdt同时也确定了小票数据票头区域与明细项区域的划分为FirstDetail=Detailtype[min_dt]其中,FirstDetail中的行号-1小票行即为票头的最后一行作为票头识别标志2;LastDetail中的行号-1小票行即为票尾的第一行作为票尾识别标志1。FirstDetail中的行号-2小票行即为票头的最后一行作为票头识别标志1;LastDetail中的行号-2小票行即为票尾的第一行作为票尾识别标志2。
5)、确定明细项区域大小—流程(2.1.1-5)从Dt(min_dt)元素开始,按每明细项二行描述格式,再次分析Dt各元素,提取出明细项不同行各列明细单元的特定类型代码生成di,此例中明细项确定为二行描述,则填写d1、d2、而d3=0。
根据确定的d1、d2特定类型代码,从Dt[min_dt](FirstDetail)开始至Dt[max_dt]仔细进行类型匹配比对,确定出明细区最后一明细项的最后一描述行max_dt,并赋值给LastDetail。
此例中max_dt=Last Detail=15,由此可确定明细区域从第6行至15行。
6)、进一步确定每一明细项各行、各列明细单元的特定类型代码—流程(2.1.1-6)
根据前面确定出来的d1、d2、d3,结合对应数据再次分析明细项各描述行内各列明细单元的确切特定类型代码,确定易混淆项。例如,序号与数量、单价金额与小计金额等。
7)、小票数据格式验证及累计金额关键字符提取—流程(2.1.1-7、8)按照上述流程确定的小票数据格式,执行2.1.2“票头、明细票尾数据提取流程”,重新分析小票数据,提取出各明细项金额,并计算小票总金额(流程2.1.1-7)。
8)、在票尾区数据中查找与计算总金额相等的合计金额,并提取前面的关键字符串。
此例中合计金额为75.00,关键字符串为“实收”。
同时此步操作亦对前述流程确定的小票格式做了提取正确性的验证。
权利要求
1.一种收款机打印数据格式自动提取方法,由收款机打印输出端连接的数据处理机开辟缓冲区BUFEER,并对接收到的输出打印数据进行分类、比较和识别;所述打印数据包括票头、明细和票尾数据区;其特征在于所述自动提取方法包括以下步骤F、确定明细区各行、列明细单元的特定类型代码;G、按所述特定类型代码提取各明细项金额,并计算本次交易总金额;H、以计算的所述总金额查找票面合计金额项,并提取该票面合计金额项左列的关键字符串。
2.根据权利要求1所述的打印数据格式自动提取方法,其特征在于还包括以下步骤C、确定打印数据格式中明细项所占用的行数;D、确定明细区首行和末行的位置;E、确定明细项区域的总行数。
3.根据权利要求2所述的打印数据格式自动提取方法,其特征在于还包括以下步骤A、识别打印数据基本单元;B、建立打印数据结构数组。
4.根据权利要求3所述的打印数据格式自动提取方法,其特征在于所述步骤C又包括以下分步骤c1、分别累计各元素成员特定类型代码与行数为1或2或3的匹配行数;c2、确定行描述匹配比例最高的明细项描述行数;所述步骤D又包括以下分步骤d1、按行数递增顺序确定首次符合最高匹配比例的明细项描述行数的行的序号,即明细区首行;d2、按类似方法从所述首行开始,确定明细区最后明细项的最后一描述行的序号,即末行;所述步骤E又包括以下内容以所述末行行数减去所述首行行数,确定所述明细区的区域大小,即从首行开始至末行的最后一描述行的行数。
5.根据权利要求4所述的打印数据格式自动提取方法,其特征在于所述步骤F又包括以下内容f1、按照已确定的明细项不同行中各列明细单元的特定类型的特征确定所述各明细单元的特定类型代码;所述步骤G又包括以下分步骤g1、在票头区按识别的行列格式逐行提取其店员、收银员及编号等有用信息;g2、在明细区按识别的行列格式逐行提取其商品名及金额等有用信息,并计算总金额合计;所述步骤H又包括以下内容在票尾区按识别的行列格式提取与计算总金额相等的合计金额,并提取其左列的关键字符。
6.根据权利要求5所述的打印数据格式自动提取方法,其特征在于所述步骤A又包括以下分步骤a1、以典型的行分隔符将打印数据从上至下进行分行;a2、以列分隔符从左至右将各行内顺序分成可打印字符的基本单元;所述步骤B又包括以下内容以行为单位,建立小票数据的识别特征描述结构数组;所述结构数组又包含行号、该行总列数及行内每一基本单元的特定类型代码;所述特定类型代码定义为符合所述明细项单元规定的数据类型;所述分步骤c1又包括以下细分步骤c11、按每个明细项为1行描述对比结构数组,累计各元素中成员的特定类型代码符合匹配的行数MAX1;计算相对匹配比例 c12、按每个明细项为2行描述对比结构数组,累计各元素中成员的特定类型代码符合匹配的行数MAX2;计算相对匹配比例 c13、按每个明细项为3行描述对比结构数组,累计各元素中成员的特定类型代码符合匹配的行数MAX3;计算相对匹配比例 所述分步骤c2又包括以下内容确定K1、K2、K3中的最大值为明细项描述行数。
全文摘要
一种收款机打印数据格式自动提取方法,由收款机打印输出端连接的数据处理机开辟缓冲区BUFEER,并对接收到的输出打印数据进行分类、比较和识别;所述打印数据包括票头、明细和票尾数据区;尤其是所述自动提取方法包括以下步骤F、确定明细区各行、列明细单元的特定类型代码;G、按所述特定类型代码提取各明细项金额,并计算本次交易总金额;H、以计算的所述总金额查找票面合计金额项,并提取该票面合计金额项左列的关键字符串。本发明采用软件规范的格式语言来描述打印格式,形成自动识别方法,在不同商家的情况下预选一下对象设置,即可自动完成小票数据格式的提取。
文档编号G06K9/18GK1547102SQ0314265
公开日2004年11月17日 申请日期2003年6月11日 优先权日2003年6月11日
发明者岑国荣, 李焰, 李岩 申请人:蛇口广华电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1