目录1 安装MODI 1.1 Office 2003下安装MODI 1.2 Office 2007下安装MODI 1.3 Office 2010下安装MODI 1.4 检查MODI是否正常安装 1.5 在不安装Office的情况下OCR2多语言支持 2.1 亚洲语言 2.1.1 繁体中文 2.1.2日文 2.1.3 朝鲜语 2.1.4 简体中文 2.2 西欧语言(Latin1) 2.3 东欧语言(Latin 2) 2.4 其他语言3 用MODI做OCR4 用其他基于MODI的软件做OCR
MODI全称Microsoft Office Document Imaging,是微软Office2003/2007所带的光学字符识别(OCR)组件,其OCR引擎采用清华文通和ScanSoft的技术,支持21种语言,是一个方便的OCR工具。
与其他商业OCR软件相比,MODI具有下列特点:
安装MODI时需要牢记的一个事项是:不论Office2003还是2007,都必须用完整版本的安装,千万不要用阉割过的所谓“精简版”安装,因为MODI组件可能会被顺手割掉了。
Office 2003缺省安装是第一次使用时装MODI,即在安装完成后,第一次OCR时还会再安装一部分东西。如果本地有安装文件缓存还好说,否则需要插入光盘。第一次OCR完成后,以后的OCR就不再需要安装。
如果想一次就装全,需要在安装时将“典型安装”改成“自定义安装”,然后勾选“选择应用程序的高级自定义”,再在“Office工具”中选中“MicrosoftOffice Document Imaging”,点击左键,在弹出菜单中选择“从本机运行全部程序”。
繁、日版本的Office 2007原版安装后都没有简体中文版的毛病,但朝鲜语版本的Office 2007问题比简体中文版更严重(后面会详细说)。
德语版MODI在不安装SP补丁包的情况下OCR不会报错,但OCR的结果与安装SP2后有差异,精度比安装后差了许多(我与一个德国用户为此email往来过几次,有实例为证,安装前有时甚至会整行识别不出来)。所以保险起见,建议不管是什么语言的Office 2007,在安装后都打补丁,至少到SP2。
看来微软Office产品测试存在问题,如此影响使用的问题居然未在产品正式发布前发现,需要用SP来补。
Office 2010不再提供MODI组件,OCR功能改由OneNote完成,不过微软官方给出了在Office 2010下安装Office2007版MODI的方法及步骤:
如果不想安装Office,但又希望使用MODI,也可以按照微软的上述建议,从SharePoint Designer 2007安装MODI。
如果MODI随Office被正常安装,从“开始->Microsoft Office->MicrosoftOffice工具->Microsoft Office DocumentImaging”即可启动MODI,打开一个满是文字的单色TIFF文件,点“工具->将文本发送到WORD”菜单,等待片刻,如果正常弹出Word并显示OCR结果,则MODI工作正常,否则不正常。
上面说的都是用MODI自身进行OCR,如果不想用MODI自身做OCR,只是想给基于MODI的第三方软件提供OCR功能,又不想装Office或SharePointDesigner,行不行?答案是“可以”,具体详见我写的《MODI中的OCR模块》,按照其中的说明复制相关文件,导入注册表项即可。注意这种方法只在没有安装Office 2003/2007的情况下使用,如果已经装了,可能会出现注册表项或文件冲突。
按照《MODI中的OCR模块》中的说明安装出来的MODI,自身没有任何可执行程序,只能提供OCR接口,供第三方软件调用。因此测试其是否正常,也只能用第三方软件进行测试。
注意测试的时候使用的单色TIFF文件只能含有印刷体文字,不能含有手写体、图像、复杂表格等,以免因为清华文通的容错能力较差而造成误检。
MODI目前共支持21种语言的OCR,但不可能一安装完成后就支持全部语言,如简体中文版Offcie中的MODI正常安装后就只支持简体中文、英文的OCR。当然路是人走出来的,如果想支持其它语言的OCR,也有以下几条路可以走。
第一条路,也是最正统的路,就是安装相应语言的Office语言包,如想OCR繁体就安装Office2007的繁体中文语言包,想OCR日文就安装日文语言包。注意Office 2003的语言并未公开发售,只提供给微软的关系企业,因此对于Office2003来说, 很难走这条路,Office 2007则无此问题。
另外Office 2007语言包的缺省安装同样不装OCR模块,仍然需要选择自定义安装,并手工选择校对工具中对应语言的光学字符识别模块。 而且Office2007语言包也是有SP补丁包的,目前发行到SP3(Office 2007本身的补丁包到SP2),建议能补还是补吧。
对于简体中文Office 2007来说,安装时如果选择了安装简体中文、英文的光学字符识别模块,则安装时自带CJK及Latin1的核心文件,因此安装繁体、日语、朝鲜语、西欧11国的语言包以后,即能正常进行这些语言的OCR(朝鲜语还需手工修正,后面详细说),但东欧3国(捷、波、匈),及希腊、俄国、土耳其3国语言的核心文件在安装简体中文Office2007时并未安装,再安装这6国语言的语言包也只能补上一半的文件,不能补全。因此对这6国语言来说,即使装了Office 2007的对应语言包,在简体Office2007下仍然不能正常OCR。
因此这第一条路正统是正统,但却只能解决15种语言,不能解决全部21种语言的问题。
这条路比第一条路更彻底,对MODI本身来说,和安装对应语言的原生Office 2007也差不多,对于语言包不能正常支持的6国语言也能够很好地支持。
但对只想OCR的人来说,语言包、SharePointDesigner都比较大,其他语言的Office组件和界面也都是无聊的存在。因此一种更有效率的做法是:到其他安装了语言包,或所需语言的MODI的电脑上,把所需的文件和注册表项复制过来,添加到本机的简体中文MODI环境中去。比如想增加繁体OCR,就到安装了繁体语言包,或装了繁体Office2007的电脑上,把所需的文件和注册表项(本文后面会详细介绍)复制过来。与上面两条路相比,这条路不仅更轻量一些,而且对所有语言均适用。
语言包、SharePoint Designer 2007的安装相对比较简单,因此本文不再赘述。而对于手工复制安装,步骤都是统一的:
下面详细介绍手工复制时,各种语言所需复制的文件及注册表项。
MODI支持的亚洲语言包括简体、繁体、日文、朝鲜语。从相关DLL文件显示的文件信息看,这4种语言的OCR引擎都由清华文通(TsinghuaWintone)出品。这事其实完全可以理解:对中文OCR的研究,还是中国人自己更有感觉一些,而国内OCR做得比较好的,也就那么两家,别的都是OEM。所以对于有些人把MODI的识别精度与其他OCR软件相比较,我个人觉得没有太大的必要:国外OCR软件在中文部分,也不太可能花太大的力气去独立开发,多半还是像MODI一样与国内合作,而国内活下来的产品PK到现在,在印刷体字符识别精度上已经差距不大了,差距都在图文混排、表格、版面还原、手写体识别等方面。
亚洲语言MODI的注意事项:
下面以繁体中文为例,说明在简体中文Office下手工安装其他语言OCR模块的步骤和方法:
Windows Registry Editor Version5.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的文件复制到Office2007,或反之,均可正常使用。
如果想OCR日文,则需要从日文MODI复制到简体MODI文件夹下的文件为:
需要导入的reg内容为:
Windows Registry Editor Version5.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的文件复制到Office2007,或反之,均可正常使用。
如果想OCR朝鲜语,需要从朝鲜语MODI复制到简体MODI文件夹下的文件为:
如果是Office 2003,复制上面的文件即可。如果是Office2007,复制上面的文件后,OCR朝鲜语的结果恒为空,打SP1、SP2补丁也没用。事实上,我试过在朝鲜语Win7环境下,安装朝鲜语版本的Office 2007+ SP2、朝鲜语版的Office 2007语言包+语言包SP3、朝鲜语版本的SharePoint Designer2007,所有方法的结果都是一样的:朝鲜语OCR的结果永远为空。
如此明显又如此简单的一个错误,居然到Office 2007 SP2、Office2007语言包SP3均未解决,真不知道是该说朝鲜语在微软根本就不受重视,还是说微软测试部门的人每到测试朝鲜语的时候就都刚好放大假去也?
需要导入的reg内容为:
Windows Registry Editor Version5.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下用记事本打开则能正常显示。
如果想在其他语言的MODI(需含CJK的OCR核心模块)下OCR简体中文,则需复制下列文件:
需要导入的reg内容为:
Windows Registry Editor Version5.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的文件复制到Office2007,或反之,均可正常使用。
在Windows中,西欧拉丁语系的语言统一用Latin 1代码页(code page1252)表示,其中MODI支持的包括丹麦语、荷兰语、英语、芬兰语、法语、德语、意大利语、挪威语、葡萄牙语、西班牙语、瑞典语,共11种语言。
MODI的Latin 1 OCR基于Nuance公司的ScanSoft组件,事实上亚洲语言的支持也是将清华文通的模块转换成ScanSoftAPI接口。Nuance公司的ScanSoft OnimPage在OCR方面还是很有名的,Nuance公司的原名就是ScanSoft,后来才改的。
拉丁语系的支持没有中日韩这么复杂,下面用表格形式说明各语言需要复制到MODI安装目录的文件,及需要导入到[HKEY_CLASSES_ROOT\Installer\Components\61BA386016BD0C340BBEAC273D84FD5F]下的注册表项:
注意:
还有一个比较有趣的事情是:MODI的亚洲版本只支持一种语言加英语,如简体中文的Office可以选择简体和英文的OCR,繁体Office也仅可选择繁体和英文的OCR。而欧洲版的Office却支持多种语言的OCR,而且还每家不一样,如法语版Office可选择英文、法语、荷兰语、德语、西班牙语的OCR,而德语版Office仅支持英、法、德、意的OCR,意大利版Office支持的和德语版一样,俄语版、捷克版除英语和自身语言外,同样支持德语的OCR。看来德国人的人品还真不是一般的好!
在Windows中,东欧拉丁语系的语言统一用Latin 2代码页(code page1250)表示,其中MODI支持的包括捷克语、波兰语、匈牙利语,共3种语言。
MODI的东欧语言识别同样基于Nuance公司的ScanSoft组件。下面用表格形式说明各语言需要复制到MODI安装目录的文件,及需要导入到[HKEY_CLASSES_ROOT\Installer\Components\61BA386016BD0C340BBEAC273D84FD5F]下的注册表项:
注意:
除上述亚洲、Latin 1、Latin2外,MODI还支持希腊语、俄语、土耳其语。这3种语言的识别同样基于Nuance公司的ScanSoft组件。下面用表格形式说明各语言需要复制到MODI安装目录的文件,及需要导入到[HKEY_CLASSES_ROOT\Installer\Components\61BA386016BD0C340BBEAC273D84FD5F]下的注册表项:
注意:
用MODI做OCR的步骤为:
上述步骤中的第2步所打开的TIFF文件,理论上说可以用MODI自身的打印机生成(如果在安装时选择了安装MODI打印机的话),即将要OCR的图像直接打印到MODI打印机,然后再OCR,但是我自己从来不采用打印法生成TIFF,也绝不主张任何人使用这种方法生成TIFF。我一直坚持的步骤是:先用ComicEnhancerPro或其他软件将需要OCR的图像处理成单色TIFF,然后用TiffToy合并,再用MODI发送到Word。
这样做的原因很简单,打印出来的图像质量与用软件转换出来的图像质量,差距实在是太大了。不信的人找一张灰度或彩色图像打印一下,再与转换出来的比较一下即可明白。
这种差距来自几个方面:
如前所述,MODI的接口是开放的,因此很容易在MODI基础上,为自己的软件集成OCR功能。有的软件干脆把MODI包一下就当成OCR软件往外推,照样混得风生水起。
别人的事情不去说它,我自己开发的集成了MODI的软件包括(按字母顺序排列):
这些软件虽然都用了MODI,但又有一些具体的特色,下面逐一加以介绍。
DjVuToy在OCR方面,完全模拟DjVu官方权威软件Caminova Document Express 7.5Enterprise(简称deent75),包括DjVu和PDF中的隐藏文本、外挂字体。对于横排文字,其字符位置精度与deent75的差距在小数点后第4位——DjVuToy只精确到小数点后第4位,deent75保留的位数则更多。
但DjVuToy也有其他特色:
MODI(准确点说应该是清华文通)本身能够识别竖排文字,但在某些情况下可能会在不适当的地方对竖排行进行断行,需要在后处理中进行处理。
而在拉丁语系识别方面,MODI(准确点说是ScanSoft)有一个有趣的特点:如果原文中一个很长的单词正好在行尾,出于排版需要而将单词切分到上下两行,中间用短横线隔开,则MODI识别后会自动将单词拼接到一起,并去掉中间的短横线。比如information这个词如果正好位于某行的行尾,又稍微超出一点,则排版软件可能会为了排版整齐而将这个单词排成informa-tion,并将tion放到下一行的行首。则MODI在识别时,识别出来的是整个单词information,而不会是informa-tion。
在DjVu和PDF中,这种情况都会造成一点小问题:下一行的行首可能会出现空白,因为行首的半个单词被合并到上一行去了。这个问题其实完全不影响使用,习惯了就好,不习惯则可能会感到奇怪,我和一个德国用户也曾为此费过口舌。在这一点上ABBYY做得比MODI强:ABBYY也能合并单词,但不是合并到上一行,而是合并到下一行的行首,这样可能看起来更自然一些。
事实上,这两个软件所有与OCR相关的技术和代码均来自DjVuToy,所以特点也差不多。不过Pdg2Pic针对清晰版PDG文件特性,做了一点改进:MODI(其实是清华文通)在OCR简体中文时,如果整页都是文字,一般不会有问题,但如果是图文混排,则在某些情况下可能会造成软件崩溃!很多制作精良的清晰版PDG文件在图文混排时,一般会把文字层与插图层分开(在Pdg2Pic中显示为T3类PDG),Pdg2Pic在OCR这样的PDG文件时,自动选择仅针对文字层进行OCR,避免插图进来搅局造成麻烦。
MODI在识别简、繁、日、韩的时候,有一个特点:如果需要识别的文字少于8个字,就会报告识别结果为空,而识别其他语言的时候就没这种问题。看来这是清华文通与ScanSoft的区别。
偏偏对于字幕来说,一句话有很大的可能不足8个字,因此如果老老实实一次识别一条字幕,很多时候就会出现结果为空的情况。IdxSubOcr的解决办法也很简单:把多条字幕拼成一张大图,识别完成后再对文本进行拆分。这样不仅避开了这个问题,而且速度也快了不少。
TextForever中的OCR功能其实是我最早实现的OCR功能,所以有一点探索的味道。与MODI的“发送到Word”相比,TextForever的缺点是排版功能做得不好,需要用TextForever的其他功能来处理段落。
TextForever比MODI的“发送到Word”强的地方是:
这个软件的OCR功能是从TextForever搬过来的,只不过一次只能OCR当前图像上选定范围中的内容。比较有特色的地方是允许在进行OCR之前,先用自身的图像处理功能对图像进行预处理,使图像更干净、更清晰,有助于提高识别正确率。