一種字形識別方法及裝置的制造方法
【技術領域】
[0001 ]本發(fā)明設及文字識別領域,具體設及一種字形識別方法及裝置。
【背景技術】
[0002] 隨著信息技術的發(fā)展,越來越多的書籍、報紙逐漸電子化,由原來的紙質圖書轉變 成各種PC、手持設備的電子閱讀器。在報社、出版社等行業(yè),電子文檔也成為了一種主流的 閱讀資源,便于打印和印刷。但是運些文檔在生成過程中因為字體嵌入等原因可能導致沒 有字符編碼或者字符編碼并非標準編碼(如UNICODE編碼、GBK等),運類沒有編碼或非標準 編碼的文檔在版式呈現時能正常顯示,但文檔在進行復制、捜索等功能時出現亂碼,效果不 佳。
[0003] 為了解決上述問題,需要通過字形識別來獲取正確的字符編碼,提高用戶體驗。目 前,一般是通過對運類文件進行轉換優(yōu)化來還原字符編碼。還原字符編碼的通用做法是:對 文檔進行逐頁繪制,采用OCR技術對頁面上的文字進行識別,把識別的文字結果放回到頁面 對應位置并隱藏,形成"雙層PDf'或類似文檔,從而提供文字復制、捜索功能。
[0004] 上述字符編碼還原辦法的不足之處在于:需對文檔進行逐頁繪制并識別,同一頁 或不同頁上的相同字符需要重復識別,從而導致效率低下,使得字形識別的時間成本過高。
【發(fā)明內容】
[0005] 因此,本發(fā)明要解決的技術問題在于克服現有技術中的字形識別方法中識別效率 低、時間成本高的缺陷。
[0006] 本發(fā)明提供一種字形識別方法,包括如下步驟:
[0007] 獲取目標文檔,提取目標文檔中的字體信息及其對應的內嵌字體的字體數據;
[000引按照字體名稱對所述字體數據進行聚類,得到多個分類;
[0009] 針對每個類別內的字體數據進行合并;
[0010] 對每個類別中合并后的字體數據對應的各個字形進行分別識別,獲得每個字形的 編碼;
[0011] 根據所述編碼還原目標文檔中每個文字對應的編碼。
[0012] 優(yōu)選地,所述按照字體名稱對所述字體數據進行聚類的步驟,包括
[0013] 將字體名稱相同的字體數據聚合為一個類別。
[0014] 優(yōu)選地,所述針對每個類別內的字體數據進行合并的步驟包括:
[0015] 刪除重復的字形,生成合并的字體數據和字形索引;
[0016] 建立所刪除的字形對應的別名和字形索引與合并后的字形索引的對應關系,存入 內嵌字體表。
[0017] 優(yōu)選地,對每個類別中合并后的字體數據對應的各個字形進行分別識別,獲得每 個字形的編碼的步驟,包括:
[0018] 對各個字形分別進行識別,記錄下識別得到的字符編碼作為該字形的標磚編碼, 形成字形編碼對應表,加入內嵌字體表。
[0019] 優(yōu)選地,所述根據所述編碼還原目標文檔中每個文字對應的編碼的步驟,包括:
[0020] 對于目標文檔中的各個文字,根據其對應的字體信息及內嵌字體表查找字體信 息,根據所述字體信息查找標準編碼,將查找到的標準編碼加入文檔中。
[0021 ]本發(fā)明提供一種字形識別裝置,包括:
[0022] 信息提取單元,用于獲取目標文檔,提取目標文檔中的字體信息及其對應的內嵌 字體的字體數據;
[0023] 聚類單元,用于按照字體名稱對所述字體數據進行聚類,得到多個分類;
[0024] 合并單元,針對每個類別內的字體數據進行合并;
[0025] 字形識別單元,對每個類別中合并后的字體數據對應的各個字形進行分別識別, 獲得每個字形的編碼;
[0026] 編碼更新單元,根據所述編碼還原目標文檔中每個文字對應的編碼。
[0027] 優(yōu)選地,所述聚類單元包括
[0028] 將字體名稱相同的字體數據聚合為一個類別。
[0029] 優(yōu)選地,所述合并單元包括
[0030] 刪除子單元,刪除重復的字形,生成合并的字體數據和字形索引;
[0031] 內嵌子單元,建立所刪除的字形對應的別名和字形索引與合并后的字形索引的對 應關系,存入內嵌字體表。
[0032] 優(yōu)選地,所述字形識別單元包括:對各個字形分別進行識別,記錄下識別得到的字 符編碼作為該字形的標磚編碼,形成字形編碼對應表,加入內嵌字體表。
[0033] 優(yōu)選地,所述編碼更新單元包括:對于目標文檔中的各個文字,根據其對應的字體 信息及內嵌字體表查找字體信息,根據所述字體信息查找標準編碼,將查找到的標準編碼 加入文檔中。
[0034] 本發(fā)明技術方案,具有如下優(yōu)點:
[0035] 本發(fā)明提供的一種字形識別方法,獲取目標文檔,提取目標文檔中的字體信息及 其對應的內嵌字體的字體數據;按照字體名稱對所述字體數據進行聚類,得到多個分類;針 對每個類別內的字體數據進行合并;對每個類別中合并后的字體數據對應的各個字形進行 分別識別,獲得每個字形的編碼;根據所述編碼還原目標文檔中每個文字對應的編碼。該方 案在現有技術的基礎上,通過字體合并的方式,減少字形識別的時間,大幅提升字形識別的 效率,W減少字形識別的時間成本,使其能更廣泛的被應用。所有擁有內嵌字體數據的文檔 均可應用此方法進行處理,包括PDF、CEBX、0抑等。
【附圖說明】
[0036] 為了更清楚地說明本發(fā)明【具體實施方式】或現有技術中的技術方案,下面將對具體 實施方式或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的 附圖是本發(fā)明的一些實施方式,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前 提下,還可W根據運些附圖獲得其他的附圖。
[0037] 圖1為本發(fā)明實施例1中字形識別方法的流程圖;
[0038] 圖2為本發(fā)明實施例2中字形識別裝置的結構框圖。
【具體實施方式】
[0039] 下面將結合附圖對本發(fā)明的技術方案進行清楚、完整地描述,顯然,所描述的實施 例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術 人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0040] 對于本領域的普通技術人員而言,可W具體情況理解上述術語在本發(fā)明中的具體 含義。
[0041] 此外,下面所描述的本發(fā)明不同實施方式中所設及的技術特征只要彼此之間未構 成沖突就可W相互結合。
[0042] 實施例1
[0043] 本實施例中提供一種字形識別方法,用于對具有內嵌字體數據的版式文檔進行處 理,如PDF、CEBX、0抑等,該方法流程圖如圖1所示,包括如下步驟:
[0044] S1、獲取目標文檔,提取目標文檔中的字體信息及其對應的內嵌字體的字體數據。
[0045] 該步驟中,導入含字體信息與內嵌字體數據的文檔,遍歷所有頁面,提取文檔中各 頁面所有的字體信息(如字符對應的字寬、高等信息)與內嵌字體的字體數據(即內嵌字體 文件),例如根據頁面中字體信息對應的內嵌字體文件中的信息,可W獲得字體的名稱。此 夕h在字體信息也可W獲取字體名稱W及字體PS名稱,此處獲取的方式可W根據需要合理 選擇。記錄字體名稱與內嵌字體數據的對應關系,形成內嵌字體表,表中每項包括字體PS名 稱、字體名稱、字形數據、字形索引等內容,具體格式形如表1所示。
[0046] 表1:原始內嵌字體表
[0047]
[0048] 如對應某本PDF書籍,該步驟包括導入該PDF書籍文檔,遍歷所有頁面,提取文檔中 各頁面所有的字體信息與內嵌字體的字體數據,記錄字體名稱與內嵌字體數據的對應關 系,形成內嵌字體表。即如附表1所示,整個PDF中所有頁面共含有Ξ個字體信息。
[0049] S2、按照字體名稱對所述字體數據進行聚類,得到多個分類。其中,將字體名稱相 同的字體數據聚合為一個類別。
[0050] 對內嵌字體表按字體名稱進行聚類,每個類別中可能包括一個或多個具有相同字 體名稱但不同字體PS名稱。S名稱為字體名稱的一個別名)的內嵌字體數據,形如表2。 [00 51]表2:聚類后的內嵌字體表
[0化2]
[0053] 如將字體名稱同為"Fontr的字體信息聚合在一起,將字體名稱為"Font2"的字體 信息聚合在一起,形成一張聚合后的內嵌字體表。
[0054] S3、針對每個類別內的字體數據進行合并。合并的過程包括:首先,刪除重復的字 形,生成合并的字體數據和字形索引;然后建立所刪除的字形對應的別名和字形索引與合 并后的字形索引的對應關系,存入內嵌字體表。
[0055] 合并時,需要遍歷聚類后形成的所有類別,對每個類別的多項內嵌字體數據進行 合并。合并時,需要刪除重復字形,生成合并后的內嵌字體數據及字形索引表,并記錄合并 前字體PS名稱及其字形索引與合并后的字形索引的對應關系,即每個字體PS名稱對應的新 舊字形索引表,繼而修改相應的內嵌字體表,如表3。對于只包含一項數據的類別,不進行合 并操作。
[0056]表3:修改后的內嵌字體表
[0化7]
[0化引如將同為"Fontr的字體數據"Datal"和"Data2"進行合并,刪除其中的重復字形, 形成新的字體數據"Merge化tal" W及新的字形索引表"MergeMapl",并且記錄下對應每個 舊字體的新舊字形索引表%IdToNewMapT與%ldToNewMap2%例如,在"PS_r對應的 "Datal"字體數據中,文字"一"對應的字形索引為"Γ,而在合并生成了子徒數據 "MergeDatar后,文字"一"對應的字形索引為"5",則在新舊字形索引表%IdToNewMapr 中,有一項即為"1^5"。對于只包含一項數據的類別,不進行合并操作。整個操作的結果如 表2所示。
[0059] S4、對每個類別中合并后的字體數據對應的各個字形進行分別識別,獲得每個字 形的編碼。該過程包括:對各個字形分別進行識別,記錄下識別得到的字符編碼作為該字形 的標磚編碼,形成字形編碼對應表,加入內嵌字體表。
[0060] 該步驟中,通過再次遍歷所有類別,對每個類別合并