[拼音]:Hanzi shuru shuchu
[外文]:Chinese character input and output
计算机通过包含汉字在内的字符集与人进行通信。在中国和一些使用汉字的国家,人们经常通过汉字进行信息交换。当这些信息要由计算机来处理时,首先要将其变为计算机能接受的代码形式;计算机处理后的信息又必须以内部代码的形式变成汉字字形,才能为人们所理解。这个过程就是汉字的输入和输出。它是在使用汉字的国家和地区推广应用计算机的必要前提。
中文电报和中文打字机是最早用机械处理汉字信息的手段和设备。中文电报码是仍在使用的一种汉字输入编码,以硬性规定的办法,用四位数字代表一个汉字,把汉字的输入简化为数字的输入。中文电报可以直接利用西文电传机来传送,但输出的数码要由译电员翻译成汉字。
60年代,在日本出现的汉字自动照排机,首先采用了汉字字形库。将汉字字形记录在缩微胶片、磁盘等存储介质上,按照汉字的代码从字形库中取出相应的字形,经控制曝光在照相底片上直接排版。汉字字形库与当时计算机已有的一些图形输出方法(如静电印刷)相结合,构成实用的计算机汉字输出手段。60年代后期,中国研制出将中文电报码自动转换为汉字输出的译报机。
70年代,在计算机应用领域汉字信息处理系统的研制变得日益重要。在中国、日本和美国,相应的汉字输入编码研究工作、汉字字形库的构成、汉字输出设备的研制等都取得很大进展,出现了一批实用的汉字输入输出设备和系统。
计算机可以模拟人的智能,因而也可以在汉字输入过程中代替一部分人的脑力劳动,提高自动化程度。70年代后期到80年代初期,相继提出并得到应用的人-机对话、词组联想、日文字母-汉字变换和拼音-汉字变换等方法都取得了较好的效果;在实验室研究多年的印刷体汉字自动识别也进入实用阶段。在汉字输出方面,计算机已用于实现字形信息压缩、字体和字形的变换等。
汉字输出
汉字字形库
汉字以模拟或数字的形式记录在存储介质上。字形库有汉字代码输入时,即输出相应汉字的字形信息。汉字字形库初期多采用模拟式,后来数字式占绝大多数。
模拟式汉字字形库
将整个字形以连续的形式记录下来。例如,用缩微照相方法记录在透明的圆盘上;用光刻方法记录在模板上;用全息照相方法记录在全息光存储器中。读出方法相应有:圆盘的机械转动加上选字机构的径向移动;用电子束扫描模板;用激光偏转器选字。
从模拟式字形库中读出的是完整的字形,可以利用机械或光学的方法将字形投射到输出介质的适当地方,但灵活性差,设备的结构也较复杂。一种较好的方法是用摄像管接收字形,把光学图像变为电信号。用电信号代表的字形信息便于传递,复原时还可放大或缩小。摄像管对字形逐点扫描时,扫描线越密,取得的字形信息就越多,复原出来的字形质量也越高。
数字式汉字字形库
记录前先把汉字分解为点阵,以点阵的形式存储在记录介质上,有笔画的地方为“1”;空白的地方为“0”。图1是一个22×24点阵的汉字的例子。汉字分解得越细,字形质量也越高,但所需的存储量也越大。汉字显示器采用15×16的点阵已足够清晰;质量要求较高时采用22×24的点阵。汉字打印机一般以22×24点阵较为适当;32×32的点阵用于非击打式的汉字印字机,印字质量接近一般印刷品的质量;自动照排系统要求96×96以上的点阵。
字形信息变为二进制数形式,用任何类型的计算机存储设备都可以存放。一般采用磁盘或半导体存储器存放字形。单纯用磁盘的速度较慢,一般与半导体随机存储器配合使用。字库设在磁盘中,使用时全部或部分调入半导体随机存储器中。由于大规模集成电路技术的发展,已有可能制成体积小、价格低的半导体汉字字形库。
汉字字形信息压缩
汉字量大,字形复杂,汉字字形库一般需要占用较大的存储容量。尤其应用于出版印刷等场合,字形的点阵密度高,还有不同字体和字号的区别,所需存储器容量就更大。存储器的价格在这些汉字信息处理系统中占有相当大的比例,因此压缩汉字字形信息就是一个重要的课题。
向量式字形压缩方法
汉字可以分解为笔画,每种笔画又可以用一段段的直线(向量)近似地表示。一个笔画的终点到下一个笔画的起点也可以用一个向量来表示,但它是不画出来的。这样,每个汉字字形都变成了一连串的向量。终端设备若为绘图仪等,则可直接用向量表达式控制画出汉字。使用光栅扫描式的显示器和点阵式打印机时,输出前先将这些向量信息转换为点阵信息。对于高质量的汉字字形,向量描绘的是笔画的轮廓,输出前将它转换为实心的笔画。高质量字形压缩时要求保留字形的细节,但又要取得很高的压缩比和较快的复原速度,因而算法很复杂而且往往要求用专用的硬设备来实现。
字根式字形压缩方法
几万个汉字可以由数量较少的字根组合而成,如部首、偏旁和基本的笔画组合等。按照不同的分解原则,字根的数量也不同,一般是几百个。在汉字字形库中只存放字根的字形点阵或字根的向量表达式;其他汉字则存储其字形表达式。字形表达式是组成此字的字根或汉字,及其在字形中的位置和应取的大小比例。采用这种压缩方法,字形库的容量大约可压缩到十分之一,但字形的质量较差,只适用于某些要求不高的情况。
游程式字形压缩方法
汉字字形中有很大一部分是空白的,笔画部分在水平方向或垂直方向上也往往是连续的。因此,可以对汉字字形点阵进行逐行(或逐列)扫描,用空白段和笔画段的长度来代表字形中这一行(或列)的信息。相邻的行列往往相差不多,可以只记录其间的差别。点阵越大,这种方法的效果越显著。一般用于高质量字形的压缩。
哈夫曼树字形压缩方法
将字形点阵分成为若干大小相同的子点阵,例如,2点×2点。包含 n个点的子点阵,有2n种黑白点的各种可能的组合。由于笔画的连贯性,各种组合出现的概率和与其相邻的子点阵的组合有关。利用这种相关性,在对各子点阵进行编码时根据前面子点阵的情况而采用不同的编码。条件概率高的组合用较短的编码表示,条件概率低的则用较长的编码,可以使实际使用时的平均码长比原来用点阵表示时所需的码长n 短。这种方法和游程法都可以完全保留原字形的信息,当字形点阵小时,其压缩比优于游程法,但压缩效率仍比不上字根法或向量法。
汉字显示器
汉字可以看作是一种图形,因此计算机的各种图形显示设备都能显示汉字。汉字又是一种字符,与西文字符的差别只在于数量多、字形复杂,因而也可以借用计算机字符显示设备的技术加上汉字字形库实现汉字的显示。使用较为广泛的是光栅扫描式的阴极射线管显示器。
点图形式汉字显示器
电子束反复地以固定的速度从左到右,从上向下对整个屏幕逐点扫描,屏幕上每点的亮度由一个与屏幕逐点对应的缓冲存储区控制。最简单的情况是,存储区中的每一位对应屏幕上的一个点,某一位为“1”时,相应的屏幕上的点就亮,反之则暗。把汉字作为一个图形,将它的字形点阵写入存储区中相应的位置,就会显示在屏幕上。这种方式比较灵活,汉字的大小、位置等都不受限制,汉字还可以和图形混合显示。缺点是当修改显示内容时,每个字都要将字形信息全部重写,不适合需要快速更换屏幕内容的场合。
字符式汉字显示器
扫描方式与点图形式相同,但亮度由汉字字形库中读出的汉字字形信息控制。缓冲存储区内存放的是汉字的代码。一般满屏幕可显示12~24行,每行32~40字。每次扫描都从显示缓冲区读出汉字代码,按照这个代码从字形库取出字形信息。一般每次只取对应于当时扫描的那一行的信息,所以为了显示一个汉字需要多次访问字形库,这就要求字形库有足够快的速度。采用这种方式时,修改屏幕上的内容只需要改变缓冲区中的代码,比重写字形点阵快10倍以上,整个屏幕的变换可以在不到1秒的时间内完成。
汉字打印机
由计算机控制在纸面上印出汉字的设备,也称汉字印字机,如喷墨式汉字印字机、感热式汉字印字机和热转写式汉字印字机等(见输出设备)。汉字打印机输出的汉字一般是由点阵组成的,因此任何可以输出点阵的计算机输出设备原则上都可以输出汉字,如静电印刷机和激光印刷机等。使用比较普遍的是专门为打印汉字而设计的针式汉字打印机。打印头由一列直径约0.2毫米的合金钢针和驱动它们的电磁铁组成,一般为24根。汉字字形信息控制针的动作,一次可打印出字形中的一列。打印头横向移动,可逐步打印出一行汉字。热转写式汉字印字机是非击打式的例子,它用集成电路技术做成一列可控的发热点作为印字头,代替了针式打印机的打印头。字形信息控制每个点是否发热,使与印字头接触的特殊色带上相应点的染料受热蒸发,印到色带另一面的纸上去。用三段不同颜色的色带逐次套印,可以印出彩色的汉字和图形。
汉字输入
汉字输入要解决的是从汉字字形到计算机内部代码之间的变换。它比汉字输出困难得多,一般有两种实现途径:一是由计算机自动识别汉字,要求计算机模拟人的智能,汉字阅读机即其一例;二是由人来完成识别工作,将相应的汉字编码以手动方式输入计算机。汉字总数有几万个,常用字也有几千,很难建立识别与编码之间的条件反射,因此,汉字输入问题与西文字符完全不同。具体的汉字输入方法有很多种,须根据具体情况选择。
整字键盘汉字输入
也称汉字大键盘输入。由人从盘面上列出的几千个字中直接选取所需要的字。这种方法虽然简单,但不熟练的人要从几千字中找一个字相当困难。盘面上容纳的字数有限,遇到盘外字又须作特殊处理。
笔触式大键盘
盘面上约有2000~3000字。用特殊的笔指点盘上某个字时,键盘通过静电感应、电磁耦合、光耦合等确定笔的位置。将笔所指定的位置的坐标送给计算机,在计算机内部预先放好的表格中可查出此字的编码。盘面上覆盖的字表可以更换或翻页,因而可以按不同的用户选不同的字符集,也可通过翻页来增加可供输入的字。
换位式大键盘
通常有200~300个字键,每个键上刻有十几个汉字,另有与此对应的十几个换位键用来选字。操作时两手分别按字键和换位键。这种方法适合于经过训练的专职人员操作。
滚筒式键盘
将汉字排列在圆筒上,操作时一手转动圆筒,另一手沿轴向移动游标指向所需的字。按下按钮,圆筒和游标的位置即被送入计算机,查出该字的编码。
标准键盘汉字编码输入
计算机用的标准键盘只有几十个键,而需要输入的汉字至少有数千,用标准键盘输入汉字时,平均每个汉字的按键次数必定超过一次,也就是用两个以上的标准字符的组合代表汉字,这就是汉字的编码。编码的方案有中文电报码、汉字笔画编码、汉字字形编码和汉字音形编码。
中文电报码
以硬性规定的方式用四位数字代表一个汉字,字符集最多可有 1万字。编码中的各位数字与汉字的字形或字音信息没有明确的关系,操作者全凭记忆来实现汉字到编码的变换。类似的还有用 4个十六进制字符代表一个汉字的国家标准信息交换码和用 3个英文字母或2个ASCⅡ字符代表一个汉字的方案。熟练的专职操作员可以用这种方法高速地输入汉字,但一般人员几乎每个字都要翻阅编码本。
汉字笔画编码
汉字的基本笔画可以归结为五至二十几种,每种笔画用一个键代表,像写字一样,一笔一画地按键可以把汉字的信息送入计算机,再由计算机转换为内部代码。由于汉字平均的笔画数在10画左右,这种编码的码长较长。还存在不同的字可能笔画完全相同,同一个字却有不同的写法等问题。为了解决这些问题,就要增加一些规则,所以使用起来很不方便。
汉字字形编码
这类编码不取全部笔画,而只是从字形的某些固定部分提取信息。例如,取汉字四个角的笔形,取三个角的笔形,将汉字拆为偏旁、部首和一些基本笔画组合等来编码。由于汉字量大,笔画复杂,又没有公认的分解方法,因而这类编码的方案也多,很难统一。一般说来,它们都或多或少地存在一码多字(重码)、一字多码(二义性)、规则较复杂及例外情况较多等缺点。但它们有一定的规律性,比电报码易学,而且不需要掌握汉字的语音,所以得到了较为广泛的应用。
汉字音形编码
汉字的同音字多,单纯用语音的编码需要计算机辅助才能实现。但是,语音信息和字形信息结合起来,可以简化编码规则,二义性也较少。例如,用一个汉字的声母、韵母、部首、偏旁编码;将一个汉字拆开为两部分,将两部分的发音组合起来作为编码等。有的还加上字义信息或用拼音代表词组。这一类方案的缺点是要求同时掌握汉字的形和音,这对于一些不常用的字很难做到。
专用键盘汉字编码输入
为使某种编码方案操作更为直观,效率更高,可以设计专门的键盘。这类键盘的键类一般介于大键盘与标准小键盘之间。
汉字字根编码
一个汉字在空间上往往可以分为几个相对独立的部分。它们可以是另一个汉字,一个部首,一个偏旁或由基本笔画组成的一些常用的构字单元,统称为字根。把汉字分解得越细,总的字根就越少,一般选取200~1000个字根。字根可以按一定规则分类,类别约有100左右,每类由一个键代表便形成各种专用的字根键盘。类别如少于50,就可利用标准键盘输入。如果不分类而直接输入字根,往往也可以利用笔触式大键盘。字根编码法是将汉字拆成字根再输入,有的方案还输入字根之间的相对关系,如上下、左右、内外、相交等。
汉字双拼编码
这是一种特定的字根编码方案。除了不能拆的独体字外,其他汉字一律拆为两部分,这样约得到2000个字根。利用笔触式大键盘输入字根,由计算机判断并组成汉字。这种方案比一般整字键盘容纳的字多,很少有盘外字。为了提高效率,对一些最常用的字,即使可以拆开,也采用整字输入方式。
人-机交互式汉字输入
计算机与人配合可以在汉字输入过程中减轻人的脑力劳动,显著提高输入效率。计算机不仅接受人输入的信息,而且不断地给出反馈信息,提醒和帮助操作人员。
人-机对话
对于大多数人来说,在数量不多的一组字中选出一个字比记住一套规则简单得多,操作的速度和准确性也高一些。一般的编码输入方法很难避免重码,为此往往需要增加一些规则或记住一些例外的字。如果在重码的情况下,将该码代表的几个字在屏幕上显示出来由人挑选,就可不记这些规则和例外。人-机对话式输入方法把这种情况一般化,允许所有的字都有重码,而且一个码可以代表10个以上的字。这可使编码规则大大简化,如只输入汉字的拼音或只取一个字的两个笔形。按照这个编码可以取出一组字,由操作员按照此字在屏幕上的位置输入相应的选择字符。这个字符与前面输入的编码合在一起形成字的完整输入编码,它与别的字的编码之间没有重码问题。
汉字的使用频度相差很大,最常用的20~30个字约占总出现次数的20%,较常用的500~600个字(包括上述的最常用字)约占80%。一般的汉字处理系统的字符集约有7000字,在输入汉字时可以对它们分别处理,出现次数多的字编码短,出现次数少的字编码较长。但要记住这些编码并非易事。人- 机对话方法可以较好地解决这个问题,由于计算机可以根据不同的情况在屏幕上显示出不同的字,使用者不必记住特定的缩短了的编码,只要在屏幕上选择这些常用字即可。
词组联想
现代汉语中的汉字大多数是以词组的形式出现的,利用词组中各个字之间的相关性,可以提高输入的效率。计算机中可以存放一部常用词的词典,每当输入一个字时,计算机把词典中以这个字开头的各个不同的词或词组显示出来,操作者可以直接选用而不必再输入它们的编码。计算机的这种功能类似于人的联想,也相当于在输入每个字后把在此情况下最常出现的字都提供出来。这可以减轻操作人员的劳动并提高输入速度。
拼音-汉字变换
人与人之间可以脱离字形信息用语言进行交流,依靠上下文关系和交谈双方的知识基础解决同音字和同音词问题。按照这样的方法基本上可以实现采用拼音的输入方案:以词组及与其相关的附加语法成分为单位,输入它们的汉语拼音,与计算机中存储的词组进行比较并检查语法关系;对于不能判明的词和字再根据计算机中存储的有关知识进一步检查语义和上下文关系;仍无法确定时,通过人-机对话由操作员决定。
汉字阅读机
用计算机直接扫描文稿并识别印刷或手写的汉字,将它们自动转换为计算机内的代码,可以省去人工按键的劳动,是一种理想的汉字输入方法。计算机的处理速度快,又不会受偶然因素,如疲劳、情绪、外界干扰等的影响。
印刷体汉字识别
印刷或打印的汉字字形相对稳定,比较容易识别。虽然由于印刷质量的差异和扫描输入时一些随机因素的影响,部分细节会有所变化,但字形的轮廓、笔画、各笔画间的相对位置等特征基本一致,因此可以采用与标准汉字进行匹配的方法来识别。印刷体汉字识别一般可分为以下几个步骤。
(1)图形数字化:由扫描器将纸面上的汉字字形分解为点阵,转变为计算机内部的数字表示形式,一般是一个二进制数的矩阵。矩阵中的每一个元素代表字形中的一个点,“1”代表黑,“0”代表白。
(2)前处理:消去扫描过程中产生的干扰和字形中的一些缺陷;把字与字分开;对字形的大小、位置、笔画宽度等进行规格化。为此,有时须控制扫描器反复扫描几次。
(3)粗分类:汉字的总数比西文字母多 100倍以上,为了减少输入字形与阅读机内部标准模型的比较次数,一般都采用两级或更多级的比较方法。第一级是粗分类,它根据输入字形的某些特征,如四边的轮廓、笔画的复杂程度等将它归入某一类。
(4)识别:经过粗分类后的输入字形与机内相应的一组标准模型比较,计算与各模型的类似度,取类似度最大的作为识别结果。可以按一个字的整体进行比较;也可以将一个字分为几部分,分别进行比较,各部分之间的关系用句法(结构)方法来描述,并与机内的标准描述比较。
(5)后处理:根据上下文之间的关系,如词组、文法关系、语义等,对单个汉字的识别结果进行核对。有些在识别阶段不能确认的字,可能在此阶段得到确认;一些识别错误的字也可得到纠正。最后仍不能确定的字,可以采用人-机对话方式判别。
手写体汉字识别
手写汉字字形的变化很大,比印刷体更难识别。根据书写时的要求还可进一步分为两类:对书写限制很严的一般称为手写印刷体汉字;限制较少的称为自由手写体汉字。对手写体汉字的识别,一般倾向于采用句法方法,尽量把一个字中的各个部分分开,最好能分解为基本笔画。在前处理阶段,一般需要进行细化处理,将字形变为基本上由宽度为一点的笔画组成,这样易于把一些拓扑特征,如端点、节点、封闭线等抽取出来。
联机实时手写汉字识别
在书写的同时进行识别比识别已经写在纸上的汉字容易一些,因为可以获得较多的信息,如书写时的笔顺、笔画的方向、书写时的轻重缓急等。相交笔画的分割,可以根据时间上的差别判断。实时手写输入一般通过数字化图板进行,书写时的笔画变为由一连串代表方向的数字组成的链码。计算机对输入的链码进行去干扰、压缩、分割等处理,再与机内存储的模型比较,先识别出各种不同的笔画,再根据笔画的位置和笔画间的关系用句法方法来识别整个字。实时手写汉字识别还有可能辨别不同人的书写特点,因此可用于识别签名。