天津紡織工學院

[拼音]: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)後處理:根據上下文之間的關係,如片語、文法關係、語義等,對單個漢字的識別結果進行核對。有些在識別階段不能確認的字,可能在此階段得到確認;一些識別錯誤的字也可得到糾正。最後仍不能確定的字,可以採用人-機對話方式判別。

手寫體漢字識別

手寫漢字字形的變化很大,比印刷體更難識別。根據書寫時的要求還可進一步分為兩類:對書寫限制很嚴的一般稱為手寫印刷體漢字;限制較少的稱為自由手寫體漢字。對手寫體漢字的識別,一般傾向於採用句法方法,儘量把一個字中的各個部分分開,最好能分解為基本筆畫。在前處理階段,一般需要進行細化處理,將字形變為基本上由寬度為一點的筆畫組成,這樣易於把一些拓撲特徵,如端點、節點、封閉線等抽取出來。

聯機實時手寫漢字識別

在書寫的同時進行識別比識別已經寫在紙上的漢字容易一些,因為可以獲得較多的資訊,如書寫時的筆順、筆畫的方向、書寫時的輕重緩急等。相交筆畫的分割,可以根據時間上的差別判斷。實時手寫輸入一般通過數字化圖板進行,書寫時的筆畫變為由一連串代表方向的數字組成的鏈碼。計算機對輸入的鏈碼進行去幹擾、壓縮、分割等處理,再與機記憶體儲的模型比較,先識別出各種不同的筆畫,再根據筆畫的位置和筆畫間的關係用句法方法來識別整個字。實時手寫漢字識別還有可能辨別不同人的書寫特點,因此可用於識別簽名。