作者:馬健
郵箱:stronghorse_mj@hotmail.com
發布:2007.12.08
更新:
2012.07.09
按照《MODI中的OCR模塊》一文相關內容進行修訂
2012.07.02
按照新版Pdg2Pic的情況對內容進行補充
2012.06.11
標題從《在簡體中文Office 2003下OCR繁體中文、日文、韓文》改為《用MODI OCR 21種語言》
目錄
1 安裝MODI
1.1 Office 2003下安裝MODI
1.2 Office 2007下安裝MODI
1.3 Office 2010下安裝MODI
1.4 檢查MODI是否正常安裝
1.5 在不安裝Office的情況下OCR
2 多語言支持
2.1 亞洲語言
2.1.1 繁體中文
2.1.2 日文
2.1.3 朝鮮語
2.1.4 簡體中文
2.2 西歐語言(Latin 1)
2.3 東歐語言(Latin 2)
2.4 其他語言
3 用MODI做OCR
4 用其他基於MODI的軟件做OCR
1 安裝MODI
MODI全稱Microsoft Office Document Imaging,是微軟Office 2003/2007所帶的光學字符識別(OCR)組件,其OCR引擎采用清華文通和ScanSoft的技術,支持21種語言,是一個方便的OCR工具。
與其他商業OCR軟件相比,MODI具有下列特點:
- 支持多頁TIFF。某些OCR只支持單頁TIFF,OCR以后還需要對結果進行合並。當然MODI支持的TIFF頁數也不是無限的,我個人的經驗是不要超過300頁。單頁TIFF可用免費的TiffToy合並成多頁TIFF,再用MODI進行OCR。TiffToy合並時可以選擇每合並多少個文件生成一個新文件。
- 支持的語言比較多,目前有21種。
- 提供開放的編程接口。對於軟件開發人員來說,到微軟網站下載一份MODI編程手冊,即可開發出基於MODI的、具有多國語言OCR功能的軟件。MODI編程手冊下載地址:
http://www.microsoft.com/downloads/details.aspx?FamilyId=8F93E445-B1CF-4477-A373-E17417D616BC&displaylang=en - 別的語言我沒試過,但對簡體、繁體、日文、朝鮮語來說,僅支持印刷體識別,不支持手寫識別。如果您想要的是手寫體識別,別浪費時間了,找其它軟件去吧。
- 對於簡體、繁體、日文、朝鮮語,識別結果只有字符、字符位置,沒有任何字體信息,因此不能做到精確版面還原,不過對於只想看文字來說是夠了。其他語言能夠識別字體,因此可以做到版面還原。
- 一次只能選一種語言,因此對於多語言混排的情況識別率不佳。
- 圖文混排、表格的識別要看人品和運氣。
安裝MODI時需要牢記的一個事項是:不論Office 2003還是2007,都必須用完整版本的安裝,千萬不要用閹割過的所謂“精簡版”安裝,因為MODI組件可能會被順手割掉了。
1.1 Office 2003下安裝MODI
Office 2003缺省安裝是第一次使用時裝MODI, 即在安裝完成后,第一次OCR時還會再安裝一部分東西。如果本地有安裝文件緩存還好說,否則需要插入光盤。第一次OCR完成后,以后的OCR就不再需要安裝。
如果想一次就裝全,需要在安裝時將“典型安裝”改成“自定義安裝”,然后勾選“選擇應用程序的高級自定義”,再在“Office工具”中選中“Microsoft Office Document Imaging”,點擊左鍵,在彈出菜單中選擇“從本機運行全部程序”。
1.2 Office 2007下安裝MODI
與Office2003不同,Office 2007的典型安裝根本就不裝MODI,因此如果想使用MODI,只能在安裝時選擇自定義安裝,然后手工選擇Office工具中的MODI組件,“從本機運行全部程序”。相關過程及圖示可以參考微軟知識庫文章:
http://support.microsoft.com/kb/982760/
這篇文章雖然說的是在Office 2010下安裝Office 2007的MODI,但對於Office 2007本身的MODI安裝也是參考。
另外需要注意原版簡體中文Office 2007安裝后只能對英文進行OCR,對簡體中文OCR就會出錯退出,必須打SP1或SP2補丁后,才能正常使用。 其實補丁就補了一個文件:TWRECC.DLL,此文件也可從其他安裝了Office 2003或Office 2007 SP1、SP2的機器上拷貝過來覆蓋即可。
繁、日版本的Office 2007原版安裝后都沒有簡體中文版的毛病,但朝鮮語版本的Office 2007問題比簡體中文版更嚴重(后面會詳細說)。
德語版MODI在不安裝SP補丁包的情況下OCR不會報錯,但OCR的結果與安裝SP2后有差異,精度比安裝后差了許多(我與一個德國用戶為此email往來過幾次,有實例為證 ,安裝前有時甚至會整行識別不出來)。所以保險起見,建議不管是什么語言的Office 2007,在安裝后都打補丁,至少到SP2。
看來微軟Office產品測試存在問題,如此影響使用的問題居然未在產品正式發布前發現,需要用SP來補。
1.3 Office 2010下安裝MODI
Office 2010不再提供MODI組件,OCR功能改由OneNote完成,不過微軟官方給出了在Office 2010下安裝Office 2007版MODI的方法及步驟:
http://support.microsoft.com/kb/982760/
如果不想安裝Office,但又希望使用MODI,也可以按照微軟的上述建議,從SharePoint Designer 2007安裝MODI。
1.4 檢查MODI是否正常安裝
如果MODI隨Office被正常安裝,從“開始->Microsoft Office->Microsoft Office工具->Microsoft Office Document Imaging”即可啟動MODI,打開一個滿是文字的單色TIFF文件,點“工具->將文本發送到WORD”菜單,等待片刻,如果正常彈出Word並顯示OCR結果,則MODI工作正常,否則不正常。
1.5 在不安裝Office的情況下OCR
上面說的都是用MODI自身進行OCR,如果不想用MODI自身做OCR,只是想給基於MODI的第三方軟件提供OCR功能,又不想裝Office或SharePoint Designer,行不行?答案是“可以”,具體詳見我寫的《MODI中的OCR模塊》,按照其中的說明復制相關文件,導入注冊表項即可。 注意這種方法只在沒有安裝Office 2003/2007的情況下使用,如果已經裝了,可能會出現注冊表項或文件沖突。
按照《MODI中的OCR模塊》中的說明安裝出來的MODI,自身沒有任何可執行程序,只能提供OCR接口,供第三方軟件調用。 因此測試其是否正常,也只能用第三方軟件進行測試。
注意測試的時候使用的單色TIFF文件只能含有印刷體文字,不能含有手寫體、圖像、復雜表格等,以免因為清華文通的容錯能力較差而造成誤檢。
2 多語言支持
MODI目前共支持21種語言的OCR,但不可能一安裝完成后就支持全部語言,如簡體中文版Offcie中的MODI正常安裝后就只支持簡體中文、英文的OCR。 當然路是人走出來的,如果想支持其它語言的OCR,也有以下幾條路可以走。
第一條路,也是最正統的路,就是安裝相應語言的Office語言包,如想OCR繁體就安裝Office 2007的繁體中文語言包,想OCR日文就安裝日文語言包。注意Office 2003的語言並未公開發售,只提供給微軟的關系企業,因此對於Office 2003來說, 很難走這條路,Office 2007則無此問題。
另外Office 2007語言包的缺省安裝同樣不裝OCR模塊,仍然需要選擇自定義安裝,並手工選擇校對工具中對應語言的光學字符識別模塊。 而且Office 2007語言包也是有SP補丁包的,目前發行到SP3(Office 2007本身的補丁包到SP2),建議能補還是補吧。
對於簡體中文Office 2007來說,安裝時如果選擇了安裝簡體中文、英文的光學字符識別模塊,則安裝時自帶CJK及Latin 1的核心文件,因此安裝繁體、日語、朝鮮語、西歐11國的語言包以后,即能正常進行這些語言的OCR(朝鮮語還需手工修正,后面詳細說),但東歐3國(捷、波、匈),及希臘、俄國、土耳其3國語言的核心文件在安裝簡體中文Office 2007時並未安裝,再安裝這6國語言的語言包也只能補上一半的文件,不能補全。因此對這6國語言來說,即使裝了Office 2007的對應語言包,在簡體Office 2007下仍然不能正常OCR。
因此這第一條路正統是正統,但卻只能解決15種語言,不能解決全部21種語言的問題。
第二條路也還算正統,就是按照微軟官方網站上推薦的Office 2010下安裝MODI的方法,到微軟官網下載免費的SharePoint Designer 2007,即點開下面的網址:
http://support.microsoft.com/kb/982760/
然后點擊“下載SharePoint Designer 2007”,點開頁面后在“更改語言”項處選擇自己所需要的語言,即可下載到相應語言的SharePoint Designer 2007,按照上面網址中的說明進行安裝,在安裝時手工選擇安裝MODI即可。
這條路比第一條路更徹底,對MODI本身來說,和安裝對應語言的原生Office 2007也差不多,對於語言包不能正常支持的6國語言也能夠很好地支持。
但對只想OCR的人來說,語言包、SharePoint Designer都比較大,其他語言的Office組件和界面也都是無聊的存在。因此一種更有效率的做法是:到其他安裝了語言包,或所需語言的MODI的電腦上,把所需的文件和注冊表項復制過來 ,添加到本機的簡體中文MODI環境中去。比如想增加繁體OCR,就到安裝了繁體語言包,或裝了繁體Office 2007的電腦上,把所需的文件和注冊表項(本文后面會詳細介紹)復制過來。與上面兩條路相比,這條路不僅更輕量一些,而且對所有語言均適用。
語言包、SharePoint Designer 2007的安裝相對比較簡單,因此本文不再贅述。而對於手工復制安裝,步驟都是統一的:
- 復制相關語言的OCR模塊。MODI本身可以看作是一個殼,為用戶或第三方軟件提供一個操作界面或編程接口,真正的OCR功能需要靠不同語言的模塊實現。每個語言模塊包括相關DLL文件和數據文件,需要復制到MODI的安裝文件夾下。
- 告訴MODI,目前有哪些語言的OCR模塊可以使用。這個需要增加注冊表項,增加后在MODI的OCR選項里即可選擇對應的語言。注意這些注冊表項都是給MODI看的,如果只想用MODI的編程接口,不想用MODI的用戶界面,其實有沒有相關語言的注冊表項也無所謂。 關於注冊表項的進一步闡述,參見《MODI中的OCR模塊》一文。
下面詳細介紹手工復制時,各種語言所需復制的文件及注冊表項。
2.1 亞洲語言
MODI支持的亞洲語言包括簡體、繁體、日文、朝鮮語。從相關DLL文件顯示的文件信息看,這4種語言的OCR引擎都由清華文通(Tsinghua Wintone)出品。這事其實完全可以理解:對中文OCR的研究,還是中國人自己更有感覺一些,而國內OCR做得比較好的,也就那么兩家,別的都是OEM。所以對於有些人把MODI的識別精度與其他OCR軟件相比較,我個人覺得沒有太大的必要:國外OCR軟件在中文部分,也不太可能花太大的力氣去獨立開發,多半還是像MODI一樣與國內合作,而國內活下來的產品PK到現在,在印刷體字符識別精度上已經差距不大了,差距都在圖文混排、表格、版面還原、手寫體識別等方面。
亞洲語言MODI的注意事項:
- 由於簡體中文平台的GBK字符集除簡體中文自身外,還完全覆蓋繁體中文、日文,因此繁體中文、日文的OCR結果在簡體中文Office環境下均為GBK編碼,可以在支持GBK編碼的中文平台下正常顯示、編輯。當然如果覺得繁體中文看起來比較麻煩,也可以用Word或其他軟件的繁簡轉換功能轉成簡體。但是對於朝鮮語來說就沒有這么美好了:目前GBK還不兼容朝鮮語,所以朝鮮語的OCR結果如果想在簡體Office下編輯,大概只能存為HTML或doc文件,然后用Word編輯,文本文件則必須用Unicode編碼。 在簡體中文XP下,用Unicode編碼的朝鮮語文本文件直接用記事本打開是亂碼,但在簡體Win7下用記事本打開則能正常顯示。
- 清華文通的OCR引擎只能識別字符,不能識別字體,因此MODI對亞洲語言的識別結果不能做到字體還原。而MODI在識別其他語言時是可以做到字體還原的。
- 清華文通的產品具有典型的實驗室產品特征:容錯性較差,在殘酷的現實環境下什么稀奇古怪的事情都會發生,尤其是在識別圖文混排、復雜表格的頁面時, 最嚴重的時候甚至可能造成整個軟件崩潰。MODI“發送到Word”對於超過300頁的多頁TIFF有問題,我估計也與內存漏洞或其他類似問題有關。MODI的非亞洲語言OCR用的不是清華文通的實驗室產品,就沒有那么多問題。第三方產品如果加強錯誤捕捉與錯誤恢復機制,雖然不能避免OCR時錯誤的發生,但至少可以減少錯誤發生后異常退出的概率,可以擁有比原版MODI更強的魯棒性。
2.1.1 繁體中文
下面以繁體中文為例,說明在簡體中文Office下手工安裝其他語言OCR模塊的步驟和方法:
- 找一台安裝了繁體中文Office 2003/2007的機器,進入MODI的安裝文件夾,2003的缺省為:
C:\Program Files\Common Files\Microsoft Shared\MODI\11.0
2007的缺省為:
C:\Program Files\Common Files\Microsoft Shared\MODI\12.0
在x64 Win7下Program Files文件夾需改為Program Files (x86)文件夾。
將下面的文件復制到安裝了簡體中文MODI的電腦的相同文件夾下:
TCCODE.UNI
TCPRINT.DAT
TCPRINT2.DAT
TCSERHT.DAT
TCTREE.DAT
TW_BU.DAT
TW_UB.DAT
TWBIG532.DLL - 復制完成后,用記事本創建一個reg文件,把下面內容粘貼后存盤:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Installer\Components\61BA386016BD0C340BBEAC273D84FD5F]
"1028"=hex(7):76,00,55,00,70,00,41,00,56,00,4f,00,65,00,64,00,40,00,24,00,21,\
00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\
5f,00,31,00,30,00,32,00,38,00,3c,00,00,00,00,00
雙擊此reg文件導入注冊表后,在MODI的OCR選項卡里,“OCR語言”即可看到“中文(繁體)”。注意導入注冊表時必須先關閉所有MODI窗口,導入后再打開。
上述文件和注冊表項對Office 2003和2007是通用的,而且把Office 2003的文件復制到Office 2007,或反之,均可正常使用。
2.1.2 日文
如果想OCR日文,則需要從日文MODI復制到簡體MODI文件夾下的文件為:
JPCODE.UNI
JPPRINT.DAT
JPPRINT2.DAT
JPSERHT.DAT
JPTREE.DAT
TW_SU.DAT
TW_US.DAT
TWRECJ.DLL
TWSJIS32.DLL
需要導入的reg內容為:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Installer\Components\61BA386016BD0C340BBEAC273D84FD5F]
"1041"=hex(7):76,00,55,00,70,00,41,00,56,00,5d,00,5e,00,2a,00,42,00,24,00,21,\
00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\
5f,00,31,00,30,00,34,00,31,00,3c,00,00,00,00,00
上述文件和注冊表項對Office 2003和2007是通用的,而且把Office 2003的文件復制到Office 2007,或反之,均可正常使用。
2.1.3 朝鮮語
如果想OCR朝鮮語,需要從朝鮮語MODI復制到簡體MODI文件夾下的文件為:
DATASIM.DAT
HANGULLB.DAT
KRCODE.UNI
KRDIST.DAT
KRPRINT.DAT
KRSERHT.DAT
KRTREE.DAT
TW_KU.DAT
TW_UK.DAT
TWCUTCKR.DLL
TWCUTLKR.DLL
TWKSC32.DLL
TWLAYKR.DLL
TWRECK.DLL
如果是Office 2003,復制上面的文件即可。如果是Office 2007,復制上面的文件后,OCR朝鮮語的結果恆為空,打SP1、SP2補丁也沒用。事實上,我試過在朝鮮語Win7環境下,安裝朝鮮語版本的Office 2007 + SP2、朝鮮語版的Office 2007語言包+語言包SP3、朝鮮語版本的SharePoint Designer 2007,所有方法的結果都是一樣的:朝鮮語OCR的結果永遠為空。
其實解決的方法非常簡單:把Office 2003的KRCODE.UNI文件復制過來,覆蓋Office 2007的即可。注意不能復制Office 2003的全部文件,因為Office 2003的TWCUTLKR.DLL文件覆蓋Office 2007的以后,OCR朝鮮語時會出現運行錯誤。
如此明顯又如此簡單的一個錯誤,居然到Office 2007 SP2、Office 2007語言包SP3均未解決,真不知道是該說朝鮮語在微軟根本就不受重視,還是說微軟測試部門的人每到測試朝鮮語的時候就都剛好放大假去也?
需要導入的reg內容為:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Installer\Components\61BA386016BD0C340BBEAC273D84FD5F]
"1042"=hex(7):76,00,55,00,70,00,41,00,56,00,5e,00,64,00,34,00,42,00,24,00,21,\
00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\
5f,00,31,00,30,00,34,00,32,00,3c,00,00,00,00,00
注意在簡體中文環境下,按照上述步驟設置后,用MODI識別出來的朝鮮語是朝鮮語編碼(charset:129),可以存為HTML、doc,並能在Word里正常顯示、編輯。如果存為TXT,則需是Unicode編碼。 在簡體中文XP下,用Unicode編碼的朝鮮語文本文件直接用記事本打開是亂碼,但在簡體Win7下用記事本打開則能正常顯示。
2.1.4 簡體中文
如果想在其他語言的MODI(需含CJK的OCR核心模塊)下OCR簡體中文,則需復制下列文件:
SCCODE.UNI
SCPRINT.DAT
SCPRINT2.DAT
SCSERHT.DAT
SCTREE.DAT
TW_GU.DAT
TW_UG.DAT
TWGB32.DLL
需要導入的reg內容為:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Installer\Components\61BA386016BD0C340BBEAC273D84FD5F]
"2052"=hex(7):76,00,55,00,70,00,41,00,56,00,53,00,2e,00,7d,00,58,00,25,00,21,\
00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\
5f,00,32,00,30,00,35,00,32,00,3c,00,00,00,00,00
上述文件和注冊表項對Office 2003和2007是通用的,而且把Office 2003的文件復制到Office 2007,或反之,均可正常使用。
2.2 西歐語言(Latin 1)
在Windows中,西歐拉丁語系的語言統一用Latin 1代碼頁(code page 1252)表示,其中MODI支持的包括丹麥語、荷蘭語、英語、芬蘭語、法語、德語、意大利語、挪威語、葡萄牙語、西班牙語、瑞典語,共11種語言。
MODI的Latin 1 OCR基於Nuance公司的ScanSoft組件,事實上亞洲語言的支持也是將清華文通的模塊轉換成ScanSoft API接口。Nuance公司的ScanSoft OnimPage在OCR方面還是很有名的,Nuance公司的原名就是ScanSoft,后來才改的。
拉丁語系的支持沒有中日韓這么復雜,下面用表格形式說明各語言需要復制到MODI安裝目錄的文件,及需要導入到
[HKEY_CLASSES_ROOT\Installer\Components\61BA386016BD0C340BBEAC273D84FD5F]
下的注冊表項:
語言 | 文件 | 注冊表項 |
丹麥語 | DANISH.LNG | "1030"=hex(7):76,00,55,00,70,00,41,00,56,00,51,00,71,00,76,00,40,00,24,00,21,\ 00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\ 5f,00,31,00,30,00,33,00,30,00,3c,00,00,00,00,00 |
荷蘭語 | DUTCH.LNG | "1043"=hex(7):76,00,55,00,70,00,41,00,56,00,5f,00,6a,00,41,00,42,00,24,00,21,\ 00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\ 5f,00,31,00,30,00,34,00,33,00,3c,00,00,00,00,00 |
英語 | ENGLISH.LNG | "1033"=hex(7):76,00,55,00,70,00,41,00,56,00,54,00,28,00,38,00,41,00,24,00,21,\ 00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\ 5f,00,31,00,30,00,33,00,33,00,3e,00,26,00,61,00,45,00,4d,00,61,00,65,00,2c,\ 00,37,00,71,00,39,00,2a,00,44,00,58,00,64,00,55,00,40,00,45,00,50,00,69,00,\ 3d,00,00,00,00,00 |
芬蘭語 | FINNISH.LNG | "1035"=hex(7):76,00,55,00,70,00,41,00,56,00,56,00,35,00,4e,00,41,00,24,00,21,\ 00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\ 5f,00,31,00,30,00,33,00,35,00,3c,00,00,00,00,00 |
法語 | FRENCH.LNG | "1036"=hex(7):76,00,55,00,70,00,41,00,56,00,57,00,3f,00,57,00,41,00,24,00,21,\ 00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\ 5f,00,31,00,30,00,33,00,36,00,3c,00,00,00,00,00 |
德語 | GERMAN.LNG | "1031"=hex(7):76,00,55,00,70,00,41,00,56,00,52,00,77,00,24,00,41,00,24,00,21,\ 00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\ 5f,00,31,00,30,00,33,00,31,00,3c,00,00,00,00,00 |
意大利語 | ITALIAN.LNG | "1040"=hex(7):76,00,55,00,70,00,41,00,56,00,5b,00,57,00,7d,00,41,00,24,00,21,\ 00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\ 5f,00,31,00,30,00,34,00,30,00,3c,00,00,00,00,00 |
挪威語 | NORSK.LNG | "1044"=hex(7):76,00,55,00,70,00,41,00,56,00,60,00,70,00,4a,00,42,00,24,00,21,\ 00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\ 5f,00,31,00,30,00,34,00,34,00,3c,00,00,00,00,00 |
葡萄牙語 | PORT.LNG | "1046"=hex(7):76,00,55,00,70,00,41,00,56,00,62,00,7d,00,5d,00,42,00,24,00,21,\ 00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\ 5f,00,31,00,30,00,34,00,36,00,3c,00,00,00,00,00 |
西班牙語 | SPANISH.LNG | "3082"=hex(7):76,00,55,00,70,00,41,00,56,00,5e,00,7d,00,74,00,72,00,26,00,21,\ 00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\ 5f,00,33,00,30,00,38,00,32,00,3c,00,00,00,00,00 |
瑞典語 | SWEDISH.LNG | "1053"=hex(7):76,00,55,00,70,00,41,00,56,00,69,00,50,00,47,00,43,00,24,00,21,\ 00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\ 5f,00,31,00,30,00,35,00,33,00,3c,00,00,00,00,00 |
注意:
- ScanSoft對Latin 1的支持除需要上表中的文件外,還需要LATIN1.SHP的支持。 在安裝簡體中文Office時如果選擇了英文光學字符識別模塊,則安裝后此文件已經存在,不必再麻煩。如果沒有,則需要從有的地方復制過來,否則MODI會報告不支持所選的語言。
- 由於Office 2007語言包和SharePoint Designer 2007比較容易得到,因此上面的文件和注冊表項我都是從Office 2007獲得的,但經我測試,復制到Office 2003下也能用。我沒有本事搞到Office 2003的語言包,因此沒有測試Office 2003的文件復制到Office 2007下是否能用。
還有一個比較有趣的事情是:MODI的亞洲版本只支持一種語言加英語,如簡體中文的Office可以選擇簡體和英文的OCR,繁體Office也僅可選擇繁體和英文的OCR。而歐洲版的Office卻支持多種語言的OCR,而且還每家不一樣,如法語版Office可選擇英文、法語、荷蘭語、德語、西班牙語的OCR,而德語版Office僅支持英、法、德、意的OCR,意大利版Office支持的和德語版一樣,俄語版 、捷克版除英語和自身語言外,同樣支持德語的OCR。看來德國人的人品還真不是一般的好!
2.3 東歐語言(Latin 2)
在Windows中,東歐拉丁語系的語言統一用Latin 2代碼頁(code page 1250)表示,其中MODI支持的包括捷克語、波蘭語、匈牙利語,共3種語言。
MODI的東歐語言識別同樣基於Nuance公司的ScanSoft組件。下面用表格形式說明各語言需要復制到MODI安裝目錄的文件,及需要導入到
[HKEY_CLASSES_ROOT\Installer\Components\61BA386016BD0C340BBEAC273D84FD5F]
下的注冊表項:
語言 | 文件 | 注冊表項 |
捷克語 | CZECH.LNG | "1029"=hex(7):76,00,55,00,70,00,41,00,56,00,50,00,6b,00,6d,00,40,00,24,00,21,\ 00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\ 5f,00,31,00,30,00,32,00,39,00,3c,00,00,00,00,00 |
波蘭語 | POLISH.LNG | "1045"=hex(7):76,00,55,00,70,00,41,00,56,00,61,00,76,00,53,00,42,00,24,00,21,\ 00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\ 5f,00,31,00,30,00,34,00,35,00,3c,00,00,00,00,00 |
匈牙利語 | HUNGAR.LNG | "1038"=hex(7):76,00,55,00,70,00,41,00,56,00,59,00,4b,00,6a,00,41,00,24,00,21,\ 00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\ 5f,00,31,00,30,00,33,00,38,00,3c,00,00,00,00,00 |
注意:
- ScanSoft對Latin 2的支持除需要上表中的文件外,還需要LATIN2.SHP的支持。正常情況下安裝簡體中文Office后此文件並不存在, 安裝Office 2007語言包也不會安裝此文件,需要從有此文件的地方(安裝有東歐語言版Office 2007或SharePoint Designer 2007的地方)復制過來,否則MODI會報告不支持所選的語言。
- 由於Office 2007語言包和SharePoint Designer 2007比較容易得到,因此上面的文件和注冊表項我都是從Office 2007獲得的,但經我測試,復制到Office 2003下也能用。我沒有本事搞到Office 2003的語言包,因此沒有測試Office 2003的文件復制到Office 2007下是否能用。
2.4 其他語言
除上述亞洲、Latin 1、Latin 2外,MODI還支持希臘語、俄語、土耳其語。這3種語言的識別同樣基於Nuance公司的ScanSoft組件。下面用表格形式說明各語言需要復制到MODI安裝目錄的文件,及需要導入到
[HKEY_CLASSES_ROOT\Installer\Components\61BA386016BD0C340BBEAC273D84FD5F]
下的注冊表項:
語言 | 文件 | 注冊表項 |
希臘語 | GREEK.SHP GREEK.LNG |
"1032"=hex(7):76,00,55,00,70,00,41,00,56,00,53,00,7e,00,2d,00,41,00,24,00,21,\ 00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\ 5f,00,31,00,30,00,33,00,32,00,3c,00,00,00,00,00 |
俄語語 | CYRILLIC.SHP RUSSIAN.LNG |
"1049"=hex(7):76,00,55,00,70,00,41,00,56,00,65,00,34,00,79,00,42,00,24,00,21,\ 00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\ 5f,00,31,00,30,00,34,00,39,00,3c,00,00,00,00,00 |
土耳其語 | TURKISH.SHP TURKISH.LNG |
"1055"=hex(7):76,00,55,00,70,00,41,00,56,00,6b,00,5d,00,59,00,43,00,24,00,21,\ 00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\ 5f,00,31,00,30,00,35,00,35,00,3c,00,00,00,00,00 |
注意:
- 由於GB 2312包含希臘字母、俄語字母,因此在簡體中文下OCR希臘語、俄語,得到的結果看起來是全角字符,如有必要可能需要再轉碼成半角字符。
- 上面的文件和注冊表項我都是從SharePoint Designer 2007獲得的,但經我測試,復制到Office 2003下也能用。我沒有本事搞到Office 2003的語言包,因此沒有測試Office 2003的文件復制到Office 2007下是否能用。
3 用MODI做OCR
用MODI做OCR的步驟為:
- 先確保MODI已經正常安裝。Office 2003的缺省安裝是第一次使用MODI時安裝,Office 2007的缺省安裝是不裝,都需要改過來。簡體中文Office 2007還別忘了打SP1或SP2補丁。
- 在資源管理器里選中需要OCR的多頁TIFF文件,從右鍵菜單選擇用Micorsoft Office Document Imaging打開。
- 打開后,先選擇“工具->選項”,對OCR選項進行設置,包括“自動拉伸”、“自動旋轉”、“OCR語言”選項 。其中“自動拉伸”我相信是微軟雇佣的翻譯人員的一個不幸的外行翻譯錯誤,正確的說法應該是“自動矯正”,即將歪斜的頁面矯正,所以一般應選擇此選項。“自動旋轉”不大靠得住,有時候會把好好的頁面旋轉90度,所以一般不選擇此選項——如果真要旋轉, 我寧願在OCR前先用其他軟件旋轉好。“OCR語言”就不用說了,根據需要進行選擇。如果想OCR繁體中文,但選擇的語言是“簡體中文”或“默認Office語言選擇”,那就不要到處抱怨MODI的繁體OCR結果太糟糕了,先找找自身的原因吧。
- 選擇“工具->將文本發送到Word”,在彈出的對話框中選擇“所有頁面”,“在輸出時保持圖片版式不變”,然后選擇默認文件夾為自己想要的文件夾,點“確定”,即可開始OCR。
- OCR結束后,文本自動發送到Word。缺省格式是HTML,當然也可以另存為txt、doc。
上述步驟中的第2步所打開的TIFF文件,理論上說可以用MODI自身的打印機生成(如果在安裝時選擇了安裝MODI打印機的話),即將要OCR的圖像直接打印到MODI打印機,然后再OCR,但是我自己從來不采用打印法生成TIFF,也絕不主張任何人使用這種方法生成TIFF。我一直堅持的步驟是:先用ComicEnhancer Pro或其他軟件將需要OCR的圖像處理成單色TIFF,然后用TiffToy合並,再用MODI發送到Word。
這樣做的原因很簡單,打印出來的圖像質量與用軟件轉換出來的圖像質量,差距實在是太大了。不信的人找一張灰度或彩色圖像打印一下,再與轉換出來的比較一下即可明白。
這種差距來自幾個方面:
- 打印過程中需要根據所選的紙張大小,對圖像進行縮放,縮放過程中的插值會改變圖像清晰度。
- MODI打印的最終結果是單色TIFF,縮放后的彩色、灰度圖像如果自動實現二值化,結果很難令人滿意,遠不能與人工處理后的二值化相比。
4 用其他基於MODI的軟件做OCR
如前所述,MODI的接口是開放的,因此很容易在MODI基礎上,為自己的軟件集成OCR功能。有的軟件干脆把MODI包一下就當成OCR軟件往外推,照樣混得風生水起。
別人的事情不去說它,我自己開發的集成了MODI的軟件包括(按字母順序排列):
- DjVuToy:對DjVu文件OCR,生成DjVu文件中的隱藏文本;或在DjVu轉PDF時OCR,生成雙層PDF。
- FreePic2Pdf:在圖像轉PDF時進行OCR,生成帶隱藏文本的雙層PDF。
- IdxSubOcr:對從DVD中提取的圖像字幕文件進行OCR,生成文本字幕文件。
- Pdg2Pic:在PDG轉PDF時進行OCR,生成雙層PDF。
- TextForever:對多頁TIFF進行OCR,生成文本文件。
- UnicornViewer:對掃描圖像(PDG、PDF、DjVu、TIFF)的選定區域進行OCR,生成可復制的文本。
這些軟件雖然都用了MODI,但又有一些具體的特色,下面逐一加以介紹。
- DjVuToy
DjVuToy在OCR方面,完全模擬DjVu官方權威軟件Caminova Document Express 7.5 Enterprise(簡稱deent75),包括DjVu和PDF中的隱藏文本、外掛字體。對於橫排文字,其字符位置精度與deent75的差距在小數點后第4位——DjVuToy只精確到小數點后第4位,deent75保留的位數則更多。
但DjVuToy也有其他特色:
- 特別加強了對繁體、日文豎排的支持。deent75即使是亞洲版也不支持豎排。這一點很奇怪,畢竟Caminova公司總部就在亞洲。
- 增加了將“詞”合並成“行”的功能,不僅節省文件長度,而且更便於校對。
MODI(准確點說應該是清華文通)本身能夠識別豎排文字,但在某些情況下可能會在不適當的地方對豎排行進行斷行,需要在后處理中進行處理。
而在拉丁語系識別方面,MODI(准確點說是ScanSoft)有一個有趣的特點:如果原文中一個很長的單詞正好在行尾,出於排版需要而將單詞切分到上下兩行,中間用短橫線隔開,則MODI識別后會自動將單詞拼接到一起,並去掉中間的短橫線。比如information這個詞如果正好位於某行的行尾,又稍微超出一點,則排版軟件可能會為了排版整齊而將這個單詞排成informa-tion,並將tion放到下一行的行首。則MODI在識別時,識別出來的是整個單詞information,而不會是informa-tion。
在DjVu和PDF中,這種情況都會造成一點小問題:下一行的行首可能會出現空白,因為行首的半個單詞被合並到上一行去了。這個問題其實完全不影響使用,習慣了就好,不習慣則可能會感到奇怪,我和一個德國用戶也曾為此費過口舌。 在這一點上ABBYY做得比MODI強:ABBYY也能合並單詞,但不是合並到上一行,而是合並到下一行的行首,這樣可能看起來更自然一些。
- FreePic2Pdf
- Pdg2Pic
事實上,這兩個軟件所有與OCR相關的技術和代碼均來自DjVuToy,所以特點也差不多。不過Pdg2Pic針對清晰版PDG文件特性,做了一點改進:MODI(其實是清華文通)在OCR簡體中文時,如果整頁都是文字,一般不會有問題,但如果是圖文混排,則在某些情況下可能會造成軟件崩潰!很多制作精良的清晰版PDG文件在圖文混排時,一般會把文字層與插圖層分開(在Pdg2Pic中顯示為T3類PDG),Pdg2Pic在OCR這樣的PDG文件時,自動選擇僅針對文字層進行OCR,避免插圖進來攪局 造成麻煩。
- IdxSubOcr
MODI在識別簡、繁、日、韓的時候,有一個特點:如果需要識別的文字少於8個字,就會報告識別結果為空,而識別其他語言的時候就沒這種問題。看來這是清華文通與ScanSoft的區別。
偏偏對於字幕來說,一句話有很大的可能不足8個字,因此如果老老實實一次識別一條字幕,很多時候就會出現結果為空的情況。IdxSubOcr的解決辦法也很簡單:把多條字幕拼成一張大圖,識別完成后再對文本進行拆分。這樣不僅避開了這個問題,而且速度也快了不少。
- TextForever
TextForever中的OCR功能其實是我最早實現的OCR功能,所以有一點探索的味道。與MODI的“發送到Word”相比,TextForever的缺點是排版功能做得不好,需要用TextForever的其他功能來處理段落。
TextForever比MODI的“發送到Word”強的地方是:
- 容錯能力更強,在OCR多頁TIFF時,如果某頁識別出錯,后續的頁面不會受到影響,還能正常OCR,而MODI的“發送到Word”只要有一頁出錯,剩下的就over了。
- 提供了一些雜七雜八的功能,如“批量替換”等。我自己就有一個替換表,用來對MODI的簡體識別結果進行批量替換,能夠修正不少固定的錯誤,減少校對的麻煩。
- UnicornViewer
這個軟件的OCR功能是從TextForever搬過來的,只不過一次只能OCR當前圖像上選定范圍中的內容。比較有特色的地方是允許在進行OCR之前,先用自身的圖像處理功能對圖像進行預處理,使圖像更干凈、更清晰,有助於提高識別正確率。