首页> 中国专利> 光学信息读取装置、光学信息读取方法、计算机可读程序以及记录介质

光学信息读取装置、光学信息读取方法、计算机可读程序以及记录介质

摘要

能够防止条形码的误读取,并且即使在元素中存在瑕疵、模糊不清的情况下也能够输出正确的条形码。光学信息读取装置具备:运算部(23a),其对在1个字符内包含相邻的条和空白的6个元素的宽度进行加法运算来分别求出2~n个相加模式,将上述2~n个相加模式分别换算为1个字符的模块数并求出该2~n个相加模式的模块数;提取部(23b),其锁定该2~n个相加模式的各模块数为误差1以内的整数的对象字符来提取候选字符;以及检索部(23d),其将提取出的各2~n个相加模式的模块数的候选字符与用于评价该候选字符的期待值字符进行比较,检索与候选字符相关性最强的期待值字符。

著录项

  • 公开/公告号CN103403735A

    专利类型发明专利

  • 公开/公告日2013-11-20

    原文格式PDF

  • 申请/专利权人 OPTO电子有限公司;

    申请/专利号CN201280009825.9

  • 发明设计人 木村一人;早川浩;

    申请日2012-02-20

  • 分类号

  • 代理机构北京林达刘知识产权代理事务所(普通合伙);

  • 代理人刘新宇

  • 地址 日本埼玉县

  • 入库时间 2024-02-19 21:23:12

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-06-22

    授权

    授权

  • 2014-03-26

    实质审查的生效 IPC(主分类):G06K7/10 申请日:20120220

    实质审查的生效

  • 2013-11-20

    公开

    公开

说明书

技术领域

本发明涉及能够应用于读取条形码符号并输出条形码数据的条形码符 号读取装置的光学信息读取装置、光学信息读取方法、计算机可读程序以及 记录介质。

背景技术

以往,在物品流通系统中利用了如下一种系统:对流通物品粘贴或者打 印条形码符号,利用条形码读取器(以下称为光学信息读取装置)等读取这种 条形码符号并进行信息处理。根据光学信息读取装置,读取条形码符号1, 检索其起始空白(start margin),并且对继起始空白之后的字符进行解码处理 并输出条形码数据。

另外,在条形码符号的标准中具有CODE128、CODE39、EAN/UPC(E  AN/Universal Product Code:通用产品代码),交错式25条码(Interleaved2 of5)、Codabar码、RSS、RSS Limited码、RSS Expanded码等各种方式。另 一方面,条形码符号大多以对流通物品粘贴条形码符号标或者直接打印到包 裹上的方式来使用。但是,设想以下情况:由于条形码的打印技术、粘贴技 术等的参差不齐、流通物品的处理方法而不能准确地读取被粘贴或打印到流 通物品上的条形码符号。作为不能准确地读取条形码符号的原因,能够列举 出构成条形码符号的条、空白的缺失、瑕疵等。

与这种光学信息读取装置有关地,在专利文献1中公开了条形码符号读 取装置、该条形码符号读取装置所使用的起始空白候选检测方法以及条形码 符号读取方法。参照图14~图17说明以下情况:应用该条形码符号读取装置 对在构成条形码符号的条、空白中包含不经意产生的缺失、瑕疵等的难读字 符进行解码处理。

图14是表示现有例所涉及的光学信息读取装置20的结构例的框图。图14 所示的光学信息读取装置20构成为具有光学读取部2、时钟产生部3、m级数 据缓存区5、x倍器7、选择器部6、比较器8、起始空白保存部9、接口部11、 解码缓存区25、计数数据值保存部30、CPU33以及条形码数据值用的计数 器部40。

光学读取部2读取作为读取对象的条形码符号1并产生代码读取数据D2。 例如,从光学读取部2对条形码符号1照射由发光二极管(LED)、激光二极管(L D)等光源产生的光,用光电二极管、光电晶体管等受光元件接收其反射光并 转换为电信号,对该电信号进行2值化来转换为表示条形码符号1的浓淡、即 黑色部分的条或者白色部分的空白的数字的代码读取数据D2。

光学读取部2与计数器部40相连接。计数器部40连接有时钟产生部3。时 钟产生部3产生规定频率的采样时钟信号(以下简称为CLK信号),并将CLK 信号输出到计数器部40。时钟产生部3使用振荡器。

对条形码数据值用的计数器部40输入从光学读取部2输出的代码读取数 据D2以及从时钟产生部3输出的CLK信号,该条形码数据值用的计数器部40 基于该CLK信号对代码读取数据D2进行计数,将代码读取数据D2转换为表 示包含白色部分的空白和黑色部分的条的元素的宽度的计数数据D4(条形码 数据值:数值)。

计数器部40连接有m级数据缓存区5、x倍器7以及计数数据值保存部30。 m级数据缓存区5将从计数器部40输出的计数数据D4分成m级(m是任意的整 数)进行暂时保存。根据条形码符号1的打印状态来任意设定m级。m级数据 缓存区5由触发电路、存储器等存储电路构成。

当从计数数据D4检索起始空白时,x倍器7预先设定表示是计数数据D4 的几倍的“x”,进行该x倍的运算并输出x倍数据D7。x倍器7由将计数数据D 4变成x倍的运算电路构成。CPU33与条形码符号1的打印状态相对应地来对 x倍器7设定将计数数据D4变成几倍。

m级数据缓存区5连接有选择器部6。选择器部6从被暂时保存于m级数据 缓存区5的m级的计数数据D4中选择作为比较对象的数据。选择器部6受到C PU33等的控制,从分为m级的计数数据D4中选择对哪个计数数据D4进行比 较。

CPU33根据条形码符号1的打印状态、打印污迹、由外界因素等导致的 污迹等的状态来对选择器部6设定选择m级数据缓存区5中的几级(k级)之前 的计数数据D4来作为比较对象。在该例中,进行预先设定,以将从m级数据 缓存区5输出的计数数据D4比当前从计数器部40输出的计数数据D4的值的 几倍还大的计数数据作为起始空白候选。

上述选择器部6和x倍器7与比较器8相连接。比较器8将由选择器部6选择 出的m级数据缓存区5中的k级之前的各计数数据D4与从x倍器7输出的x倍数 据D7进行比较。在根据比较结果来自x倍器7的x倍数据D7小时,判定为存在 起始空白候选,产生起始空白候选检索标志(下面称为SMF数据D9)。SMF数 据D9被输出到起始空白保存部9。

比较器8连接有起始空白保存部9。起始空白保存部9构成为具有触发电 路那样的存储功能。在起始空白保存部9中使从比较器8输出的SMF数据D9 与此时作为比较对象的计数数据值=条形码数据值D30相对应地进行保存。用 于判断利用哪一个计数数据D4作为起始空白候选。在条形码符号1中的条的 前面存在某种固定以上的宽度的白条时产生起始空白候选。

计数数据值保存部30将从计数器部40依次输出的计数数据D4全部按时 间序列进行保存。计数数据值保存部30由触发电路、DRAM等之类的存储电 路构成。起始空白保存部9和计数数据值保存部30连接有接口部11。

接口部11将从起始空白保存部9读出的SMF数据D9、从计数数据值保存 部30读出的各字符的条形码数据值D30输入到CPU33。接口部11连接有解码 缓存区25,来保存从CPU33输出的条形码数据D12。

解码缓存区25还对从计数数据值保存部30输出的各字符的条形码数据 值D30的运算途中的数据进行保存。另外,接口部11连接有输出端子OUT, 对输出端子OUT输出解码处理后的条形码数据D12。条形码数据D12例如从 解码缓存区25经由接口部11被读出到输出端子OUT。

图15的(A)~图15的(E)是表示现有例所涉及的两个相加数据的计算例的 说明图。图15的(A)所示的CLK信号从图14所示的时钟产生部3被输出到计数 器部40。图15的(B)所示的条形码符号1例如是CODE128标准。根据CODE 128标准,图15的(B)所示的1个字符由3个黑色部分的条(1)、(3)、(5)和3个白 色部分的空白(2)、(4)、(6)构成。1个字符的总宽度由11个模块构成。该字符 C1的黑色部分的条(1)由4个模块组成,条(3)和条(5)分别由1个模块组成。白 色部分的空白(2)由1个模块组成,空白(4)和(6)分别由两个模块组成。

基于从时钟产生部3输出的CLK信号对从图14所示的光学读取部2输出 的代码读取数据D2进行采样,基于该CLK信号对代码读取数据D2进行计数, 将代码读取数据D2转换为表示包含白色部分的空白和黑色部分的条的元素 的宽度的计数数据D4,由此获得图15的(C)所示的条形码数据值D30。

图15的(D)所示的W11是字符C1的黑色部分的条(1)的宽度。W12是继条 (1)之后的空白(2)的宽度。W13是继字符C1的空白(2)之后的条(3)的宽度。W1 4是继字符C1的条(3)之后的空白(4)的宽度。W15是继空白(4)之后的条(5)的宽 度。W16是继字符C1的条(5)之后的空白(6)的宽度。表示上述6种宽度的数据 构成1个字符的条形码数据值D30。

图15的(E)所示的W21是通过CPU33将字符C1的条(1)和空白(2)各自相 加而得到的宽度(以下记为条(1)+空白(2))。表示条(1)+空白(2)的相加宽度的 计数数据值构成宽度W21数据。W22是通过CPU33将继字符C1的条(1)之后 的空白(2)和条(3)各自相加而得到的宽度。表示空白(2)+条(3)的相加宽度的计 数数据值构成宽度W22数据。

W23是通过CPU33将继字符C1的空白(2)之后的条(3)和空白(4)各自相 加而得到的宽度。表示条(3)+空白(4)的相加宽度的计数数据值构成宽度W23 数据。W24是通过CPU33将继字符C1的条(3)之后的空白(4)和条(5)各自相加 而得到的宽度。表示空白(4)+条(5)的相加宽度的计数数据值构成宽度W24数 据。W25是通过CPU33将继字符C1的空白(4)之后的条(5)和空白(6)各自相加 而得到的宽度。表示条(5)+空白(6)的相加宽度的计数数据值构成宽度W25数 据。上述5种宽度W21数据~宽度W25数据是将1个字符中的两个相加方式的 数据,构成条形码数据值D30。

图16和图17是表示现有例所涉及的难读字符的解码例(图中的1、2)的流 程图。列举如下情况作为例子:在光学信息读取装置20中,读取基于CODE 128标准的条形码符号1,检索其起始空白,并且通过两个相加方式对继起始 空白之后的字符进行解码处理并输出条形码数据D12。将这种情况下的条形 码符号1的条和空白的各元素的误差允许度(最大误差范围)例如设定为±0.5 个模块。

将此作为解码条件,在图16所示的流程图的步骤ST81中CPU33检索起 始空白。此时,光学读取部2读取条形码符号1并产生代码读取数据D2。代码 读取数据D2从光学读取部2被输出到计数器部40。时钟产生部3将规定频率的 采样用的CLK信号输出到计数器部40。

对计数器部40输入从光学读取部2输出的代码读取数据D2,并且对计数 器部40输入从时钟产生部3输出的CLK信号,该计数器部40基于CLK信号对 代码读取数据D2进行计数,将代码读取数据D2转换为表示包含白色部分的 空白和黑色部分的条的元素的两个相加宽度的计数数据D4。计数数据D4成 为表示条形码符号1中的各条(黑色部分)的宽度和空白(白色部分)的宽度的 数值数据列。计数数据D4被保存到计数数据值保存部30。

m级数据缓存区5将从计数器部40输出的计数数据D4分为m级(m为任意 的整数)进行暂时保存。根据条形码符号1的打印状态任意设定m级。x倍器7 当基于计数数据D4检索到起始空白时,预先设定表示将计数数据D4变成几 倍的“x”,进行该x倍的运算并输出x倍数据D7。

选择器部6受到CPU33的选择控制,从被暂时保存到m级数据缓存区5 的m级的计数数据D4中选择作为比较对象的数据。比较器8将由选择器部6选 择出的m级数据缓存区5中的k级之前的各计数数据D4与从x倍器7输出的x倍 数据D7进行比较。

当根据比较结果来自x倍器7的x倍数据D7小时,判定为存在起始空白候 选,产生起始空白候选检索标志(以下称为SMF数据D9)。SMF数据D9被输出 到起始空白保存部9。在起始空白保存部9中使从比较器8输出的SMF数据D9 与此时作为比较对象的计数数据值=D10相对应地进行保存。

在步骤ST82中CPU33提取1个字符量的宽度数据(6个)。根据图15所示 的字符C1,通过计数器部40对黑色部分的条(1)的宽度W11进行计数,其计数 数据值为宽度W11数据。继条(1)之后的白色部分的空白(2)的宽度W12也通过 计数器部40进行计数,其计数数据值为宽度W12数据。继空白(2)之后的条(3) 的宽度W13通过计数器部40进行计数,其计数数据值为宽度W13数据。

继该条(3)之后的空白(4)的宽度W14也通过计数器部40进行计数,其计 数数据值为宽度W14数据。继空白(4)之后的条(5)的宽度W15通过计数器部4 0进行计数,其计数数据值为宽度W15数据。继条(5)之后的空白(6)的宽度W1 6也通过计数器部40进行计数,其计数数据值为宽度W16数据。上述6种宽度 W11数据~宽度W16数据构成条形码数据值D30。条形码数据值D30经由接口 部11被输出到CPU23。

在步骤ST83中CPU33计算字符C1的1个模块宽度。在该例中,CPU33 将1个字符量的6个宽度W11数据~宽度W16数据的条形码数据值D30换算为 字符的模块数并求出两个相加模式的模块数。如图15的(E)所示,从计数器部 40的计数数据值起将5种宽度W21数据~宽度W25数据依次输出到CPU33。

例如,对CPU33输入宽度W21数据,求出将字符C1的条(1)与空白(2)相 加而得到的相加宽度W21的模块数。关于模块数,计算出相加宽度W21相对 于整个字符宽度=11个模块的比率、例如为2.4。在这种情况下,关于相加宽 度W21的模块数,为了使条、空白等各元素的最大误差为0.5以内,将该模块 数四舍五入而成为最接近的整数。例如,在W21的模块数为2.4的情况下,W 21的模块数为“2”。在模块数为2.6的情况下,W21的模块数为“3”。

在步骤ST84中,CPU33将1个字符量的条形码数据值D30转换为两个相 加模式。例如,图15的(E)所示的表示相加宽度W21的计数数据值为宽度W2 1数据,该相加宽度W21是通过CPU33将字符C1的条(1)和空白(2)各自相加 而得到的。表示相加宽度W22的计数数据值为宽度W22数据,该相加宽度W 22是通过CPU33将继字符C1的条(1)之后的空白(2)和条(3)各自相加而得到 的。

表示相加宽度W23的计数数据值为宽度W23数据,该相加宽度W23是通 过CPU33将继字符C1的空白(2)之后的条(3)和空白(4)各自相加而得到的。表 示相加宽度W24的计数数据值为宽度W24数据,该相加宽度W24是通过CPU 33将继字符C1的条(3)之后的空白(4)和条(5)各自相加而得到的。表示相加宽 度W25的计数数据值为宽度W25数据,该相加宽度W25是通过CPU33将继字 符C1的空白(4)之后的条(5)和空白(6)各自相加而得到的。

之后,在步骤ST85中CPU33首先检索转换后的两个相加模式一致的字 符。在该例中,基于从图14所示的计数器部40输出的条形码数据值D30,CP U33与5种宽度W21数据~宽度W25数据(两个相加数据)相关地首先检索转 换得到的模块值与期待值字符的理论值一致的字符。在现有方式中,在该阶 段决定字符。

在步骤ST86中CPU33基于是否存在一致的字符来分支控制。在存在一 致的字符的情况下,在步骤ST87中将两个相加模式一致的字符设为解码结 果。之后,转移到图17所示的步骤ST88。

对于在上述步骤ST87中被设为解码结果的字符,在步骤ST88中,CPU 33基于是否为紧接在空白后的字符来分支控制。在被设为解码结果的字符不 是紧接在空白后的字符的情况下,转移到步骤ST89,CPU33基于解码结果 是否为停止字符来分支控制。

在解码结果不是停止字符的情况下,转移到步骤ST90,CPU33执行检 错检测(奇偶校验),并基于校验码是否正确来分支控制。在校验码正确的情 况下,在步骤ST91中CPU33完成读取,输出解码缓存区25的条形码数据D1 2,将解码缓存区25清除(正常结束)。之后,转移到步骤ST95。

此外,在步骤ST88中为紧接在空白后的字符的情况下,转移到步骤ST9 2,CPU33基于解码结果是否为起始字符来分支控制。在上述步骤ST89中解 码结果为停止字符的情况下以及在步骤ST92中解码结果为起始字符的情况 下,转移到图16所示的步骤ST83。在步骤ST83中CPU33执行下一个字符(6 个之后的条形码数据值D30)的解码处理。之后,返回到步骤ST81。

另外,在图16所示的步骤ST86中不存在一致的字符的情况下、在图17 所示的步骤ST92中解码结果不是起始字符的情况下以及在步骤ST90中校验 码错误的情况下,转移到步骤ST94,CPU33执行读取检错处理。在读取检 错处理中检索下一个空白等。

之后,转移到步骤ST95,CPU33对结束进行判断。例如对该光学信息 读取装置20检测读取结束指令,在检测到读取结束指令的情况下,结束条形 码符号1的读取控制。在没有检测到读取结束指令的情况下,为了继续进行 条形码符号1的读取控制,返回到步骤ST81来反复进行上述内容。

专利文献1:日本专利4555952号公报(第4页图1)

发明内容

发明要解决的问题

另外,根据现有例所涉及的光学信息读取装置20,来生成在通过针对如 在专利文献1中所看到的条形码符号读取装置的结构与1个字符相关地导入 两个宽度相加方式而能够对难读字符进行解码的光学信息读取装置的情况 下,存在如下问题。

i.在现有方式的光学信息读取装置20中,在字符模式计算时,将包含条 和空白的各元素的误差允许度设定在±0.5模块以内,将1个字符的6个宽度W1 1数据~宽度W16数据的条形码数据值D30换算为字符的模块数,并求出两个 相加模式的模块数。而且,为了使条、空白等各元素的最大误差为0.5以内, 将两个相加模式的模块数四舍五入而成为最接近的整数。

因而,在相加宽度W21的字符的模块数的计数值为2.4的情况下,尽管原 本作为整数的候选为“2”和“3”,但作为将模块数四舍五入而成为最接近 的整数,模块数却成为“2”(参照步骤ST83)。

顺便说一下,在如作为期待值字符,模块数为“3”,而由于打印技术、 粘贴技术等使构成条形码符号的条、空白中存在缺失、瑕疵等从而导致模块 数的计数值为2.4的情况下,存在以下问题:结果是介入了±1.0的误差,不能 准确地读取条形码符号。在存在误差超过±0.5模块的元素的情况下,成为读 取错误(参照步骤ST94)。

ii.另外,在字符模式检索时,针对5种宽度W21数据~宽度W25数据(两个 相加数据)检索一致的字符,但包含误差超过±0.5模块的元素的字符被从检索 对象中排除。因而,假设以下情况:在步骤ST83中将包括由于四舍五入而含 有误差的字符在内的字符决定为解码结果。其结果是,根据现有方式的条形 码读取方法存在以下问题:在条、空白等的元素存在瑕疵、模糊不清的情况 下,会误读条形码,难以准确地输出条形码数据。

用于解决问题的方案

为了解决上述问题,本发明第一方面所述的光学信息读取装置的特征在 于,具备:运算单元,其对在1个字符内包含相邻的条和空白的n(n≥2)个元 素的宽度进行加法运算来分别求出2~n个相加元素宽度,将上述2~n个相加元 素宽度分别换算为1个字符的模块数并求出该2~n个相加元素宽度的模块数; 提取单元,其锁定由上述运算单元求出的上述2~n个相加元素宽度的各模块 数为误差1以内的整数的对象字符来提取候选字符;以及检索单元,其将由 上述提取单元提取出的各上述2~n个相加元素宽度的模块数的候选字符与用 于评价该候选字符的期待值字符进行比较,检索与该候选字符相关性最强的 期待值字符。

根据本发明第一方面所涉及的光学信息读取装置,在读取条形码符号并 输出其解码结果的情况下,运算单元对在1个字符内包含相邻的条和空白的n (n≥2)个元素的宽度进行加法运算来分别求出2~n个相加元素宽度,将该2~n 个相加元素宽度分别换算为1个字符的模块数并求出该2~n个相加元素宽度 的模块数。提取单元提取由运算单元求出的2~n个相加元素宽度的各模块数 为误差1以内的整数的字符来作为候选字符。以此为前提,检索单元将由提 取单元提取出的各2~n个相加元素宽度的模块数的候选字符与用于评价该候 选字符的期待值字符进行比较,检索与该候选字符相关性最强的期待值字 符。

通过该检索,能够输出与从多个候选字符提取出的候选字符相关性最强 的期待值字符的条形码数据来作为读取该条形码符号时的解码结果,因此与 现有方式的条形码读取方法相比能够大幅度防止条形码的误读取。

本发明第二方面所述的光学信息读取装置的特征在于,在本发明第一方 面中,上述运算单元在分别求取该对象字符的上述2~n个相加元素宽度时, 将上述对象字符的前后的字符的包含条和空白的元素的宽度相加。

本发明第三方面所述的光学信息读取装置的特征在于,在本发明第一方 面中,上述提取单元在分别求取该对象字符的上述2~n个相加元素宽度时, 提取上述1个字符的n个宽度数据和该对象字符的前后的1个以上的宽度数 据。

本发明第四方面所述的光学信息读取装置的特征在于,在本发明第四方 面中,上述检索单元针对从上述提取单元得到的多个上述对象字符的各上述 2~n个相加元素宽度检索与两种上述对象字符中的某一个一致的对象字符, 并锁定上述候选字符的数量。

本发明第五方面所述的光学信息读取装置的特征在于,在本发明第五方 面中,上述检索单元对上述候选字符的模块数的实测值与上述期待值字符的 模块数的理想值之间的误差进行计算,检索与将上述误差求和而得到的误差 值最小的上述候选字符相关性最强的期待值字符。

本发明第六方面所述的光学信息读取装置的特征在于,在本发明第五方 面中,上述检索单元检测与上述误差值最小的上述候选字符一致的上述期待 值字符。

本发明第七方面所述的光学信息读取装置的特征在于,在本发明第一方 面中,还具备比较单元,该比较单元将对在上述1个字符内包含相邻的条和 空白的n(n≥2)个元素的宽度进行加法运算而得到的合计值与表示上述1个字 符的总宽度的总宽度值进行比较,基于比较结果判断该1个字符的宽度数据 是否恰当。

本发明第八方面所述的光学信息读取方法的特征在于,光学信息读取装 置执行以下步骤:将对在1个字符内包含相邻的条和空白的n(n≥2)个元素的 宽度进行加法运算来分别求出2~n个相加元素宽度;将所求出的上述2~n个相 加元素宽度分别换算为1个字符的模块数并求出该2~n个相加元素宽度的模 块数;锁定所求出的上述2~n个相加元素宽度的各模块数为误差1以内的整数 的对象字符来提取候选字符;以及将提取出的各上述2~n个相加元素宽度的 模块数的候选字符与用于评价该候选字符的期待值字符进行比较,检索与该 候选字符相关性最强的期待值字符。

本发明第九方面所述的光学信息读取方法的特征在于,在本发明第八方 面中,当分别求取该对象字符的上述2~n个相加元素宽度时,将上述对象字 符的前后的字符的包含条和空白的元素的宽度相加。

本发明第十方面所述的光学信息读取方法的特征在于,在本发明第九方 面中,当分别求取该对象字符的上述2~n个相加元素宽度时,提取上述1个字 符的n个宽度数据和该对象字符的前后的1个以上的宽度数据。

本发明第十一方面所述的光学信息读取方法的特征在于,在本发明第十 方面中,针对所提取出的多个上述对象字符的各上述2~n个相加元素宽度检 索与两种上述对象字符中的某一个一致的对象字符,并上述候选字符的数 量。

本发明第十二方面所述的光学信息读取方法的特征在于,在本发明第八 方面中,对上述候选字符的模块数的实测值与上述期待值字符的模块数的理 想值之间的误差进行计算,提取与将上述误差求和得到的误差值最小的上述 候选字符相关性最强的期待值字符。

本发明第十三方面所述的光学信息读取方法的特征在于,在本发明第十 二方面中,检测与上述误差值最小的上述候选字符一致的上述期待值字符。

本发明第十四方面所述的光学信息读取方法的特征在于,在本发明第八 方面中,将对在上述1个字符内包含相邻的条和空白的n(n≥2)个元素的宽度 进行加法运算而得到的合计值与表示上述1个字符的总宽度的总宽度值进行 比较,基于比较结果来辨别该1个字符的宽度数据是否恰当。

本发明第十五方面所述的计算机可读程序的特征在于,使用于执行本发 明第八~十四方面所述的光学信息读取方法的指令进行组合。

本发明第十六方面所述的计算机可读记录介质的特征在于,描述了用于 执行本发明第八~十四方面所述的光学信息读取方法的程序。

发明的效果

根据本发明的第一方面所述的光学信息读取装置以及本发明的第八方 面所述的光学信息读取方法,具备检索单元,该检索单元锁定2~n个相加元 素宽度的各模块数为误差1以内的整数的对象字符来提取候选字符,在此将 提取出的各个2~n个相加元素宽度的模块数的候选字符与用于评价该候选字 符的期待值字符进行比较,检索与该候选字符相关性最强的期待值字符。

根据该结构,能够输出与从多个候选字符提取出的候选字符相关性最强 的期待值字符的条形码数据来作为读取该条形码符号时的解码结果,因此与 现有方式的条形码读取方法相比能够大幅度防止条形码的误读取。

根据本发明的第二方面所述的光学信息读取装置以及本发明的第九方 面所述的光学信息读取方法,当分别求取该对象字符的2~n个相加元素宽度 时,将对象字符前后的字符的包含条和空白的元素的宽度相加,因此能够输 出与从多个候选字符提取出的候选字符相关性最强的期待值字符的条形码 数据来作为读取该条形码符号时的解码结果。

根据本发明的第三方面所述的光学信息读取装置以及本发明的第十方 面所述的光学信息读取方法,当分别求取该对象字符的上述2~n个相加元素 宽度时,提取上述1个字符的n个宽度数据和该对象字符的前后的1个以上的 宽度数据,因此能够输出与从多个候选字符提取出的候选字符相关性最强的 期待值字符的条形码数据来作为读取该条形码符号时的解码结果。

另外,根据本发明的第三方面所述的光学信息读取装置以及本发明的第 十方面所述的光学信息读取方法,提取1个字符的n个宽度数据和该字符的前 后的1个以上的宽度数据,因此与现有方法相比能够提取出更多的2~n个相加 元素宽度的各模块数为误差1以内的整数的候选字符,能够输出多个解码结 果的候选字符,使得不仅将与第一个相关性强的候选字符设为解码结果,还 使与第二个、第三个···相关性强的候选字符成为解码结果的概率变高。

根据本发明的第四方面所述的光学信息读取装置以及本发明的第十一 方面所述的光学信息读取方法,针对所提取出的多个上述对象字符的各自的 上述2~n个相加元素宽度检索与两种上述对象字符中的某一个一致的对象字 符,并锁定候选字符数,因此与现有方式的条形码读取方法相比能够大幅度 防止条形码的误读取。

根据本发明的第五方面所述的光学信息读取装置以及本发明的第十二 方面所述的光学信息读取方法,检索与误差值最小的候选字符相关性最强的 期待值字符,因此与现有方式的条形码读取方法相比能够大幅度防止条形码 的误读取。

根据本发明的第六方面所述的光学信息读取装置以及本发明的第十三 方面所述的光学信息读取方法,检测与误差值最小的候选字符一致的期待值 字符,因此与现有方式的条形码读取方法相比能够大幅度防止条形码的误读 取。

根据本发明的第七方面所述的光学信息读取装置以及本发明的第十四 方面所述的光学信息读取方法,能够基于该1个字符的宽度数据是否恰当的 辨别结果来判断字符的条的消失、分割等。能够将多个扫描的解码结果进行 组合,即使针对污迹、模糊严重的条形码也能够进行读取。

根据本发明的第十五方面所述的计算机可读程序以及本发明的第十六 方面所述的记录介质,将用于执行本发明所涉及的光学信息读取方法的指令 进行组合,因此能够输出与从多个候选字符提取出的候选字符相关性最强的 期待值字符的条形码数据来作为读取该条形码符号时的解码结果。因而,与 现有方式的条形码读取方法相比能够大幅度防止条形码的误读取。

附图说明

图1是表示作为本发明所涉及的实施方式的条形码符号读取装置100的 结构例的框图。

图2的(A)~(G)是表示第一实施例所涉及的1个数据、2~6个相加数据的计 算例的说明图。

图3是表示第一实施例所涉及的难读字符的解码例(之一)的流程图。

图4是表示难读字符的解码例(之二)的流程图。

图5的(A)~(G)是表示第一实施例所涉及的1个数据、2个~6个相加数据的 其它计算例(之一)的说明图。

图6的(A)~(G)是表示第一实施例所涉及的1个数据、2个~6个相加数据的 其它计算例(之二)的说明图。

图7A是表示CODE128的条形码符号例、其缺损例及其重建例的说明 图。

图7B是表示CODE128的条形码符号例、其缺损例及其重建例的说明 图。

图7C是表示CODE128的条形码符号例、其缺损例及其重建例的说明 图。

图8是表示第二实施例所涉及的难读字符的解码例(之一)的流程图。

图9是表示难读字符的解码例(之二)的流程图。

图10是表示难读字符的解码例(之三)的流程图。

图11是表示第三实施例所涉及的难读字符的解码例(之一)的流程图。

图12是表示难读字符的解码例(之二)的流程图。

图13是表示难读字符的解码例(之三)的流程图。

图14是表示现有例所涉及的光学信息读取装置20的结构例的框图。

图15的(A)~(D)是表示两个相加数据的计算例的说明图。

图16是表示难读字符的解码例(之一)的流程图。

图17是表示难读字符的解码例(之二)的流程图。

具体实施方式

本发明的目的在于提供与现有方式的条形码读取方法相比能够防止条 形码的误读取,并且即使在元素存在瑕疵、模糊不清的情况下也能够输出正 确的条形码数据的光学信息读取装置、光学信息读取方法、计算机可读程序 以及记录介质。

下面,一边参照附图一边说明本发明所涉及的光学信息读取装置、光学 信息读取方法、计算机可读程序以及记录介质。图1所示的条形码符号读取 装置100构成光学信息读取装置的一例,读取条形码符号1,检索其起始空白, 并且对继起始空白之后的字符进行解码处理并输出条形码数据D12。

条形码符号读取装置100构成为具有光学读取部2、时钟产生部3、计数 器部4、m级数据缓存区5、x倍器7、选择器部6、比较器8、起始空白保存部9、 宽度数据保存部10、接口部11、微处理器12以及解码缓存区25。此外,名称 和标记与现有例相同的的部件具有相同的功能,因此省略其说明。

对计数器部4输入从光学读取部2输出的代码读取数据D2,并且对计数器 部4输入从时钟产生部3输出的CLK信号,该计数器部4基于该CLK信号对代 码读取数据D2进行计数,将代码读取数据D2转换为表示包含白色部分的空 白和黑色部分的条的元素的1个宽度、n个相加宽度的计数数据D4(条形码数 据值:数值)。

计数器部4连接有宽度数据保存部10。宽度数据保存部10将从计数器部4 依次输出的与1个宽度、n个相加宽度的对象字符有关的计数数据D4全部按时 间序列进行保存。宽度数据保存部10由触发电路、DRAM等之类的存储电路 构成。宽度数据保存部10将与1个宽度、n个相加宽度的对象字符有关的计数 数据D4作为各字符的宽度数据D10(对应于条形码数据值D30)进行输出。起 始空白保存部9和宽度数据保存部10与接口部11相连接。

微处理器12根据经由接口部11输入的SMF数据D9、各字符的宽度数据D 10执行条形码的识别处理。微处理器12构成包括以下部件的微型计算机:程 序保存用的只读存储器(Read Only Memory:以下称为ROM21),工作存储 器用的随时信息的可写入读出的存储器(Random Access Memory:以下称为 RAM22)、中央处理单元(Central Processing Unit:以下称为CPU23)以及期 待值保存部24。

ROM21构成记录介质的一例。ROM21中保存有程序数据Dp,该程序 数据Dp是计算机可读程序,其将用于执行本发明所涉及的光学信息读取方法 的指令进行组合而得到的。其内容是由条形码符号读取装置100执行以下各 步骤的程序:将对在1个字符内包含相邻的条和空白的n(n≥2)个元素的宽度 进行加法运算来分别求出2~n个相加元素宽度的步骤;将所求出的2~n个相加 元素宽度分别换算为1个字符的模块数并求出该2~n个相加元素宽度的模块 数的步骤;在此锁定所求出的2~n个相加元素宽度的各模块数为误差1以内的 整数的对象字符来提取候选字符的步骤;以及将提取出的各的2~n个相加元 素宽度的模块数的候选字符与用于评价该候选字符的期待值字符进行比较, 检索与该候选字符相关性最强的期待值字符的步骤。在此所谓候选字符,是 指锁定对象字符而得到的字符。程序数据Dp中还含有系统启动用的系统程序 数据。

在RAM22中除了保存用于控制条形码符号读取装置100的系统程序以 外,还临时保存用于执行光学信息读取方法的运算、执行提取、检索、比较 等控制时的控制信息。例如,当接通电源时,检测到电源接通信息的CPU2 3从ROM21读出系统程序并展开到RAM22,启动系统,并对该条形码符号 读取装置100整体进行控制。

在该例中,CPU23至少具有运算部23a、提取部23b、比较部23c、检索 部23d等的四种功能。运算部23a构成运算单元的一例,被输入各对象字符的 宽度数据D10,基于宽度数据D10将对在1个字符内包含相邻的条和空白的n(n ≥2)个元素的宽度进行加法运算来分别求出2~n个相加元素宽度。运算部23a 将所求出的2~n个相加元素宽度分别换算为1个字符的模块数,并求出该2~n 个相加元素宽度的模块数。

提取部23b锁定由运算部23a求出的2~n个相加元素宽度(以下也称为2~n 个相加模式)的各模块数为误差1以内的整数的对象字符来提取候选字符。当 分别求取2~n个相加模式时,提取部23b提取1个字符的n个宽度数据D10和对 象字符前后的1个以上的宽度数据D10。

在该例中,将对象字符的提取基准的范围从现有方式的误差0.5以内的整 数扩大到误差1以内的整数,提取1个字符量的n个宽度数据D10和对象字符前 后的1个以上的宽度数据D10。因而,与现有方法相比能够提取更多的2~n个 相加元素宽度的各模块数为误差1以内的整数的对象字符。而且,能够输出 多个解码结果的候选字符,使得不仅将与相关性第一强的候选字符设为解码 结果,还使相关性第二强、第三强···的候选字符成为解码结果的概率变高。 由此,与现有方式的条形码读取方法相比能够大幅度防止条形码的误读取。

比较部23c将由提取部23b提取出的各2~n个相加元素宽度的模块数的候 选字符与用于评价该候选字符的期待值字符(理论值)进行比较。比较部23c 具有判断功能,将对在1个字符内包含相邻的条和空白的n(n≥2)个元素的宽 度进行加法运算而得到的合计值与表示1个字符的总宽度的总宽度值进行比 较,基于比较结果来判断该1个字符的宽度数据D10是否恰当。

能够通过该判断来判断字符的条的消失、分割等。另外,能够将多个扫 描的解码结果进行组合,即使针对污迹、模糊严重的条形码也能够进行读取。 另外,能够基于条的消失、分割等的判断结果锁定对象字符,从而能够实现 计算量的减少以及处理时间的高速化。

检索部23d检索部23d检索与候选字符相关性最强的期待值字符。例如当 上述运算部23a计算出候选字符的模块数的实测值与期待值字符的模块数的 理想值之间的误差时,检索部23d检索与误差值最小的候选字符相关性最强 的期待值字符,该误差值是将由运算部23a计算出的误差求和而得到的。在 该例中,检索与误差值最小的候选字符相关性最强的期待值字符,因此与现 有方式的条形码读取方法相比能够大幅度防止条形码的误读取。

在微处理器12中连接有期待值保存部24。期待值保存部24中保存有期待 值字符(理论值)。期待值字符是构成CODE128标准的字符的各元素的模块 数(理论值)。由此,构成条形码符号读取装置100。CPU23内的运算部23a、 提取部23b、比较部23c以及检索部23d既可以用软件创建,也可以用硬件创 建。

实施例1

接着,参照图2的(A)~图2的(G)对第一实施例所涉及的1个数据、2~6个 相加数据的计算例进行说明。在该实施例中,对CODE128标准的条形码符 号1进行说明。根据CODE128标准,图2的(A)所示的1个字符由3个黑色部分 的条(1)、(3)、(5)和3个白色部分的空白(2)、(4)、(6)构成。图中,C1是对象 字符,C0是对象字符C1的前一个字符,C2是对象字符C1的后一个字符。

1个字符的总宽度由11个模块构成。在该例中,黑色部分的条(1)由4个模 块组成,条(3)和条(5)分别由1个模块组成。白色部分的空白(2)由4个模块组 成,空白(4)和(6)分别由两个模块组成。

起始编码为三种,分别表示103种编码模式。在CODE128标准下能够表 达ASCII码(美国信息交换标准代码)128字符。如果使用起始编码C,则能够 用1个字符表达两位数字,能够以非常高的打印密度来表达。CODE128的条 形码符号1由8个字符构成(参照图5的(A))。用于条的模块数的和为偶数奇偶 性,用于空白的模块数的和为奇数奇偶性。具有利用了偶数奇偶性和奇数奇 偶性的自我功能。

图2的(B)所示的W11是对象字符C1的黑色部分的条(1)的宽度。通过计数 器部4对条(1)的宽度进行计算,其计数数据值构成宽度W11数据。W12是继 条(1)之后的空白(2)的宽度。空白(2)的宽度也通过计数器部4进行计算,其计 数数据值构成宽度W12数据。W13是继对象字符C1的空白(2)之后的条(3)的 宽度。通过计数器部4对条(3)的宽度进行计算,其计数数据值构成宽度W13 数据。

W14是继对象字符C1的条(3)之后的空白(4)的宽度。空白(4)的宽度也通 过计数器部4进行计算,其计数数据值构成宽度W14数据。W15是继空白(4) 之后的条(5)的宽度。通过计数器部4对条(5)的宽度进行计算,其计数数据值 构成宽度W15数据。W16是继对象字符C1的条(5)之后的空白(6)的宽度。空 白(6)的宽度也通过计数器部4进行计算,其计数数据值构成宽度W16数据。 上述6种宽度W11数据~宽度W16数据是1个字符的1个数据,构成宽度数据D1 0。

图2的(C)所示的W21是通过运算部23a将对象字符C1的条(1)和空白(2)各 自相加而得到的宽度(以下记为条(1)+空白(2))。表示条(1)+空白(2)的相加宽 度的计数数据值构成宽度W21数据。W22是通过运算部23a将继对象字符C1 的条(1)之后的空白(2)和条(3)各自相加而得到的宽度。表示空白(2)+条(3)的 相加宽度的计数数据值构成宽度W22数据。

W23是通过运算部23a将继对象字符C1的空白(2)之后的条(3)和空白(4) 各自相加而得到的宽度。表示条(3)+空白(4)的相加宽度的计数数据值构成宽 度W23数据。W24是通过运算部23a将继对象字符C1的条(3)之后的空白(4)和 条(5)各自相加而得到的宽度。表示空白(4)+条(5)的相加宽度的计数数据值构 成宽度W24数据。W25是通过运算部23a将继对象字符C1的空白(4)之后的条 (5)和空白(6)各自相加而得到的宽度。表示条(5)+空白(6)的相加宽度的计数数 据值构成宽度W25数据。上述5种宽度W21数据~宽度W25数据是1个字符的 两个相加数据,构成宽度数据D10。

图2的(D)所示的W31是通过运算部23a将对象字符C1的条(1)、空白(2)以 及条(3)各自相加而得到的宽度。表示条(1)+空白(2)+条(3)的相加宽度的计数 数据值构成宽度W31数据。W32是通过运算部23a将继对象字符C1的条(1)之 后的空白(2)、条(3)以及空白(4)各自相加而得到的宽度。表示空白(2)+条(3)+ 空白(4)的相加宽度的计数数据值构成宽度W32数据。

W33是通过运算部23a将继对象字符C1的空白(2)之后的条(3)、空白(4) 以及条(5)各自相加而得到的宽度。表示条(3)+空白(4)+条(5)的相加宽度的计 数数据值构成宽度W33数据。W34是通过运算部23a将继对象字符C1的条(3) 之后的空白(4)、条(5)以及空白(6)各自相加而得到的宽度。表示空白(4)+条(5) +空白(6)的相加宽度的计数数据值构成宽度W34数据。上述4种宽度W31数据 ~宽度W34数据是1个字符的3个相加数据,构成宽度数据D10。

图2的(E)所示的W41是通过运算部23a将对象字符C1的条(1)、空白(2)、 条(3)以及空白(4)各自相加而得到的宽度。表示条(1)+空白(2)+条(3)+空白(4) 的相加宽度的计数数据值构成宽度W41数据。W42是通过运算部23a将继对 象字符C1的条(1)之后的空白(2)、条(3)、空白(4)以及条(5)各自相加而得到的 宽度。表示空白(2)+条(3)+空白(4)+条(5)的相加宽度的计数数据值构成宽度W 42数据。

W43是通过运算部23a将继对象字符C1的空白(2)之后的条(3)、空白(4)、 条(5)以及空白(6)各自相加而得到的宽度。表示条(3)+空白(4)+条(5)+空白(6) 的相加宽度的计数数据值构成宽度W43数据。上述3种宽度W41数据~宽度W 43数据是1个字符的4个相加数据,构成宽度数据D10。

图2的(F)所示的W51是通过运算部23a将对象字符C1的条(1)、空白(2)、 条(3)、空白(4)以及条(5)各自相加而得到的宽度。表示条(1)+空白(2)+条(3)+ 空白(4)+条(5)的相加宽度的计数数据值构成宽度W51数据。

W52是通过运算部23a将继对象字符C1的条(1)之后的空白(2)、条(3)、空 白(4)、条(5)以及空白(6)各自相加而得到的宽度。表示空白(2)+条(3)+空白(4) +条(5)+空白(6)的相加宽度的计数数据值构成宽度W52数据。上述两种宽度 W51数据和宽度W52数据是1个字符的5个相加数据,构成宽度数据D10。

图2的(G)所示的W61是通过运算部23a将对象字符C1的条(1)、空白(2)、 条(3)、空白(4)、条(5)以及空白(6)各自相加而得到的宽度。表示条(1)+空白(2) +条(3)+空白(4)+条(5)+空白(6)的相加宽度的计数数据值构成宽度W61数据。 1种宽度W61数据是1个字符的6个相加数据,构成宽度数据D10。

根据从上述计数器部4输出的计数数据值,利用6种宽度W11数据~宽度 W16数据(1个数据)、5种宽度W21数据~宽度W25数据(两个相加数据)、4种宽 度W31数据~宽度W34数据(3个相加数据)、3种宽度W41数据~宽度W43数据 (4个相加数据)、两种宽度W51数据和宽度W52数据(5个相加数据)以及1种宽 度W61数据(6个相加数据)的总和来获得21种对象字符。

接着,关于本发明所涉及的光学信息读取方法,参照图3和图4对第一实 施例所涉及的难读字符的解码例进行说明。在该实施例中,列举以下情况作 为例子:读取基于CODE128标准的条形码符号1,检索其起始空白,并且对 继起始空白之后的对象字符进行解码处理并输出条形码数据D12。将这种情 况下的条形码符号1的条和空白的各元素的误差允许度(最大误差范围)设定 为±1.0模块。关于条形码符号1,对图2所示的对象字符C1进行说明(字符解码 算法)。

将此作为解码条件,首先,在图3所示的流程图的步骤ST1中,微处理器 12检索起始空白。此时,光学读取部2读取条形码符号1,产生代码读取数据 D2。代码读取数据D2从光学读取部2被输出到计数器部4。时钟产生部3将规 定频率的采样用的CLK信号输出到计数器部4。

对计数器部4输入从光学读取部2输出的代码读取数据D2,并且对计数器 部4输入从时钟产生部3输出的CLK信号,该计数器部4基于CLK信号对代码 读取数据D2进行计数,将代码读取数据D2转换为表示包含白色部分的空白 和黑色部分的条的元素的1个宽度和6个相加宽度的计数数据D4。计数数据D 4成为表示条形码符号1中的各条(黑色部分)的宽度和空白(白色部分)的宽度 的数值数据列。计数数据D4被保存到宽度数据保存部10。

m级数据缓存区5将从计数器部4输出的计数数据D4分为m级(m为任意 的整数)进行暂时保存。根据条形码符号1的打印状态任意设定m级。当基于 计数数据D4检索起始空白时,x倍器7预先设定表示是计数数据D4几倍的 “x”,进行该x倍的运算,并输出x倍数据D7。

选择器部6受到微处理器12的选择控制,从被暂时保存于m级数据缓存 区5的分为m级的计数数据D4中选择作为比较对象的数据。比较器8将由选择 器部6选择出的、m级数据缓存区5中的k级之前的各计数数据D4与从x倍器7 输出的x倍数据D7进行比较。

当根据比较结果来自x倍器7的x倍数据D7小时,判定为存在起始空白候 选,产生起始空白候选检索标志(以下称为SMF数据D9)。SMF数据D9被输出 到起始空白保存部9。使从比较器8输出的SMF数据D9与此时作为比较对象的 计数数据值=D10相对应地保存到起始空白保存部9中。

在步骤ST2中,CPU23提取1个字符的宽度数据D10(6个)及其前后各5个 宽度数据D10。根据图2的(B)所示的对象字符C1,通过计数器部4对黑色部分 的条(1)的宽度W11进行计算,其计数数据值为宽度W11数据。继条(1)之后的 白色部分的空白(2)的宽度W12也通过计数器部4进行计算,其计数数据值为 宽度W12数据。继空白(2)之后的条(3)的宽度W13通过计数器部4进行计算, 其计数数据值为宽度W13数据。

继该条(3)之后的空白(4)的宽度W14也通过计数器部4进行计算,其计数 数据值为宽度W14数据。继空白(4)之后的条(5)的宽度W15通过计数器部4进 行计算,其计数数据值为宽度W15数据。继条(5)之后的空白(6)的宽度W16 也通过计数器部4进行计算,其计数数据值为宽度W16数据。上述6种宽度W 11数据~宽度W16数据构成宽度数据D10。宽度数据D10经由接口部11被输出 到CPU23。

在CPU23中,对运算部23a输入各对象字符的宽度数据D10,该运算部2 3a基于宽度数据D10将对在1个字符内包含相邻的条和空白的n(n≥2)个元素 的宽度进行加法运算来分别求出2~n个相加模式。在该例中n=6。当分别求出 2~n个相加元素宽度时,提取1个字符的6个宽度数据D10和对象字符的前后5 个宽度数据D10。

例如,通过运算部23a将图2的(C)所示的对象字符C1的条(1)和空白(2)各 自相加,表示其相加宽度W21的计数数据值为宽度W21数据。通过运算部23 a将继对象字符C1的条(1)之后的空白(2)和条(3)各自相加,表示其相加宽度W 22的计数数据值为宽度W22数据。通过运算部23a将继对象字符C1的空白(2) 之后的条(3)和空白(4)各自相加,表示其相加宽度W23的计数数据值为宽度W 23数据。

通过运算部23a将继对象字符C1的条(3)之后的空白(4)和条(5)各自相加, 表示其相加宽度W24的计数数据值为宽度W24数据。通过运算部23a将继对 象字符C1的空白(4)之后的条(5)和空白(6)各自相加,表示其相加宽度W25的 计数数据值为宽度W25数据。上述5种宽度W21数据~宽度W25数据构成宽度 数据D10。

通过运算部23a将图2的(D)所示的对象字符C1的条(1)、空白(2)以及条(3) 各自相加,表示其相加宽度W31的计数数据值为宽度W31数据。通过运算部 23a将继对象字符C1的条(1)之后的空白(2)、条(3)以及空白(4)各自相加,表示 其相加宽度W32的计数数据值为宽度W32数据。

通过运算部23a将继对象字符C1的空白(2)之后的条(3)、空白(4)以及条(5) 各自相加,表示其相加宽度W33的计数数据值为宽度W33数据。通过运算部 23a将继对象字符C1的条(3)之后的空白(4)、条(5)以及空白(6)各自相加,表示 其相加宽度W34的计数数据值为宽度W34数据。上述4种宽度W31数据~宽度 W34数据构成宽度数据D10。

通过运算部23a将图2的(E)所示的对象字符C1的条(1)、空白(2)、条(3)以 及空白(4)各自相加,表示其相加宽度W41的计数数据值为宽度W41数据。通 过运算部23a将继对象字符C1的条(1)之后的空白(2)、条(3)、空白(4)以及条(5) 各自相加,表示其相加宽度W42的计数数据值为宽度W42数据。

通过运算部23a将继对象字符C1的空白(2)之后的条(3)、空白(4)、条(5) 以及空白(6)各自相加,表示其相加宽度W43的计数数据值为宽度W43数据。 上述3种宽度W41数据~宽度W43数据构成宽度数据D10。

通过运算部23a将图2的(F)所示的对象字符C1的条(1)、空白(2)、条(3)、 空白(4)以及条(5)各自相加,表示其相加宽度W51的计数数据值为宽度W51 数据。通过运算部23a将继对象字符C1的条(1)之后的空白(2)、条(3)、空白(4)、 条(5)以及空白(6)各自相加,表示其相加宽度W52的计数数据值构成宽度W5 2数据。上述两种宽度W51数据和宽度W52数据构成宽度数据D10。

通过运算部23a将图2的(G)所示的对象字符C1的条(1)、空白(2)、条(3)、 空白(4)、条(5)以及空白(6)各自相加,表示其相加宽度W61的计数数据值为 宽度W61数据。1种宽度W61数据构成宽度数据D10。

根据从上述计数器部4输出的计数数据值,利用6种宽度W11数据~宽度 W16数据(1个数据)、5种宽度W21数据~宽度W25数据(两个相加数据)、4种宽 度W31数据~宽度W34数据(3个相加数据)、3种宽度W41数据~宽度W43数据 (4个相加数据)、两种宽度W51数据和宽度W52数据(5个相加数据)以及1种宽 度W61数据(6个相加数据)的总和来获得21种对象字符。

在步骤ST3中CPU23计算对象字符C1的1个模块宽度。在该例中,运算 部23a首先将求出的2~6个相加模式(元素宽度)分别换算为1个字符的模块数 并求出2~6个相加模式的模块数。如图2的(B)~图2的(G)所示,根据从计数器 部4输出的计数数据值,6种宽度W11数据~宽度W16数据、5种宽度W21数据 ~宽度W25数据、4种宽度W31数据~宽度W34数据、3种宽度W41数据~宽度 W43数据、两种宽度W51数据和宽度W52数据以及1种宽度W61数据被依次输 出到CPU23。

例如,运算部23a被输入宽度W21数据,求出将对象字符C1的条(1)与空 白(2)相加而得到的相加宽度W21的模块数。关于模块数,计算出相加宽度W 21相对于整个字符宽度=11个模块的比率,例如为2.4。在这种情况下,关于 相加宽度W21的模块数,锁定条、空白等各元素的最大误差为1.0以内的整数 的对象字符来提取候选字符,因此相加宽度W21的模块数为“2”或者“3”。

在该例中,将各元素的最大误差范围扩大到±1.0模块以内,因此各元素 的误差允许度能够使允许量增加到1.0以内。增加了允许量,因此能够增加获 取对象字符一致的条件。由此,能够防止条形码符号1的误读取。

在步骤ST4中,CPU23将提取出的21种宽度数据D10转换为1~6个相加 模式(元素宽度)。在该例中,6种宽度W11数据~宽度W16数据被转换为1个字 符的1个数据,作为基于1个数据的对象字符C1的被识别模式,生成1个模式。 5种宽度W21数据~宽度W25数据被转换为1个字符的两个相加数据,生成基 于两个相加数据的对象字符C1的两个相加模式(被识别模式)。4种宽度W31 数据~宽度W34数据被转换为1个字符的3个相加数据,生成基于3个相加数据 的对象字符C1的3个相加识别模式。

3种宽度W41数据~宽度W43数据被转换为1个字符的4个相加数据,生成 基于4个相加数据的对象字符C1的4个相加模式。两种宽度W51数据和宽度W 52数据被转换为1个字符的5个相加数据,生成基于5个相加数据的对象字符C 1的5个相加模式。1种宽度W61数据被转换为1个字符的6个相加数据,生成 基于6个相加数据的对象字符C1的6个相加模式。

在步骤ST5中CPU23为了锁定对象字符,对1个模式、2~6个相加模式的 所有模式检索模块数的误差为1以内的对象字符来决定候选字符。此时,在C PU23中,提取部23b锁定由运算部23a求出的1个模式、2~6个相加模式的各 模块数为误差1以内的整数的对象字符来提取候选字符。此时,提取部23b提 取由运算部23a求出的1个模式、2~6个相加模式的1个字符量的6个宽度数据D 10和对象字符的前后(6-1)个宽度数据D10。

在步骤ST6中CPU23基于是否存在一个以上的候选字符来分支控制。在 存在一个以上(多个)对象字符的情况下,在步骤ST7中对1~6个相加模式的实 测值与其理想值之间的误差进行计算,将该误差的总和最小的候选字符设为 解码结果。该误差值最小的候选字符为与期待值字符相关性最强的字符。在 该例中,能够选择总的误差最少的对象字符来作为候选字符。

此时,在CPU23中,期待值字符(理论值)从期待值保存部24被读出到C PU23的比较部23c。比较部23c将由提取部23b提取出的各2~6个相加模式(元 素宽度)的模块数的候选字符与用于评价候选字符的期待值字符(理论值)进 行比较。该比较结果被输出到检索部23d。

在检索部23d中,检索与候选字符相关性最强的期待值字符。例如,当 上述运算部23a计算出候选字符的模块数的实测值与期待值字符的模块数的 理想值之间的误差时,检索部23d对与将由运算部23a计算出的误差求和而得 到的误差值最小的候选字符相关性最强的期待值字符进行检索。在该例中, 检索与误差值最小的候选字符相关性最强的期待值字符,因此与现有方式的 条形码读取方法相比能够大幅度防止条形码的误读取。

之后的内容与现有方式的内容相同。例如,在图4所示的步骤ST8中,C PU23基于解码结果的候选字符是否为紧接在空白后的对象字符来分支控 制。在解码结果的候选字符为紧接在空白后的对象字符的情况下,转移到步 骤ST9,CPU23基于解码结果的候选字符是否为停止字符来分支控制。

在解码结果的候选字符不是停止字符的情况下,转移到步骤ST10,CP U23执行检错检测(奇偶校验),基于校验码是否正确来分支控制。在校验码 正确的情况下,完成读取,在步骤ST11中CPU23输出被设为解码结果的候 选字符的条形码数据D12。

此外,在步骤ST8中,在解码结果的候选字符不是紧接在空白后的对象 字符的情况下,CPU23将处理转移到步骤ST12,CPU23基于解码结果的候 选字符是否为起始字符来分支控制。

在上述步骤ST9中解码结果的候选字符为停止字符的情况下以及在步骤 ST12中解码结果的候选字符为起始字符的情况下,CPU23将处理转移到图3 所示的步骤ST13。在步骤ST13中,CPU23执行下一个字符(6个之后的数据) 的解码处理。之后,返回到步骤ST2。

另外,在步骤ST12中解码结果的候选字符不是起始字符的情况下以及在 步骤ST10中校验码错误的情况下,转移到步骤ST14,CPU23执行读取检错 处理。在读取检错处理中检索下一个空白等。在字符识别错误的情况下,也 可以暂时配置错误字符并生成条形码数据。

之后,转移到步骤ST15,CPU23对是否结束进行判断。例如,对该条 形码符号读取装置100检测读取结束指令,在检测到读取结束指令的情况下, 结束条形码符号1的读取控制。在没有检测到读取结束指令的情况下,为了 继续进行条形码符号1的读取控制,返回到步骤ST1,反复进行上述内容。

这样,根据第一实施例所涉及的条形码符号读取装置100,在读取条形 码符号1并输出其解码结果的情况下,运算部23a将对在1个字符内包含相邻 的条和空白的n=6(n≥2)个元素的宽度进行加法运算来分别求出2~6个相加模 式(元素宽度)。运算部23a将2~6个相加模式分别换算为1个字符的模块数并求 出该2~6个相加模式的模块数。

提取部23b锁定由运算部23a求出的2~6个相加模式的各模块数在误差1 以内的整数的对象字符来提取候选字符。将它们作为前提,检索部23d对由 提取部23b提取出的各2~6个相加模式的模块数的候选字符与用于评价该候 选字符的期待值字符进行比较,检索与该候选字符相关性最强的期待值字 符。

通过该检索,能够输出与从多个对象字符提取出的候选字符相关性最强 的期待值字符的条形码数据D12来作为读取该条形码符号1时的解码结果,因 此与现有方式的条形码读取方法相比能够大幅度防止条形码符号1的误读 取。

而且,将误差的范围从现有方式的±0.5扩大到±1.0,使候选字符增加。 而且,提取1个字符的6个宽度数据D10和该字符C1的前后5个宽度数据D10, 因此与现有方法相比能够提取更多的锁定2~6个相加模式的各模块数为误差 1以内的整数的对象字符而得到的候选字符。

另外,能够输出多个解码结果的候选字符,使得不仅将相关性第一强的 候选字符设为解码结果,还使相关性第二强、第三强···的候选字符成为解 码结果的概率变高。由此,与现有方式的条形码读取方法相比能够大幅度防 止条形码的误读取。由此,与现有方式的条形码读取方法相比能够大幅度防 止条形码的误读取。此外,通过使设定误差的范围时的阈值能够改变,还能 够选择宽度数据D10的可靠性。

接着,参照图5的(A)~图5的(G)对第一实施例所涉及的1个数据、2个相 加数据的其它计算例(之一)进行说明。在该例中,将到对象字符C1的两侧的 字符C0、C2为止的相加范围扩大。将以下情况作为前提:将相加范围扩大 到与对象字符C1相邻的前一个字符C0的空白(6)和条(5)这两个元素,并将相 加范围扩大到后一个字符C2的条(1)和空白(2)这两个元素。

在图5的(A)所示的对象字符C1的前一个字符处设置字符C0,在对象字符 C1后一个字符处设置字符C2。各字符C0~C2分别由总宽度11个模块构成。由 3个条(1)、(3)、(5)和三个空白(2)、(4)、(6)构成。条(1)的模块数为“4”,条(3)、 (5)的模块数为“1”。另外,空白(2)的模块数为“1”,空白(4)、(6)的模块数 为“2”。列举具有这些字符C0~C2的条形码的情况作为例子,并说明生成对 象字符的情况。

图5的(B)所示的对象字符C1的W11是黑色部分的条(1)的宽度。通过计数 器部4对条(1)的宽度进行计数,其计数数据值构成宽度W11数据。W12是继 对象字符C1的条(1)之后的空白(2)的宽度。空白(2)的宽度也通过计数器部4 进行计数,其计数数据值构成宽度W12数据。W13是继对象字符C1的空白(2) 之后的条(3)的宽度。通过计数器部4对条(3)的宽度进行计数,其计数数据值 构成宽度W13数据。

W14是继对象字符C1的条(3)之后的空白(4)的宽度。空白(4)的宽度也通 过计数器部4进行计数,其计数数据值构成宽度W14数据。W15是继对象字 符C1的空白(4)之后的条(5)的宽度。通过计数器部4对条(5)的宽度进行计数, 其计数数据值构成宽度W15数据。W16是继对象字符C1的条(5)之后的空白 (6)的宽度。空白(6)的宽度也通过计数器部4进行计数,其计数数据值构成宽 度W16数据。上述6种宽度W11数据~宽度W16数据是1个字符的1个数据,构 成宽度数据D10。

图5的(C)所示的W2-1是通过运算部23a将前一个对象字符C0的空白(6) 和对象字符C1的条(1)各自相加而得到的宽度。表示空白(6)+条(1)的相加宽度 的计数数据值构成宽度W2-1数据。W21是通过运算部23a将继前一个字符C0 的空白(6)之后的对象字符C1的条(1)和空白(2)各自相加而得到的宽度(以下 记为条(1)+空白(2))。表示条(1)+空白(2)的相加宽度的计数数据值构成宽度W 21数据。W22是通过运算部23a将继对象字符C1的条(1)之后的空白(2)和条(3) 各自相加而得到的宽度。表示空白(2)+条(3)的相加宽度的计数数据值构成宽 度W22数据。

W23是通过运算部23a将继对象字符C1的空白(2)之后的条(3)和空白(4) 各自相加而得到的宽度。表示条(3)+空白(4)的相加宽度的计数数据值构成宽 度W23数据。W24是通过运算部23a将继对象字符C1的条(3)之后的空白(4)和 条(5)各自相加而得到的宽度。表示空白(4)+条(5)的相加宽度的计数数据值构 成宽度W24数据。

W25是通过运算部23a将继对象字符C1的空白(4)之后的条(5)和空白(6) 各自相加而得到的宽度。表示条(5)+空白(6)的相加宽度的计数数据值构成宽 度W25数据。W26是通过运算部23a将继条(5)之后的空白(6)和后一个字符C2 的条(1)各自相加而得到的宽度。表示空白(6)+条(1)的相加宽度的计数数据值 构成宽度W26数据。上述7种宽度W2-1数据~宽度W26数据是1个字符的两个 相加数据,构成宽度数据D10。

图5的(D)所示的W3-2是通过运算部23a将前一个字符C0的条(5)、空白(6) 以及对象字符C1的条(1)各自相加而得到的宽度。表示条(5)+空白(6)+条(1)的 相加宽度的计数数据值构成宽度W3-2数据。W3-1是通过运算部23a将前一个 字符C0的空白(6)、对象字符C1的条(1)以及空白(2)各自相加而得到的宽度。 表示空白(6)+条(1)+空白(2)的相加宽度的计数数据值构成宽度W3-1数据。

W31是通过运算部23a将对象字符C1的条(1)、空白(2)以及条(3)各自相加 而得到的宽度。表示条(1)+空白(2)+条(3)的相加宽度的计数数据值构成宽度 W31数据。W32是通过运算部23a将继对象字符C1的条(1)之后的空白(2)、条 (3)以及空白(4)各自相加而得到的宽度。表示空白(2)+条(3)+空白(4)的相加宽 度的计数数据值构成宽度W32数据。

W33是通过运算部23a将继对象字符C1的空白(2)之后的条(3)、空白(4) 以及条(5)各自相加而得到的宽度。表示条(3)+空白(4)+条(5)的相加宽度的计 数数据值构成宽度W33数据。W34是通过运算部23a将继对象字符C1的条(3) 之后的空白(4)、条(5)以及空白(6)各自相加而得到的宽度。表示空白(4)+条(5) +空白(6)的相加宽度的计数数据值构成宽度W34数据。

W35是通过运算部23a将继对象字符C1的空白(4)之后的条(5)、空白(6)、 后一个字符C2的条(1)各自相加而得到的宽度。表示条(5)+空白(6)+条(1)的相 加宽度的计数数据值构成宽度W35数据。W36是通过运算部23a将继对象字 符C1的条(3)之后的空白(6)、后一个字符C2的条(1)以及空白(2)各自相加而得 到的宽度。表示空白(6)+条(1)+空白(2)的相加宽度的计数数据值构成宽度W3 6数据。上述8种宽度W3-2数据~宽度W36数据是1个字符的3个相加数据,构 成宽度数据D10。

图5的(E)所示的W4-2是通过运算部23a将前一个字符C0的条(5)、空白 (6)、对象字符C1的条(1)以及空白(2)各自相加而得到的宽度。表示条(5)+空 白(6)+条(1)+空白(2)的相加宽度的计数数据值构成宽度W4-2数据。W4-1是通 过运算部23a将前一个字符C0的空白(6)、对象字符C1的条(1)、空白(2)以及条 (3)各自相加而得到的宽度。表示空白(6)+条(1)+空白(2)+条(3)的相加宽度的 计数数据值构成宽度W4-1数据。

W41是通过运算部23a将对象字符C1的条(1)、空白(2)、条(3)以及空白(4) 各自相加而得到的宽度。表示条(1)+空白(2)+条(3)+空白(4)的相加宽度的计 数数据值构成宽度W41数据。W42是通过运算部23a将继对象字符C1的条(1) 之后的空白(2)、条(3)、空白(4)以及条(5)各自相加而得到的宽度。表示空白(2) +条(3)+空白(4)+条(5)的相加宽度的计数数据值构成宽度W42数据。

W43是通过运算部23a将继对象字符C1的空白(2)之后的条(3)、空白(4)、 条(5)以及空白(6)各自相加而得到的宽度。表示条(3)+空白(4)+条(5)+空白(6) 的相加宽度的计数数据值构成宽度W43数据。W44是通过运算部23a将继对 象字符C1的条(3)之后的空白(4)、条(5)、空白(6)、后一个字符C2的条(1)各自 相加而得到的宽度。表示空白(4)+条(5)+空白(6)+条(1)的相加宽度的计数数 据值构成宽度W44数据。

W45是通过运算部23a将继对象字符C1的白色的空白(4)之后的条(5)、空 白(6)、后一个字符C2的条(1)以及空白(2)各自相加而得到的宽度。表示条(5) +空白(6)+条(1)+空白(2)的相加宽度的计数数据值构成宽度W45数据。上述7 种宽度W4-2数据~宽度W45数据是1个字符的4个相加数据,构成宽度数据D1 0。

图5的(F)所示的W5-2是通过运算部23a将前一个字符C0的条(5)、空白 (6)、对象字符C1的条(1)、空白(2)以及条(3)各自相加而得到的宽度。表示条 (5)+空白(6)+条(1)+空白(2)+条(3)的相加宽度的计数数据值构成宽度W5-2数 据。W5-1是通过运算部23a将前一个字符C0的空白(6)、字符C1的条(1)、空 白(2)、条(3)以及空白(4)各自相加而得到的宽度。表示空白(6)+条(1)+空白(2) +条(3)+空白(4)的相加宽度的计数数据值构成宽度W5-1数据。

W51是通过运算部23a将对象字符C1的条(1)、空白(2)、条(3)、空白(4) 以及条(5)各自相加而得到的宽度。表示条(1)+空白(2)+条(3)+空白(4)+条(5) 的相加宽度的计数数据值构成宽度W51数据。W52是通过运算部23a将继对 象字符C1的条(1)之后的空白(2)、条(3)、空白(4)、条(5)以及空白(6)各自相加 而得到的宽度。表示空白(2)+条(3)+空白(4)+条(5)+空白(6)的相加宽度的计数 数据值构成宽度W52数据。

W53通过运算部23a将继对象字符C1的空白(2)之后的条(3)、空白(4)、条 (5)、空白(6)以及后一个字符C2的条(1)各自相加而得到的宽度。表示条(3)+ 空白(4)+条(5)+空白(6)+条(1)的相加宽度的计数数据值构成宽度W53数据。W 54是通过运算部23a将继对象字符C1的条(3)之后的空白(4)、条(5)、空白(6)、 后一个字符C2的条(1)以及空白(2)各自相加而得到的宽度。表示空白(4)+条 (5)+空白(6)+条(1)+空白(2)的相加宽度的计数数据值构成宽度W54数据。上述 6种宽度W5-2数据和宽度W54数据是1个字符的5个相加数据,构成宽度数据 D10。

图5的(G)所示的W6-2是通过运算部23a将前一个字符C0的条(5)、空白 (6)、对象字符C1的条(1)、空白(2)、条(3)以及空白(4)各自相加而得到的宽度。 表示条(5)+空白(6)+字符C1的条(1)+空白(2)+条(3)+空白(4)的相加宽度的计 数数据值构成宽度W6-2数据。

W6-1是通过运算部23a将前一个字符C0的空白(6)、对象字符C1的条(1)、 空白(2)、条(3)、空白(4)以及条(5)各自相加而得到的宽度。表示空白(6)+条(1) +空白(2)+条(3)+空白(4)+条(5)的相加宽度的计数数据值构成宽度W6-1数据。

W61是通过运算部23a将对象字符C1的条(1)、空白(2)、条(3)、空白(4)、 条(5)以及空白(6)各自相加而得到的宽度。表示条(1)+空白(2)+条(3)+空白(4) +条(5)+空白(6)的相加宽度的计数数据值构成宽度W61数据。

W62是通过运算部23a将继对象字符C1的条(1)之后的空白(2)、条(3)、空 白(4)、条(5)、空白(6)以及后一个字符C2的条(1)各自相加而得到的宽度。表 示空白(2)+条(3)+空白(4)+条(5)+空白(6)+条(1)的相加宽度的计数数据值构 成宽度W62数据。

W63是通过运算部23a将继对象字符C1的空白(2)之后的条(3)、空白(4)、 条(5)、空白(6)、后一个字符C2的条(1)以及空白(2)各自相加而得到的宽度。 表示条(3)+空白(4)+条(5)+空白(6)+条(1)+空白(2)的相加宽度的计数数据值 构成宽度W63数据。上述5种宽度W6-2数据和宽度W63数据是1个字符的6个 相加数据,构成宽度数据D10。

基于从上述计数器部4输出的计数数据值,利用6种宽度W11数据~宽度 W16数据(1个数据)、7种宽度W2-1数据~宽度W26数据(两个相加数据)、8种 宽度W3-2数据~宽度W36数据(3个相加数据)、7种宽度W4-2数据~宽度W45 数据(4个相加数据)、6种宽度W5-2数据和宽度W54数据(5个相加数据)、以及 5种宽度W6-2数据和宽度W63数据(6个相加数据)的总和能够得到39种对象 字符。

接着,参照图6的(A)~图6的(G)对第一实施例所涉及的1个数据、2个~6 个相加数据的其它计算例(之二)进行说明。在该例中,以如下情况为前提: 在将相加范围扩大到对象字符C1的两侧的字符C0、C2的情况下,将相加范 围扩大到图6的(A)所示的与对象字符C1相邻的前一个字符C0的空白(6)、条 (5)、空白(4)、条(3)以及空白(2)这5个元素,且将相加范围扩大到后一个字符 C2的条(1)、空白(2)、条(3)、空白(4)以及条(5)这5个元素。列举具有这些字 符C0~C2的条形码符号1的情况作为例子,并说明构成对象字符的情况。

图6的(B)所示的W11是对象字符C1的黑色部分的条(1)的宽度。通过计数 器部4对条(1)的宽度进行计数,其计数数据值构成宽度W11数据。W12是继 对象字符C1的条(1)之后的空白(2)的宽度。空白(2)的宽度也通过计数器部4 进行计数,其计数数据值构成宽度W12数据。W13是继空白(2)之后的条(3) 的宽度。通过计数器部4对条(3)的宽度进行计数,其计数数据值构成宽度W1 3数据。

W14是继对象字符C1的条(3)之后的空白(4)的宽度。空白(4)的宽度也通 过计数器部4进行计数,其计数数据值构成宽度W14数据。W15是继对象字 符C1的空白(4)之后的条(5)的宽度。通过计数器部4对条(5)的宽度进行计数, 其计数数据值构成宽度W15数据。W16是继对象字符C1的条(5)之后的空白 (6)的宽度。空白(6)的宽度也通过计数器部4进行计数,其计数数据值构成宽 度W16数据。上述6种宽度W11数据~宽度W16数据是1个字符的1个数据,构 成宽度数据D10。

图6的(C)所示的W2-1是通过运算部23a将前一个字符C0的空白(6)和对 象字符C1的条(1)各自相加而得到的宽度。表示空白(6)+条(1)的相加宽度的计 数数据值构成宽度W2-1数据。W21是通过运算部23a将继前一个字符C0的空 白(6)之后的条(1)和空白(2)各自相加而得到的宽度(以下记为条(1)+空白(2))。 表示条(1)+空白(2)的相加宽度的计数数据值构成宽度W21数据。W22是通过 运算部23a将继对象字符C1的条(1)之后的空白(2)和条(3)各自相加而得到的 宽度。表示空白(2)+条(3)的相加宽度的计数数据值构成宽度W22数据。

W23是通过运算部23a将继对象字符C1的空白(2)之后的条(3)和空白(4) 各自相加而得到的宽度。表示条(3)+空白(4)的相加宽度的计数数据值构成宽 度W23数据。W24是通过运算部23a将继对象字符C1的条(3)之后的空白(4)和 条(5)各自相加而得到的宽度。表示空白(4)+条(5)的相加宽度的计数数据值构 成宽度W24数据。W25是通过运算部23a将继对象字符C1的空白(4)之后的条 (5)和空白(6)各自相加而得到的宽度。表示条(5)+空白(6)的相加宽度的计数数 据值构成宽度W25数据。W26是通过运算部23a将继对象字符C1的条(5)之后 的空白(6)和后一个字符C2的条(1)各自相加而得到的宽度。表示空白(6)+条 (1)的相加宽度的计数数据值构成宽度W26数据。上述7种宽度W2-1数据~宽 度W26数据是1个字符的两个相加数据,构成宽度数据D10。

图6的(D)所示的W3-2是通过运算部23a将前一个字符C0的条(5)、空白(6) 以及对象字符C1的条(1)各自相加而得到的宽度。表示条(5)+空白(6)+条(1)的 相加宽度的计数数据值构成宽度W3-2数据。W3-1是通过运算部23a将前一个 字符C0的空白(6)、对象字符C1的条(1)以及空白(2)各自相加而得到的宽度。 表示空白(6)+条(1)+空白(2)的相加宽度的计数数据值构成宽度W3-1数据。

W31是通过运算部23a将对象字符C1的条(1)、空白(2)以及条(3)各自相加 而得到的宽度。表示条(1)+空白(2)+条(3)的相加宽度的计数数据值构成宽度 W31数据。W32是通过运算部23a将继对象字符C1的条(1)之后的空白(2)、条 (3)以及空白(4)各自相加而得到的宽度。表示空白(2)+条(3)+空白(4)的相加宽 度的计数数据值构成宽度W32数据。

W33是通过运算部23a将继对象字符C1的空白(2)之后的条(3)、空白(4) 以及条(5)各自相加而得到的宽度。表示条(3)+空白(4)+条(5)的相加宽度的计 数数据值构成宽度W33数据。W34是通过运算部23a将继条(3)之后的空白(4)、 条(5)以及空白(6)各自相加而得到的宽度。表示空白(4)+条(5)+空白(6)的相加 宽度的计数数据值构成宽度W34数据。

W35是通过运算部23a将继对象字符C1的空白(4)之后的条(5)、空白(6) 以及后一个字符C2的条(1)各自相加而得到的宽度。表示条(5)+空白(6)+条(1) 的相加宽度的计数数据值构成宽度W35数据。W36是通过运算部23a将继对 象字符C1的条(3)之后的空白(6)、后一个字符C2的条(1)以及空白(2)各自相加 而得到的宽度。表示空白(6)+条(1)+空白(2)的相加宽度的计数数据值构成宽 度W36数据。上述8种宽度W3-2数据~宽度W36数据是1个字符的3个相加数 据,构成宽度数据D10。

图6的(E)所示的W4-3是通过运算部23a将前一个字符C0的空白(4)、条 (5)、空白(6)以及条(1)各自相加而得到的宽度。表示空白(4)+条(5)+空白(6)+ 条(1)的相加宽度的计数数据值构成宽度W4-3数据。W4-2是通过运算部23a 将前一个字符C0的条(5)、空白(6)、对象字符C1的条(1)以及空白(2)各自相加 而得到的宽度。表示条(5)+空白(6)+条(1)+空白(2)的相加宽度的计数数据值 构成宽度W4-2数据。

W4-1是通过运算部23a将前一个字符C0的空白(6)、对象字符C1的条(1)、 空白(2)以及条(3)各自相加而得到的宽度。表示空白(6)+条(1)+空白(2)+条(3) 的相加宽度的计数数据值构成宽度W4-1数据。W41是通过运算部23a将对象 字符C1的条(1)、空白(2)、条(3)以及空白(4)各自相加而得到的宽度。表示条 (1)+空白(2)+条(3)+空白(4)的相加宽度的计数数据值构成宽度W41数据。W4 2是通过运算部23a将继对象字符C1的条(1)之后的空白(2)、条(3)、空白(4)以 及条(5)各自相加而得到的宽度。表示空白(2)+条(3)+空白(4)+条(5)的相加宽 度的计数数据值构成宽度W42数据。

W43是通过运算部23a将继对象字符C1的空白(2)之后的条(3)、空白(4)、 条(5)以及空白(6)各自相加而得到的宽度。表示条(3)+空白(4)+条(5)+空白(6) 的相加宽度的计数数据值构成宽度W43数据。W44是通过运算部23a将继对 象字符C1的条(3)之后的空白(4)、条(5)、空白(6)、后一个字符C2的条(1)各自 相加而得到的宽度。表示空白(4)+条(5)+空白(6)+条(1)的相加宽度的计数数 据值构成宽度W44数据。

W45是通过运算部23a将继对象字符C1的白色的空白(4)之后的条(5)、空 白(6)、后一个字符C2的条(1)以及空白(2)各自相加而得到的宽度。表示条(5) +空白(6)+条(1)+空白(2)的相加宽度的计数数据值构成宽度W45数据。W46 是通过运算部23a将继对象字符C1的条(5)之后的空白(6)、后一个字符C2的条 (1)、空白(2)以及条(3)各自相加而得到的宽度。表示空白(6)+条(1)+空白(2)+ 条(3)的相加宽度的计数数据值构成宽度W46数据。上述9种宽度W4-3数据~ 宽度W46数据是1个字符的4个相加数据,构成宽度数据D10。

图6的(F)所示的W5-4是通过运算部23a将前一个字符C0的条(3)、空白 (4)、条(5)、空白(6)+字符C1的条(1)各自相加而得到的宽度。表示条(3)+空白 (4)+条(5)+空白(6)+条(1)的相加宽度的计数数据值构成宽度W5-4数据。W5-3 是通过运算部23a将前一个字符C0的空白(4)、条(5)、空白(6)、对象字符C1 的条(1)以及空白(2)各自相加而得到的宽度。表示空白(4)+条(5)+空白(6)+条 (1)+空白(2)的相加宽度的计数数据值构成宽度W5-3数据。

W5-2是通过运算部23a将前一个字符C0的条(5)、空白(6)、对象字符C1 的条(1)、空白(2)以及条(3)各自相加而得到的宽度。表示条(5)+空白(6)+条(1) +空白(2)+条(3)的相加宽度的计数数据值构成宽度W5-2数据。W5-1是通过运 算部23a将前一个字符C0的空白(6)、对象字符C1的条(1)、空白(2)、条(3)以 及空白(4)各自相加而得到的宽度。表示空白(6)+条(1)+空白(2)+条(3)+空白(4) 的相加宽度的计数数据值构成宽度W5-1数据。

W51是通过运算部23a将对象字符C1的条(1)、空白(2)、条(3)、空白(4) 以及条(5)各自相加而得到的宽度。表示条(1)+空白(2)+条(3)+空白(4)+条(5) 的相加宽度的计数数据值构成宽度W51数据。W52是通过运算部23a将继对 象字符C1的条(1)之后的空白(2)、条(3)、空白(4)、条(5)以及空白(6)各自相加 而得到的宽度。表示空白(2)+条(3)+空白(4)+条(5)+空白(6)的相加宽度的计数 数据值构成宽度W52数据。

W53是通过运算部23a将继对象字符C1的空白(2)之后的条(3)、空白(4)、 条(5)、空白(6)以及后一个字符C2的条(1)各自相加而得到的宽度。表示条(3) +空白(4)+条(5)+空白(6)+条(1)的相加宽度的计数数据值构成宽度W53数据。 W54是通过运算部23a将继对象字符C1的条(3)之后的空白(4)、条(5)、空白(6)、 后一个字符C2的条(1)以及空白(2)各自相加而得到的宽度。表示空白(4)+条 (5)+空白(6)+条(1)+空白(2)的相加宽度的计数数据值构成宽度W54数据。

W55是通过运算部23a将继对象字符C1的空白(4)之后的条(5)、空白(6)、 后一个字符C2的条(1)、空白(2)以及条(3)各自相加而得到的宽度。表示条(5) +空白(6)+条(1)+空白(2)+条(3)的相加宽度的计数数据值构成宽度W55数据。 W56是通过运算部23a将继对象字符C1的条(5)之后的空白(6)、后一个字符C2 的条(1)、空白(2)、条(3)以及空白(4)各自相加而得到的宽度。表示空白(6)+ 条(1)+空白(2)+条(3)+空白(4)的相加宽度的计数数据值构成宽度W56数据。上 述10种宽度W5-4数据和宽度W56数据是1个字符的5个相加数据,构成宽度数 据D10。

图6的(G)所示的W6-5是通过运算部23a将前一个字符C0的空白(2)、条 (3)、空白(4)、条(5)、空白(6)以及对象字符C1的条(1)各自相加而得到的宽度。 表示空白(2)+条(3)+空白(4)+条(5)+空白(6)+条(1)的相加宽度的计数数据值 构成宽度W6-5数据。W6-4是通过运算部23a将前一个字符C0的条(3)、空白 (4)、条(5)、空白(6)、对象字符C1的条(1)以及空白(2)各自相加而得到的宽度。 表示条(3)+空白(4)+条(5)+空白(6)+条(1)+空白(2)的相加宽度的计数数据值 构成宽度W6-4数据。

W6-3通过运算部23a将前一个字符C0的空白(4)、条(5)、空白(6)、对象 字符C1的条(1)、空白(2)以及条(3)各自相加而得到的宽度。表示空白(4)+条(5) +空白(6)+条(1)+空白(2)+条(3)的相加宽度的计数数据值构成宽度W6-3数据。 W6-2是通过运算部23a将前一个字符C0的条(5)+空白(6)+字符C1的条(1)+空 白(2)+条(3)+空白(4)各自相加而得到的宽度。表示条(5)+空白(6)+字符C1的条 (1)+空白(2)+条(3)+空白(4)的相加宽度的计数数据值构成宽度W6-2数据。

W6-1是通过运算部23a将前一个字符C0的空白(6)、字符C1的条(1)、空 白(2)、条(3)、空白(4)、条(5)各自相加而得到的宽度。表示空白(6)+字符C1 的条(1)+空白(2)+条(3)+空白(4)+条(5)的相加宽度的计数数据值构成宽度W6 -1数据。

W61是通过运算部23a将对象字符C1的条(1)、空白(2)、条(3)、空白(4)、 条(5)以及空白(6)各自相加而得到的宽度。表示条(1)+空白(2)+条(3)+空白(4) +条(5)+空白(6)的相加宽度的计数数据值构成宽度W61数据。

W62是通过运算部23a将继对象字符C1的条(1)之后的空白(2)、条(3)、空 白(4)、条(5)、空白(6)以及后一个字符C2的条(1)各自相加而得到的宽度。表 示空白(2)+条(3)+空白(4)+条(5)+空白(6)+条(1)的相加宽度的计数数据值构 成宽度W62数据。

W63是通过运算部23a将继对象字符C1的空白(2)之后的条(3)、空白(4)、 条(5)、空白(6)、后一个字符C2的条(1)以及空白(2)各自相加而得到的宽度。 表示条(3)+空白(4)+条(5)+空白(6)+条(1)+空白(2)的相加宽度的计数数据值 构成宽度W63数据。

W64是通过运算部23a将继对象字符C1的条(3)之后的空白(4)、条(5)、空 白(6)、后一个字符C2的条(1)、空白(2)以及条(3)各自相加而得到的宽度。表 示空白(4)+条(5)+空白(6)+后一个字符C2的条(1)+空白(2)+条(3)的相加宽度 的计数数据值构成宽度W64数据。

W65是通过运算部23a将继对象字符C1的空白(4)之后的条(5)、空白(6)、 后一个字符C2的条(1)、空白(2)、条(3)以及空白(4)各自相加而得到的宽度。 表示条(5)+空白(6)+后一个字符C2的条(1)+空白(2)+条(3)+空白(4)的相加宽 度的计数数据值构成宽度W65数据。

W66是通过运算部23a将继对象字符C1的条(5)之后的空白(6)、后一个字 符C2的条(1)、空白(2)、条(3)、空白(4)以及条(5)各自相加而得到的宽度。表 示空白(6)+后一个字符C2的条(1)+空白(2)+条(3)+空白(4)+条(5)的相加宽度 的计数数据值构成宽度W66数据。上述11种宽度W6-5数据和宽度W66数据是 1个字符的6个相加数据,构成宽度数据D10。

在该例中,基于从图1所示的计数器部4输出的计数数据值,利用6种宽 度W11数据~宽度W16数据(1个数据)、7种宽度W2-1数据~宽度W26数据(两个 相加数据)、8种宽度W3-2数据~宽度W36数据(3个相加数据)、9种宽度W4-3 数据~宽度W46数据(4个相加数据)、10种宽度W5-4数据和宽度W56数据(5个 相加数据)、以及11种宽度W6-5数据和宽度W66数据(6个相加数据)的总和能 够获得51种对象字符。

实施例2

接着,参照图7A、图7B、图7C~图10对第二实施例所涉及的解码例进行 说明。在此,参照图7A~图7C对CODE128的条形码符号例、其缺损例及其 重建例进行说明。图7A所示的CODE128的条形码符号1没有产生条、空白 等的缺失、瑕疵等。条形码符号1由8个字符构成,例如,条形码数据D12表 达数字“123455678”。

图7B所示的CODE128的条形码符号1’的条、空白等中产生了缺失、瑕 疵等。假设条形码符号1’产生于图7A所示的CODE128的条形码符号1。图中 的3条横向虚线是阈值th1~th3。各阈值th1~th3被设定于与扫描方向正交的 上·中·下级。

当以阈值th1为基准来扫描条形码符号1’并读入数据时,由于瑕疵等而缺 失字符“3”和“4”。当以阈值th2为基准来扫描条形码符号1’并读入数据时, 由于瑕疵等而缺失字符“3”~“6”。当以阈值th3为基准来扫描条形码符号1’ 并读入数据时,由于瑕疵等而缺失字符“7”和“8”。

如图7C所示,以阈值th1为基准的解码结果是输出表示“12??5678”的 条形码数据D12。“3”和“4”未被解码。以阈值th2为基准的解码结果是输 出表示“12????78”的条形码数据D12。“3”~“6”未被解码。以阈值th3为 基准的解码结果是输出表示“123456??”的条形码数据D12。“7”和“8”未 被解码。

在第二实施例中,如图7B所示,即使在条、空白等中产生缺失、瑕疵等 的情况下,也能够将“12??5678”、“12????78”、“123456??”等重建为表达 “123455678”的条形码数据D12。

在该例中,对与扫描方向正交的上·中·下级连续进行扫描,校正错误 字符,在错误字符消失的时刻进行CD(校验码)的对照,生成条形码数据D12。 由此,即使是由于模糊不清、污迹等导致元素的部分缺失的条形码符号1也 能够对其进行读取。

另外,在第一实施例中对仅利用了1个字符内的宽度数据D10的情况进行 了说明,但利用1个字符内的端部的宽度数据D10的次数少。例如,在以两个 相加模式的计算对象字符C1的条(1)的宽度W11数据时,仅利用相加宽度W2 1,但在以两个相加模式计算空白(2)的宽度W12数据时,利用相加宽度W21 和相加宽度W22。因此,在第二实施例中还包括元素部分在内进行计算,该 元素部分还包含与该字符C1相邻的字符C0、C2。

接着,参照图8~图10对第二实施例所涉及的难读字符的解码例(之一~三) 进行说明。在该实施例中,将要进行模式识别的相加范围扩大到两侧的两个 字符的元素。以如下情况为前提,将相加范围以扩大到与图7A所示的对象字 符相邻的前一个字符C0的空白(6)、条(5)、空白(4)、条(3)以及空白(2)这5个 元素,且扩大到后一个字符C2的条(1)、空白(2)、条(3)、空白(4)以及条(5) 这5个元素。以通过扩大该相加范围而从51种对象字符获得解码结果的情况 为前提(多重扫描重建)。

以此作为解码条件,在图8所示的流程图的步骤ST21中,CPU23检索起 始空白。此时,与第一实施例同样地,光学读取部2读取条形码符号1,产生 代码读取数据D2。代码读取数据D2从光学读取部2被输出到计数器部4。时 钟产生部3将规定频率的采样用的CLK信号输出到计数器部4。

计数器部4输入从光学读取部2输出的代码读取数据D2,并且输入从时钟 产生部3输出的CLK信号,基于CLK信号对代码读取数据D2进行计数,将代 码读取数据D2转换为表示包含白色部分的空白和黑色部分的条的元素的1个 宽度和两个相加宽度的计数数据D4。计数数据D4成为表示条形码符号1中的 各条(黑色部分)的宽度和空白(白色部分)的宽度的数值数据列。计数数据D4 被保存到宽度数据保存部10中。此外,对起始空白的检索省略其说明。

在步骤ST22中,CPU23提取1个字符量的宽度数据(6个)。根据图15所 示的字符C1,通过计数器部4对黑色部分的条(1)的宽度W11进行计数,其计 数数据值为宽度W11数据。继条(1)之后的白色部分的空白(2)的宽度W12也通 过计数器部4进行计数,其计数数据值为宽度W12数据。通过计数器部4对继 空白(2)之后的条(3)的宽度W13进行计数,其计数数据值为宽度W13数据。

继该条(3)之后的空白(4)的宽度W14也通过计数器部4进行计数,其计数 数据值为宽度W14数据。通过计数器部4对继空白(4)之后的条(5)的宽度W15 进行计数,其计数数据值为宽度W15数据。继条(5)之后的空白(6)的宽度W1 6也通过计数器部4进行计数,其计数数据值为宽度W16数据。上述6种宽度 W11数据~宽度W16数据构成条形码数据值D30。条形码数据值D30经由接口 部11被输出到CPU23。

在步骤ST23中CPU23基于是否存在条的分割、消失来分支控制。关于 是否存在条的分割、消失,将6个宽度的总和与1个字符宽度进行比较,判断 1个字符的宽度数据D10是否恰当。在此,将对在1个字符内包含相邻的条和 空白的6个元素的宽度进行加法运算而得到的合计值与表示1个字符的总宽 度的总宽度值进行比较,基于比较结果来判断1个字符量的宽度数据D10是否 恰当。

在该例中,在CPU23中比较部23c将在1个字符内包含相邻的6个条(1)、 空白(2)、条(3)、空白(4)、条(5)以及空白(6)的宽度W1~W6的总和与表示1个 字符的总宽度的总宽度值进行比较。根据由比较部23c得到的比较结果来判 断1个字符的宽度数据D10是否恰当,基于该判断能够判断字符的条的消失、 分割等。另外,能够将多个扫描的解码结果进行组合,即使针对污迹、模糊 严重的条形码也能够进行读取。

另外,能够根据该字符C1的前后的字符C0、C2的总宽度来判定字符帧, 因此即使由于空缺、斑点等导致元素存在严重不足,也能够继续进行解码。 另外,能够基于条的消失、分割等的判断结果锁定对象字符,能够实现计算 量的减少、处理时间的高速化。

在不存在条的分割、消失的情况下,在步骤ST24中,CPU23计算1个模 块宽度,并存储1个字符宽度。此时,运算部23a基于6种宽度W11数据~宽度 W16数据来计算该字符C1的1个模块宽度。将在图7B所示的1个字符内相邻的 6个条(1)、空白(2)、条(3)、空白(4)、条(5)以及空白(6)的宽度W1~W6相加来 求出1个字符宽度。

在步骤ST25中,CPU23将1个字符的宽度数据D10转换为两个相加模 式。例如,表示相加宽度W2-1的计数数据值为宽度W2-1数据,该相加宽度 W2-1是通过运算部23a将图7C所示的前一个字符C0的空白(6)与对象字符C1 的条(1)各自相加而得到的。

同样地,表示相加宽度W21的计数数据值为宽度W21数据,该相加宽度 W21是通过运算部23a将继前一个字符C0的空白(6)之后的条(1)和空白(2)各 自相加而得到的。表示相加宽度W22的计数数据值是宽度W22数据,该相加 宽度W22是通过运算部23a将继对象字符C1的条(1)之后的空白(2)和条(3)各 自相加而得到的。

表示相加宽度W23的计数数据值是宽度W23数据,该相加宽度W23是通 过运算部23a将继对象字符C1的空白(2)之后的条(3)和空白(4)各自相加而得 到的。表示相加宽度W24的计数数据值是宽度W24数据,该相加宽度W24是 通过运算部23a将继对象字符C1的条(3)之后的空白(4)和条(5)各自相加而得 到的。

表示相加宽度W25的计数数据值是宽度W25数据,该相加宽度W25是通 过运算部23a将继对象字符C1的空白(4)之后的条(5)和空白(6)各自相加而得 到的。表示相加宽度W26的计数数据值是宽度W26数据,该相加宽度W26是 通过运算部23a将继对象字符C1的条(3)之后的空白(4)和后一个字符C2的条 (1)各自相加而得到的。上述7种宽度W2-1数据~宽度W26数据是1个字符的两 个相加数据,由宽度数据D10构成。

之后,在步骤ST26中,CPU23首先检索转换得到的两个相加模式一致 的字符。在该例中,基于从图1所示的计数器部4输出的计数数据值,检索部 23d对与6种宽度W11数据~宽度W16数据(1个数据)、7种宽度W2-1数据~宽度 W26数据(两个相加数据)、8种宽度W3-2数据~宽度W36数据(3个相加数据)、 9种宽度W4-3数据~宽度W46数据(4个相加数据)、10种宽度W5-4数据和宽度 W56数据(5个相加数据)、以及11种宽度W6-5数据和宽度W66数据(6个相加数 据)这51种对象字符C1一致的字符进行检索。此时,针对各元素的宽度,检 索与两种对象字符中的任何一个一致的对象字符,来锁定对象字符。通过该 锁定,能够检索出大致1~4个左右的候选字符。

在步骤ST27中,CPU23基于是否存在一致的字符来分支控制,在存在 一致的字符的情况下,在步骤ST28中将两个相加模式一致的对象字符设为解 码结果。之后,转移到图9所示的步骤ST31。

此外,在步骤ST23中存在条的分割、消失的情况下以及在步骤ST27中 不存在一致的字符的情况下,在步骤ST29中CPU23将当前的字符设为错误 字符。之后,在步骤ST30中CPU23转移到下一个字符(1个字符宽度量之后 的数据)的解码处理。之后,转移到步骤ST22,并反复进行上述内容。

关于在上述步骤ST28中被设为解码结果的候选字符,在图9所示的步骤S T31中CPU23基于是否存在紧接在空白后的字符来分支控制。在被设为解码 结果的候选字符不是紧接在空白后的字符的情况下,转移到步骤ST32,CP U23基于解码结果是否为停止字符来分支控制。在解码结果为停止字符的情 况下,转移到步骤ST33,CPU23基于在解码结果中是否存在错误字符来分 支控制。

在解码结果中不存在错误字符的情况下,转移到步骤ST34,CPU23将 当前(现在)的扫描的解码结果覆盖到解码缓存区25上。之后,转移到步骤ST 35,CPU23执行检错检测(奇偶校验),基于校验码是否正确来分支控制。在 校验码正确的情况下,在步骤ST36中CPU23完成读取,输出解码缓存区25 中的条形码数据D12,将解码缓存区25清除(正常结束)。之后,转移到步骤S T45。

此外,在步骤ST31中是紧接在空白后的字符的情况下,转移到步骤ST3 7,CPU23基于解码结果是否为起始字符来分支控制。在上述步骤ST37中解 码结果不是起始字符的情况下以及在步骤ST32中解码结果不是停止字符的 情况下,转移到步骤ST38。在步骤ST38中CPU23执行下一个字符(6个之后 的宽度数据D10)的解码处理。之后,返回到步骤ST22。

另外,在步骤ST33中解码结果中存在错误字符的情况下,在图10所示的 步骤ST39中CPU23基于解码缓存区25的长度是否等于解码数据长度来分支 控制。在解码缓存区25的长度与解码数据长度相等的情况下,在步骤ST41 中在解码缓存区25的错误字符部分的解码成功之后更新数据。之后,转移到 步骤ST42,基于在解码缓存区25中是否存在错误字符来分支控制。在解码缓 存区25中不存在错误字符的情况下,返回到步骤ST35。

在上述步骤ST35中校验码错误的情况下,在图10所示的步骤ST43中将 解码缓存区25清除,之后,在图9所示的步骤ST37中解码结果不是起始字符、 在图10所示的步骤ST39中解码缓存区25的长度与解码数据长度不同的情况 下,在步骤ST40中清除解码缓存区25,之后在步骤ST42中解码缓存区25中 存在错误字符的情况下,转移到步骤ST44,CPU23执行读取检错处理。在 读取检错处理中检索下一个空白等。

另外,在字符识别错误的情况下,也可以暂时配置错误字符并生成条形 码数据。之后,转移到图9所示的步骤ST45,CPU23对是否结束进行判断。 例如,对该条形码符号读取装置100检测读取结束指令,在检测到读取结束 指令的情况下,结束条形码符号1的读取控制。在没有检测到读取结束指令 的情况下,为了继续进行条形码符号1的读取控制,返回到步骤ST21,来反 复进行上述内容。

这样,根据第二实施例所涉及的条形码符号读取装置100,将要进行模 式识别的相加范围扩大到对象字符的两侧的两个字符C0、C2的元素。即, 关于相加范围,将其扩大到与图7A所示的对象字符相邻的前一个字符C0的 空白(6)、条(5)、空白(4)、条(3)以及空白(2)这5个元素,且扩大到后一个字 符C2的条(1)、空白(2)、条(3)、空白(4)以及条(5)这5个元素,因此能够从51 种对象字符中决定作为解码结果的候选字符。

因而,与仅利用字符内的宽度数据进行模式识别的现有方式相比,也将 还包含对象字符的两侧的两个字符C0、C2的元素的部分参与到计算中,因 此即使是在对象字符的端部包含大量缺失、瑕疵等误差的模式,也不易误读。 由此,使得即使条、空白等元素(元素)的宽度的最大误差为±0.5模块以上, 也能够识别为字符的可能性变高。而且,通过锁定对象字符,能够实现计算 量的减少,能够缩短模式识别处理所花费的时间,从而实现数据处理的高速 化。

实施例3

接着,参照图11~图13对第三实施例所涉及的难读字符的解码例(之一~ 三)进行说明。在该实施例中,将在第一实施例中说明的字符解码算法与在 第二实施例中说明的多重扫描重建进行合并的处理。将此作为解码条件,在 图11所示的流程图的步骤ST51中检索起始空白。此时,与第一实施例同样地, 光学读取部2读取条形码符号1,并产生代码读取数据D2。代码读取数据D2 从光学读取部2被输出到计数器部4。时钟产生部3将规定频率的采样用的CL K信号输出到计数器部4。

对计数器部4输入从光学读取部2输出的代码读取数据D2,并且对计数器 部4输入从时钟产生部3输出的CLK信号,该计数器部4基于CLK信号对代码 读取数据D2进行计数,将代码读取数据D2转换为表示包含白色部分的空白 和黑色部分的条的元素的1个宽度和两个相加宽度的计数数据D4。计数数据 D4成为表示条形码符号1中的各条(黑色部分)的宽度和空白(白色部分)的宽 度的数值数据列。计数数据D4被保存到宽度数据保存部10中。此外,对起始 空白的检索省略其说明。

在步骤ST52中CPU23将6个宽度的总和与1个字符宽度进行比较,来判 断1个字符量的宽度数据D10是否恰当。在此,将对在1个字符内包含相邻的 条和空白的6个元素的宽度进行加法运算而得到的合计值与表示1个字符的 总宽度的总宽度值进行比较,基于比较结果来判断1个字符的宽度数据D10 是否恰当。

在该例中,在CPU23中比较部23c将1个字符内相邻的6个条(1)、空白(2)、 条(3)、空白(4)、条(5)以及空白(6)的宽度W1~W6的总和与表示1个字符的总 宽度的总宽度值进行比较。根据由比较部23c得到的比较结果,能够判断1个 字符的宽度数据D10是否恰当,能够基于该判断来锁定字符候选,能够实现 计算量的减少以及处理时间的高速化。

在步骤ST53中CPU23基于是否存在条的分割、消失来分支控制。关于 是否存在条的分割、消失,利用由比较部23c得到的比较结果。能够根据对 象字符C1的前后的字符C0、C2的总宽度来判定字符帧,因此即使存在因空 缺、斑点等导致元素存在严重不足,也能够继续进行解码。

在不存在条的分割、消失的情况下,在步骤ST54中CPU23计算1个模块 宽度并存储1个字符宽度。此时,运算部23a基于6种宽度W11数据~宽度W16 数据来计算对象字符C1的1个模块宽度。将图7B所示的1个字符内的相邻的6 个条(1)、空白(2)、条(3)、空白(4)、条(5)以及空白(6)的宽度W1~W6相加来 求出1个字符宽度。

在步骤ST55中CPU23将提取出的21种宽度数据D10转换为1~6个相加 模式(元素宽度)。在该例中,6种宽度W11数据~宽度W16数据被转换为1个字 符的1个数据,作为基于1个数据的对象字符C1的被识别模式,生成1个模式。 5种宽度W21数据~宽度W25数据被转换为1个字符的两个相加数据,生成基 于两个相加数据的对象字符C1的两个相加模式(被识别模式)。4种宽度W31 数据~宽度W34数据被转换为1个字符的3个相加数据,生成基于3个相加数据 的对象字符C1的3个相加识别模式。

3种宽度W41数据~宽度W43数据被转换为1个字符的4个相加数据,生成 基于4个相加数据的对象字符C1的4个相加模式。两种宽度W51数据和宽度 W52数据被转换为1个字符的5个相加数据,生成基于5个相加数据的对象字 符的5个相加模式。1种宽度W61数据被转换为1个字符的6个相加数据,生成 基于6个相加数据的对象字符C4的6个相加模式。

在步骤ST56中CPU23为了锁定字符,针对1个模式、2~个相加模式的所 有相加模式检索模块数的误差为1以内的字符来决定候选字符。此时,在CP U23中,提取部23b锁定由运算部23a求出的1个模式、2~6个相加模式的各模 块数为误差1以内的整数的对象字符C1等来提取候选字符。此时,提取部23 b提取由运算部23a求出的1个模式、2~6个相加模式的1个字符量的6个宽度数 据D10和对象字符的前后(6-1)个宽度数据D10。

在步骤ST57中,CPU23基于是否存在一个以上的候选字符来分支控制。 在存在一个以上(多个)的候选字符的情况下,在步骤ST58中对1~6个相加模 式的实测值与其理想值之间的误差进行计算,将该误差的总和最小的候选字 符设为解码结果。该误差值最小的候选字符是与期待值字符相关性最强的字 符。在该例中,能够选择总的误差最少的对象字符C1等来作为候选字符。

此时,在CPU23中,期待值字符(理论值)从期待值保存部24被读出到C PU23的比较部23c。比较部23c将由提取部23b提取出的各2~6个相加模式(元 素宽度)的模块数的候选字符与用于评价候选字符的期待值字符(理论值)进 行比较。该比较结果被输出到检索部23d。

在检索部23d中,检索与候选字符相关性最强的期待值字符。例如,在 上述运算部23a计算出候选字符的模块数的实测值与期待值字符的模块数的 理想值之间的误差时,检索部23d检索与误差值最小的候选字符相关性最强 的期待值字符,该误差值是将由运算部23a计算出的误差求和而得到的。

在该例中,检索与误差值最小的候选字符相关性最强的期待值字符,因 此与现有方式的条形码读取方法相比能够大幅度防止条形码的误读取。此 外,在步骤ST57中不存在候选字符的情况下,在步骤ST59中将当前的字符 设为错误字符。之后,在步骤ST60中转移到下一个字符(字符宽度之后的数 据)的解码处理。

关于在上述步骤ST58中被设为解码结果的候选字符,在图12所示的步骤 ST61中CPU23基于是否存在紧接在空白后的对象字符来分支控制。在被设 为解码结果的候选字符不是紧接在空白后的对象字符的情况下,转移到步骤 ST62,CPU23基于解码结果是否为停止字符来分支控制。在解码结果为停 止字符的情况下,转移到步骤ST63,CPU23基于在解码结果中是否存在错 误字符来分支控制。

在解码结果中不存在错误字符的情况下,转移到步骤ST64,CPU23将 当前(现在)的扫描的解码结果覆盖到解码缓存区25。之后,转移到步骤ST65, CPU23执行错检错检测(奇偶校验),基于校验码是否正确来分支控制。在校 验码正确的情况下,在步骤ST66中CPU23完成读取,输出解码缓存区25的 条形码数据D12,将解码缓存区25清除(正常结束)。之后,转移到步骤ST65。

此外,在步骤ST61中是紧接在空白后的对象字符的情况下,转移到步骤 ST67,CPU23基于解码结果是否为起始字符来分支控制。在上述步骤ST67 中解码结果为起始字符的情况下以及在步骤ST62中解码结果为停止字符的 情况下,转移到步骤ST68。在步骤ST68中CPU23执行下一个字符(6个之后 的宽度数据D10)的解码处理。之后,返回到步骤ST52。

另外,在步骤ST63中解码结果中存在错误字符的情况下,在图13所示的 步骤ST69中CPU23基于解码缓存区25的长度是否等于解码数据长度来分支 控制。在解码缓存区25的长度与解码数据长度相等的情况下,在步骤ST71 中在解码缓存区25的错误字符部分的解码成功之后更新数据。之后,转移到 步骤ST72,基于在解码缓存区25中是否存在错误字符来分支控制。在解码缓 存区25中不存在错误字符的情况下,返回到步骤ST65。

在上述步骤ST65中校验码错误的情况下,在图13所示的步骤ST73中将 解码缓存区25清除,之后在图12所示的步骤ST67中解码结果不是起始字符、 在图13所示的步骤ST69中解码缓存区25的长度与解码数据长度不同的情况 下,在步骤ST70中清除解码缓存区25,之后在步骤ST72中解码缓存区25中 存在错误字符的情况下,转移到步骤ST74,CPU23执行读取检错处理。在 读取检错处理中检索下一个空白等。

另外,在字符识别错误的情况下,也可以暂时配置错误字符并生成条形 码数据。之后,转移到图12所示的步骤ST75,CPU23对是否结束进行判断。 例如,对该条形码符号读取装置100检测读取结束指令,在检测到读取结束 指令的情况下,结束条形码符号1的读取控制。在没有检测到读取结束指令 的情况下,为了继续进行条形码符号1的读取控制,返回到步骤ST51,反复 进行上述内容。

这样,根据第三实施例所涉及的条形码符号读取装置100,在读取条形 码符号1并输出其解码结果的情况下,对在第一实施例中说明的字符解码算 法与在第二实施例中说明的多重扫描重建进行合并的处理。以此为前提,检 索部23d将由提取部23b提取出的各2~6个相加模式的模块数的候选字符与用 于评价该候选字符的期待值字符进行比较,并检索与该候选字符相关性最强 的期待值字符。

通过该检索,能够将与从多个对象字符提取出的候选字符相关性最强的 期待值字符的条形码数据D12作为读取该条形码符号1时的解码结果来输出, 因此与现有方式的条形码读取方法相比能够大幅度防止条形码符号1的错误 读取。

而且,将误差的范围从现有方式的±0.5扩大到±1.0,使对象字符增加。 而且,因为提取1个字符量的6个宽度数据D10和对象字符的前后5个宽度数据 D10,所以与现有方法相比能够提取更多的锁定2~6个相加模式的各模块数为 误差1以内的整数的对象字符而得到的候选字符。另外,通过锁定候选字符, 能够实现计算量的减少,能够缩短模式识别处理所花费的时间,从而实现数 据处理的高速化。由此,与现有方式的条形码读取方法相比能够大幅度防止 条形码的误读取。此外,通过使设定误差的范围时的阈值能够改变,还能够 选择宽度数据D10的可靠性。

在该例中,关于条形码符号的标准,对CODE128的情况进行了说明, 但并不限于此,至于CODE39、EAN/UPC、交错式25条码、Codabar码、RS  S、RSS Limited码、RSS Expanded码等各种方式也同样能够应用本发明。

产业上的可利用性

本发明最适于应用于读取条形码符号并输出条形码数据的条形码符号 读取装置。

附图标记说明

2:光学信息读取部;3:时钟产生部;4:计数器部;5:m级数据缓存 区;6:选择器部;7:x倍器;8:比较器;9:起始空白保存部;10:宽度 数据保存部;11:接口部;12:微处理器;21:ROM;22:RAM;23:CP U;23a:运算部(运算单元);23b:提取部(提取单元);23c:比较部;23d: 检索部;24:期待值保存部;25:解码缓存区;100:条形码符号读取装置(光 学信息读取装置)。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号