作者:马健
邮箱: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之前,先用自身的图像处理功能对图像进行预处理,使图像更干净、更清晰,有助于提高识别正确率。