用MODI OCR 21種語言

做者:馬健
郵箱: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工具。cors

與其餘商業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 SP一、SP2的機器上拷貝過來覆蓋便可。翻譯

繁、日版本的Office 2007原版安裝後都沒有簡體中文版的毛病,但朝鮮語版本的Office 2007問題比簡體中文版更嚴重(後面會詳細說)。3d

德語版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的注意事項:

  1. 因爲簡體中文平臺的GBK字符集除簡體中文自身外,還徹底覆蓋繁體中文、日文,所以繁體中文、日文的OCR結果在簡體中文Office環境下均爲GBK編碼,能夠在支持GBK編碼的中文平臺下正常顯示、編輯。固然若是以爲繁體中文看起來比較麻煩,也能夠用Word或其餘軟件的繁簡轉換功能轉成簡體。可是對於朝鮮語來講就沒有這麼美好了:目前GBK還不兼容朝鮮語,因此朝鮮語的OCR結果若是想在簡體Office下編輯,大概只能存爲HTML或doc文件,而後用Word編輯,文本文件則必須用Unicode編碼。 在簡體中文XP下,用Unicode編碼的朝鮮語文本文件直接用記事本打開是亂碼,但在簡體Win7下用記事本打開則能正常顯示。
  2. 清華文通的OCR引擎只能識別字符,不能識別字體,所以MODI對亞洲語言的識別結果不能作到字體還原。而MODI在識別其餘語言時是能夠作到字體還原的。
  3. 清華文通的產品具備典型的實驗室產品特徵:容錯性較差,在殘酷的現實環境下什麼稀奇古怪的事情都會發生,尤爲是在識別圖文混排、複雜表格的頁面時, 最嚴重的時候甚至可能形成整個軟件崩潰。MODI「發送到Word」對於超過300頁的多頁TIFF有問題,我估計也與內存漏洞或其餘相似問題有關。MODI的非亞洲語言OCR用的不是清華文通的實驗室產品,就沒有那麼多問題。第三方產品若是增強錯誤捕捉與錯誤恢復機制,雖然不能避免OCR時錯誤的發生,但至少能夠減小錯誤發生後異常退出的機率,能夠擁有比原版MODI更強的魯棒性。

2.1.1 繁體中文

下面以繁體中文爲例,說明在簡體中文Office下手工安裝其餘語言OCR模塊的步驟和方法:

  1. 找一臺安裝了繁體中文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
  2. 複製完成後,用記事本建立一個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朝鮮語的結果恆爲空,打SP一、SP2補丁也沒用。事實上,我試過在朝鮮語Win7環境下,安裝朝鮮語版本的Office 2007 + SP二、朝鮮語版的Office 2007語言包+語言包SP三、朝鮮語版本的SharePoint Designer 2007,全部方法的結果都是同樣的:朝鮮語OCR的結果永遠爲空。

其實解決的方法很是簡單:把Office 2003的KRCODE.UNI文件複製過來,覆蓋Office 2007的便可。注意不能複製Office 2003的所有文件,由於Office 2003的TWCUTLKR.DLL文件覆蓋Office 2007的之後,OCR朝鮮語時會出現運行錯誤。

如此明顯又如此簡單的一個錯誤,竟然到Office 2007 SP二、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

注意:

  1. ScanSoft對Latin 1的支持除須要上表中的文件外,還須要LATIN1.SHP的支持。 在安裝簡體中文Office時若是選擇了英文光學字符識別模塊,則安裝後此文件已經存在,沒必要再麻煩。若是沒有,則須要從有的地方複製過來,不然MODI會報告不支持所選的語言。
  2. 因爲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

注意:

  1. ScanSoft對Latin 2的支持除須要上表中的文件外,還須要LATIN2.SHP的支持。正常狀況下安裝簡體中文Office後此文件並不存在, 安裝Office 2007語言包也不會安裝此文件,須要從有此文件的地方(安裝有東歐語言版Office 2007或SharePoint Designer 2007的地方)複製過來,不然MODI會報告不支持所選的語言。
  2. 因爲Office 2007語言包和SharePoint Designer 2007比較容易獲得,所以上面的文件和註冊表項我都是從Office 2007得到的,但經我測試,複製到Office 2003下也能用。我沒有本事搞到Office 2003的語言包,所以沒有測試Office 2003的文件複製到Office 2007下是否能用。

2.4 其餘語言

除上述亞洲、Latin 一、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

注意:

  1. 因爲GB 2312包含希臘字母、俄語字母,所以在簡體中文下OCR希臘語、俄語,獲得的結果看起來是全角字符,若有必要可能須要再轉碼成半角字符。
  2. 上面的文件和註冊表項我都是從SharePoint Designer 2007得到的,但經我測試,複製到Office 2003下也能用。我沒有本事搞到Office 2003的語言包,所以沒有測試Office 2003的文件複製到Office 2007下是否能用。

3 用MODI作OCR

用MODI作OCR的步驟爲:

  1. 先確保MODI已經正常安裝。Office 2003的缺省安裝是第一次使用MODI時安裝,Office 2007的缺省安裝是不裝,都須要改過來。簡體中文Office 2007還別忘了打SP1或SP2補丁。
  2. 在資源管理器裏選中須要OCR的多頁TIFF文件,從右鍵菜單選擇用Micorsoft Office Document Imaging打開。
  3. 打開後,先選擇「工具->選項」,對OCR選項進行設置,包括「自動拉伸」、「自動旋轉」、「OCR語言」選項 。其中「自動拉伸」我相信是微軟僱傭的翻譯人員的一個不幸的外行翻譯錯誤,正確的說法應該是「自動矯正」,即將歪斜的頁面矯正,因此通常應選擇此選項。「自動旋轉」不大靠得住,有時候會把好好的頁面旋轉90度,因此通常不選擇此選項——若是真要旋轉, 我寧願在OCR前先用其餘軟件旋轉好。「OCR語言」就不用說了,根據須要進行選擇。若是想OCR繁體中文,但選擇的語言是「簡體中文」或「默認Office語言選擇」,那就不要處處抱怨MODI的繁體OCR結果太糟糕了,先找找自身的緣由吧。
  4. 選擇「工具->將文本發送到Word」,在彈出的對話框中選擇「全部頁面」,「在輸出時保持圖片版式不變」,而後選擇默認文件夾爲本身想要的文件夾,點「肯定」,便可開始OCR。
  5. 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也有其餘特點:

  1. 特別增強了對繁體、日文豎排的支持。deent75即便是亞洲版也不支持豎排。這一點很奇怪,畢竟Caminova公司總部就在亞洲。
  2. 增長了將「詞」合併成「行」的功能,不只節省文件長度,並且更便於校對。

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」強的地方是:

  1. 容錯能力更強,在OCR多頁TIFF時,若是某頁識別出錯,後續的頁面不會受到影響,還能正常OCR,而MODI的「發送到Word」只要有一頁出錯,剩下的就over了。
  2. 提供了一些雜七雜八的功能,如「批量替換」等。我本身就有一個替換表,用來對MODI的簡體識別結果進行批量替換,可以修正很多固定的錯誤,減小校對的麻煩。
  • UnicornViewer

這個軟件的OCR功能是從TextForever搬過來的,只不過一次只能OCR當前圖像上選定範圍中的內容。比較有特點的地方是容許在進行OCR以前,先用自身的圖像處理功能對圖像進行預處理,使圖像更乾淨、更清晰,有助於提升識別正確率。

相關文章
相關標籤/搜索