用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以前,先用自身的图像处理功能对图像进行预处理,使图像更干净、更清晰,有助于提升识别正确率。

相关文章
相关标签/搜索