提高四一七条码编码中日韩文字符效率的方法

文档序号:6577544阅读:209来源:国知局
专利名称:提高四一七条码编码中日韩文字符效率的方法
技术领域
本发明专利申请的主题涉及一种编码/解码中日韩文的四一七条码设备,包括一个在公知的存储器中存储有中日韩文字符流、四一七条码原始码字或条码的计算机,所述的计算机在中日韩文编码/解码程序的控制下对中日韩文字符流进行压缩编码处理并生成四一七条码原始码字或条码,或对编码结果进行逆向解码处理,从而提高四一七条码编码中日韩文的效率和容量。
2.背景技术四一七条码(PDF417)是一种高容量二维条码技术的国际标准,该标准在中国对应的是国标《四一七条码》(中华人民共和国国家标准《四一七条码》GB/T17172-1997,1997)。在国际上,四一七条码已被广泛应用于身份证、驾驶证、军人证、选民证、社会福利卡等各类证卡系统以及金融、海关、工商、税务等报表管理系统;在交通、运输、能源、制造业、医疗卫生及后勤管理等领域也有着广泛的应用。随着我国经济的快速发展,四一七条码技术正以其成本低廉、保密防伪能力强、便于计算机自动录入等优点在我国得到愈来愈广泛的应用。
四一七条码定义了三种压缩(Compact)模式,即文本压缩模式、数字压缩模式和字节压缩模式。文本压缩模式定义英文字母字符的压缩方法,一个四一七条码通常可以容纳1848个英文字母字符;数字压缩模式定义阿拉伯数字字符的压缩方法,一个四一七条码通常可以容纳2729个阿拉伯数字字符;字节压缩模式定义对信息源以字节方式进行压缩处理,一个四一七条码通常可以容纳大约1100字节。
GB18030是2000年3月17日发布并强制执行的中文信息处理标准。该标准包含单字节,双字节和四字节的编码,涵盖简繁体中文、日文和韩文以及少数民族字符。为彻底解决邮政、户政、金融、地理信息系统和证件(如身份证、学生证、驾驶证等)的管理等迫切需要的人名、地名用字问题提供了解决方案。尽管该标准强制执行的范围不包括嵌入式系统和条码系统,但是考虑到四一七条码会经常用于邮政及证件管理,对GB18030更好的支持会进一步推广四一七条码的应用。
现有的四一七条码中文处理技术一般将中文按字节压缩模式进进行处理。在该模式下,对于双字节的汉字字符集,如GB2312、GBK或GB13000,平均每码字(四一七条码的编码单位)大约可编码1.2个字节,一个四一七条码大约可编码500个汉字信息(http//www.symbol-china.com/2d/technology/technology.htm)。在现有的技术模式下,双字节中文字符的编码效率(平均每个码字可编码的中文字符)为0.6;处理四字节的GB18030字符时,其编码效率则是0.3。
3.发明内容3.1本发明所要解决的技术问题本发明要解决的问题是,通过适当的计算机信息技术处理方法来提高四一七条码对中日韩文的编码效率,从而使四一七条码能更好地支持GB18030字符集。
注本发明中,编码效率是指平均每个四一七条码码字可编码的中日韩文字符的数目。
3.2本发明所使用的技术手段为了提高四一七条码对中日韩文的编码效率,本发明采用了如下的技术手段(1)远东语言模式切换控制技术;(2)语言及主题亚模式控制技术;(3)单码字压缩编码技术;(4)双、三码字漂移控制技术。
注国际上通常用远东语言通指中日韩文。
3.2.1远东语言模式切换控制技术本发明引用一个标准四一七条码定义的保留控制码作为远东语言模式切换控制码。该控制码的主要功能是,从任意其他的压缩模式(从文本、数字或字节压缩模式)切换到本发明所定义的远东语言压缩模式。其主要特征有(1)在同一四一七条码中可以多次出现;(2)任何其它控制码可中止当前模式。
3.2.2语言及主题亚模式控制技术本发明定义了语言及主题亚模式控制码及其控制技术。在四一七条码中,该亚模式控制码紧随第一个远东语言模式切换控制码,用于确定该四一七条码内容的语言、主题,从而确定其编码与解码的方法。
一个包含远东语言模式切换控制码的四一七条码,包括宏四一七条码,有且只有一个语言及主题亚模式控制码,即紧随第一个远东语言模式切换控制码的码字。如果有第二个或更多的远东语言模式切换控制码出现在同一个四一七条码,其语言及主题亚模式不变,换言之,第二个或更多的远东语言模式切换控制码后的不是语言及主题亚模式控制码。
3.2.3单码字压缩编码技术本发明采用单码字压缩编码技术对远东语言进行压缩编码。一个特定的语言及主题亚模式有一个对应的高频字的压缩编码表;在该亚模式下,所有在该压缩编码表的文字、符号都采用单码字编码。
3.2.4双、三码字漂移控制技术在某一亚模式下,对不在对应的压缩编码表的远东语言字符,本发明采用漂移控制技术进行编码。具体而言,对远东语言字符,单、双或四字节的内码转换成四一七条码码字时,若其内码不在对应的压缩编码表,则采用漂移码+编码的双码字编码或则采用漂移码+编码+编码的三码字方法。
3.3远东字符信息的计算机技术处理过程本发明所定义的对远东字符信息计算机技术处理过程包括远东字符流编码过程和逆向解码过程。
在本发明技术定义下,四一七条码对阿拉伯数字字符(数字压缩模式)和字节(字节压缩模式),使用国家标准定义的方法处理。在远东语言模式下,对英文字母字符的压缩方法,做如下修改1)对于远东字符间的单个英文字母字符,采用本发明定义的压缩模式;2)对于两个或以上的英文字母字符,使用国家标准定义的方法处理,即通过文本压缩切换控制码(900),进入标准的文本压缩模式。
例如对符号串“本发明完成于2002年5月1日”中,对“2002”采用标准的文本压缩模式,而对“5”则采用本发明定义的压缩模式。
3.4发明取得的效果及展望本发明的技术可以提高四一七条码中文字符的编码效率,从每码字0.3-0.6个中文字到0.8-0.9个中文字;从而将四一七条码约500左右汉字的中文编码容量提高到高达900字左右。
本发明能提高四一七条码的中文编码容量,为四一七条码的应用提供了有力的支持。进一步的工作将是建立各种主题的高频字的标准压缩编码;建立并完善压缩编码表的建立、发表及维护机制;同时希望建立四一七条码的附加国家标准以推动国民经济的发展。
4.技术处理过程流程图说明4.1编码流程图(A)(见说明书附

图1)远东字符流编码过程指的是,利用公知的计算机将远东字符流转换成四一七条码码字或四一七条码的过程。该过程描述如下初始化过程(①)设定该条码的语言及主题环境,以及压缩编码的方法。通过读取字符过程(②)反复读取单、双、四字节的远东字符内码后;判定是否为连续单字节字符串的过程(③)预读下一字符并判定是否为连续的单字节字符(英文),如果是,则切换到标准文本编码(⑨);否则对该字符进行远东字符编码;编码过程首先初始化设定的压缩编码方法,判定该字符是否为单码字压缩编码(④);如果是,则计算并获取单码字编码(⑤);否则,计算多码字编码的漂移码和编码(⑥);然后对编码的结果进行输出(⑦),根据适当的条件输出模式控制码、亚模式控制码、编码和漂移码,并设定适当的标志;最后判定是否结束过程(⑧)决定是否终止编码或反复执行读取、编码过程。
4.2解码流程图(B)(见说明书附图2)远东字符流解码过程指的是,利用公知的计算机,将四一七条码码字(原始解码结果),转换成远东字符内码的过程。该过程描述如下
首先,通过读取码字的过程(①)读取码字;当判定(②)为远东语言控制码时,进入定义的解码过程,否则继续其他解码模式(⑩);在一个四一七条码的解码过程中,如果第一次进行远东语言模式的切换(③),则读取下一码字,并解读为语言及主题亚模式控制码,并根据该码字初始化单码字压缩表(④),然后反复执行读取、解码的过程;如果该码字为二或三码字漂移码(⑤),则应读取随后的一或二码字(⑥);然后通过计算原始编码的过程(⑦)计算远东字符内码及类型,并输出该内码(⑧);通过判定是否结束的过程(⑨)决定是否继续解码或结束解码过程。
具体实施方式
举例5.1远东语言模式切换控制码本发明使用918作为远东语言控制切换码,在四一七条码的标准中,918是保留的控制码之一。
5.2语言及主题控制码在一个四一七条码中,当第一次出现远东语言控制码时,随后的语言及主题亚模式控制码定义了该条码的语言及主题环境。该码字的范围是0-899;其语言及主题的定义如下000-199简体中文200-399繁体中文400-599日文600-799韩文800-899保留对简体中文(000-199)的主题,进一步作如下定义0-通用主题1-证卡系统2-海关3-工商4-税务5-金融6-交通7-运输8-能源9-制造业10-医疗卫生11-后勤管理12-199待定义5.3编码范围和漂移码范围的确定在本实例中,对四一七条码的远东字符编码作如下规定0-849编码区和单码字编码区849-899漂移码与保留码对单、双字节的GB18030字符,采用漂移码+编码的双码字编码;对四字节的字符,采用漂移码+编码+编码的三码字编码。所有方式的编码区均为0-849。
5.4简体中文通用主题的单码字压缩编码表及其编码效率当语言及主题亚模式控制码为0时,即以简体中文为主的通用主题,本发明使用的单码字压缩编码表见附录。其编码特征是0-29为符号区;30-899为双字内码。
该压缩编码表是扫描约16,000,000字数的通用主题文字,得到统计模型后,再通过手工建立的,其覆盖面超过85%的常用汉字。换言之,对于通用主题约900字数的中文片断,平均高达765字落在本表。
若以本压缩编码表进行通用主题的压缩编码,其中约765为单码字,假设其余135字为双码字编码,则编码该900字的片断所需的码字大约为1035(765+135*2),远远少于字节模式压缩所需的码字为1500;其编码效率提高到0.87(900/1035)。
5.5GB18030字符单、双字节漂移码及编码5.5.1双字节字符及漂移码分为两部分本发明建议使用的编码GB18030字符单、双字节的漂移码的范围为850-868;并作如下划分850-859对应于单字节字符和双字节编码的0x8140-0x817F,其中第一漂移码(850)的前256个码位编码单字节字符。
860-868对应于双字节字符的0x8180-0x81FE。
5.5.2计算单字节字符的漂移码与编码的伪代码unsigned short int gSize=850;c1B(char c,unsigned short shift,unsigned short code){shift=gSize;code=c;}5.5.3计算双字节字符的漂移码与编码的伪代码<pre listing-type="program-listing"><![CDATA[  unsigned short int gSize=850;  C2B(unsigned short c,unsigned short shift,unsigned short code)  {  Get b1 and b0;(b1 is the first byte ranged from 0x81-0xfe,b0 is  the second byte ranged from 0x40-0xfe)  int t=0;  t=(b1-0x81)*(0xfe-0x40+1)+(b0-0x40)+256;  shift=850+(t/850);  code=t MOD 850;}  输出顺序为shift,code。]]></pre>5.6四字节字符漂移码和编码5.6.1漂移码范围在本实例中,对GB18030的四字节字符采用三码字编码,其漂移码的范围是869-871;其随后的两个码字的范围是0-849。
5.6.2计算四字节字符的漂移码与编码的伪代码<pre listing-type="program-listing"><![CDATA[  unsigned short int gSize=850;  C4B(unsigned int c,unsigned short shift,unsigned short code1,unsignedshort code2)  {  Get b3,b2,b1 and b0;(b3 is the first byte ranged from 0x81-0xfe,b2 is  the second byte ranged from 0x30-0x39,b1 and b0 are the third andforth byte.)  int t=0;  t=(b3-0x81)*(0x81-0xfe+1)*(0x30-0x39+1)*(0x30-0x39+1)+   (b2-0x30)*(0x81-0xfe+1)*(0x30-0x39+1)+   (b1-0x81)*(0x30-0x39+1)+   (b0-0x30)  shift=869+(t/850);  t=t MOD 850;  code1=t/850  code2=t MOD 850;  }  输出顺序为shift,code1,code2。]]></pre>5.7还原编码的伪代码<pre listing-type="program-listing"><![CDATA[  unsigned short int gSize=850;  Restore(int c,int type,unsigned short code1,unsigned short code2=0,unsigned short code3=0)  {  int t;  if(code1<gSize)/*compressed code*/  {  look for compressed code  c=code;type=type;  }  else if(code1<859)/*double codeword,first area*/  {  t=code1*gSize+code2;  if(t<850*850+256)/*Single byte code*/{  c=t MOD 256;  t=SINGLEBYTE;  }  else  {  c=t-256+0x8140;  t=DOUBLEBYTE;  }  }  else if(code1<869)/*double codeword,first area*/  {  t=code1*gSize+code2;  c=t-256+0x8180;  t=DOUBLEBYTE;  }  else/*Triple codeword*/  {  Caculate c  c=c;  t=FOURBYTE;  }  }]]></pre>5.8编码过程的伪代码<pre listing-type="program-listing"><![CDATA[  Encode()  {  Init();/*m=T,s=c1=c2=l=0,lansub=x,codetab=compressedcode*/  Start  int c=ReadChar();/*read single,double,or four-byte characters*/  If is end of stream,jump to End;  if c is a single byte character  {  int c1=GetNextChar();/*Just get the next one*/  if c1 is a single byte character  {  m=F;  Compact as text mode  }  }  else  {  if c is in the codetab  {s=0;c1=Caculate1B()/*Calculate the code value of c1*/  }  else//need shift code  Calculate shift and code(s,c1,c2);  }  if(m!=F)Output(CJK);  if(l!=1)Output(lansub);l=1;  if(s!=0)Output(s);s=0;  if(c1!=0)Output(c1);c1=0;  if(c2!=0)Output(c2);c2=0;  jump to start;  End  }]]></pre>5.9解码过程的伪代码<pre listing-type="program-listing"><![CDATA[  Decode()  {  int l=0;s=c1=c2=0;  codetab=NULL;  m=0;  Start  int cw=ReadCodeword();  If is end of barcode,jump to end;  if(cw!=CJK &amp;&amp; m!=CJK)/*decode as other mode*/  {  /*Other process*/  m=!CJK;  }  else  {  m=CJK;  if(l==0)/*Is the first time of CJK*/  {  l=1;  int lansub=ReadCodeword();  codetab=x;/*set the codetab based on lansub*/  goto Start;  }  else  {  if cw is a two-codeword shift code;  {  s=cw;  c1=ReadCodeword();  }if cw is a triple codeword shift code;  {  s=cw  c1=ReadCodeword();  c2=ReadCodeword();  }  Restore();/*Get the character and type based on s,c1,c2*/  output C;  }  }  jump to Start;End}  *************************结束************************]]></pre>
附录简体中文通用主题的单码字压缩编码表
注1)该表为简体中文通用主题(亚模式控制码为0)的单码字压缩编码表;2)编码范围是0-849;3)该表奇数列(1,3,5,7,9)为四一七条码的码值,偶数列(2,4,6,8,10)为GB18030的十六进制的内码;在本实例中,只包含双字节内码;4)0-29为符号和标点编码,30-849为汉字编码。
5)该压缩编码表是扫描约16,000,000字数的通用主题文字,得到统计模型后,再通过手工建立的,其覆盖面超过85%的常用汉字。换言之,对于通用主题约900字数的中文片断,平均高达765字落在本表。
************************附录结束**********************
权利要求
一种根据语言与主题环境压缩编码中文、日文和(或)韩文的,适用于四一七条码的计算机信息处理的方法,包括用于远东语言控制的步骤;用于控制语言及主题环境的步骤;用于转化中文、日文和(或)韩文内码到四一七条码码字的步骤;用于将四一七条码码字还原到的中文、日文和(或)韩文内码步骤。
全文摘要
本发明,提高四一七条码编码中日韩文字符效率的方法,其主题涉及一种编码/解码中日韩文的四一七条码设备及控制程序的技术、方法。本发明的方法通过模式控制、语言及主题控制、基于语言及主题的压缩编码、以及漂移码等技术,提高四一七条码编码中日韩文字符的效率,如汉字的编码效率从平均每码字0.3-0.6个中文字到0.8-0.9个中文字;从而增加四一七条码的中日韩文编码容量,如单个四一七条码编码汉字的容量从500左右增加到高达900左右。该方法适用于需编码中文的各类证卡系统(特别是需要GB18030支持的系统)、以及金融、海关、工商、税务等报表管理系统。
文档编号G06F17/28GK1458600SQ0211746
公开日2003年11月26日 申请日期2002年5月17日 优先权日2002年5月17日
发明者陆柏芳, 陈克, 杜春蕾 申请人:陆柏芳, 陈克, 杜春蕾
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1