用MODI一次OCR一整本书并将结果发送到WORD
作者:马健
邮箱:stronghorse_mj@hotmail.com
主页:http://www.comicer.com/stronghorse
发布:2022.05.29
一、相关问题及解答
Q:MODI是什么?
A:MODI是Microsoft Office Document Imaging的简称,是微软在Office 2003、2007中提供的一套OCR工具组件,用于将扫描图像文件或传真文件识别成可编辑的文字。从Office 2010起,OCR功能转移至OneNote中,因此不再提供MODI组件。但使用从Office 2007中提取的MODI精简版,或微软官方提供的免费版SharePointDesigner安装包单独安装MODI,均能与后续版本的Office共存,测试过从Office 2010到Office 2019的各版本。
Q:有了Acrobat、Abbyy等软件,为什么还要用MODI做OCR?
A:如果是OCR单页图像,其实可供使用的工具很多,有在线的,也有离线的。但如果是要一次OCR整本书,可供使用的软件就少得多。这些工具需要解决以下问题:
- 整本书以什么文件格式为载体?Acrobat只以PDF为载体,Abbyy以PDF和多页TIFF为载体,MODI以多页TIFF和MDI文件为载体。多页TIFF还好说,MDI文件格式在Office 2007之后就成为绝响。
- OCR结果以什么格式存放?Acrobat以PDF为载体,OCR结果也就放在PDF中;Abbyy可以把OCR结果另存为WORD、TXT等;MODI可以把OCR结果封装到多页TIFF或MDI文件中,也可以把结果发送到WORD中——这是我最喜欢的功能,也是我一直折腾MODI的动力。
PDF中的文本有一个毛病:有文字,无排版。即PDF中的文字最多是按行合并,但不会把行合并成段落,这样的文字导出、复制到WORD中,不排版根本没法用,手工排版又太累。但MODI发送到WORD中的OCR结果是经过排版(段落合并)的,虽然排版效果有时候也不太靠谱,但大多数情况下还是可用的,至少可以省掉很多事情。
另外如前所述,MODI是微软允许免费使用的SharePointDesigner一部分,Acrobat、Abbyy都是要小钱钱的。
Q:现在提供的精简版MODI,与以前提供的MODI OCR引擎有什么关系?
A:以前我曾在我的网盘上提供过从Office 2007 SP3中提取的支持21种语言OCR的OCR引擎,但引擎毕竟只是引擎,它不含用户界面,所以只能被其他软件工具所调用,例如DjVuTou、FreePic2Pdf、IdxSubOcr、Pdg2Pic、UnicorViewer等。但这次提供的精简版MODI包含GUI用户界面,可以直接对多页TIFF进行OCR,并将结果发送到WORD。另外:
- 精简版MODI中已经含了21种语言的OCR引擎,所以安装了精简版MODI后,可以不再安装MODI OCR引擎,即可在DjVuTou、FreePic2Pdf、IdxSubOcr、Pdg2Pic、UnicorViewer等软件中运行OCR功能。
- 以前封装的MODI OCR引擎在Win7、Win10下,要求调用程序必须以管理员权限运行,否则可能OCR失败。这次封装MODI精简版已经解决了这个问题,所以如果安装的是精简版MODI或新封装的MODI OCR引擎,将不再要求调用MODI OCR引擎的程序必须以管理员权限运行。最新版的DjVuToy、FreePic2Pdf、Pdg2Pic、UnicornViewer等已对此进行了修正。
Q:精简版MODI与原版MODI相比,有什么区别?
A:与原版MODI相比最大的区别是“精简”:以简体中文SharePointDesigner安装包为例,只安装MODI(从本机运行全部程序,含虚拟打印驱动)、简体中文校对工具_光学字符识别模块(OCR)、英语校对工具_光学字符识别模块(OCR),文件总长度704 MB,且只能OCR简体中文、英语两种语言。而简体中文版的精简版MODI安装后文件总长度仅86.2 MB,即完整版的文件长度是精简版的8倍还多,且精简版能OCR 21种而不是区区两种语言。另外精简版还精简掉了以下东东:
- MDI格式打印机(MODI Writer)。众所周知,Office 2007只有32位版,Office 2010才有64位版,所以这个打印驱动在原始官方安装包中就只有32位版,在64位Windows下安装的时候也不含这个打印机。现在谁还在用32位版Windows的请站出来让我瞻仰一下?
- 导入为MDI格式。这个依赖于MDI打印机,没有打印机也就没有什么意义。
- 用扫描仪扫描成多页TIFF或MDI文件。我目前没有扫描仪,没法测试这个功能,不如直接干掉。不过有扫描仪的时候我更习惯使用扫描仪自带的软件,所以没有就没有吧。
二、安装MODI,准备OCR
安装方法一:通过封装好的安装包进行安装,适合普通、不喜折腾的用户
如果打算安装精简版,从我的网盘下载精简版安装包,双击运行,选择语言后就是一键安装,安装完直接支持21种语言的OCR。
如果对我封装的精简版表示信不过,也可以用正版Office 2007,或者到我的网盘下载来自微软官网的免费版SharePointDesigner安装包,用那个安装MODI,在微软官网上有图文并茂的完整安装步骤说明:
http://support.microsoft.com/kb/982760/
注意:
- 如果是用正版Office安装盘安装,Office 2007的典型安装根本就不装MODI,因此如果想使用MODI,只能在安装时选择自定义安装,然后手工选择Office工具中的MODI组件,“从本机运行全部程序”,参见上面微软知识库链接。
- 如果是用正版Office安装盘安装,必须打SP补丁,不论是SP1、SP2还是SP3都可以,否则不能正常OCR中、日、韩语言。
- 另外选定一种语言的Office 2007或者SharePointDesigner安装包,比如说英语或者简体中文,安装MODI后,还可以用微软免费的Office 2007语言包DVD,安装其他语言的OCR支持。精简版MODI OCR引擎中的21种OCR语言、精简版MODI中的9种语言用户界面(包括CHM版帮助文件)就是这么来的。
安装方法二:通过批处理安装,适合程序员或者不折腾就不舒服斯基的用户
请从我的网盘下载批处理版安装zip包,解压后按照说明文件的说明执行批处理进行安装。看得懂安装批处理,就能知道具体的安装过程,因此对于程序员而言如果自己的程序调用了MODI引擎,就可以把MODI引擎照此封装到自己的安装包中,与自己的软件一起发行。
三、用MODI做OCR并将结果发送到WORD
OCR之前先要准备好需要OCR的图像文件,要OCR整本书就要准备好整本书的图像文件。MODI支持多页TIFF和MDI两种格式,如果你使用的是32位版Windows,或者是32位版Windows(如XP)虚拟机,可以选择用SharePointDesigner安装完整版,含MODI Writer打印机,然后就可以把需要OCR的图像打印到MODI Writer打印机,形成MDI文档。
如果用的是64位Windows,就只能准备多页TIFF。我的准备步骤是:
- 用ComicEnhancerPro(CEP)处理需要OCR的全部图像,颜色选“纯黑白”,存为单页TIFF。
- 用TiffToy把全部单页TIFF合并成多页TIFF。
理论上说如果省略第1步,直接把JPG、PNG等文件用TiffToy合并成多页TIFF,也可以在MODI里做OCR。但所有的OCR操作均只针对二值化(纯黑白)图像,所以这样做其实就是由MODI自己在内部做二值化工作,但讲真我绝对不信MODI的二值化能做到CEP的程度,所以我宁愿自己在CEP里处理,就不麻烦MODI了。
准备好需要OCR的多页TIFF或MDI文件后,就可以开始OCR:
- 运行MSPVIEW,启动MODI用户界面。如果安装的是精简版MODI,会在桌面上创建MSPVIEW图标,双击即可运行,或者从开始菜单的MODI菜单组中选择MSPVIEW运行,注意在菜单组里如果不小心点了uninstall就变成删除MODI了。如果是从SharePointDesigner安装的MODI完整版,则在开始菜单中点击“Micorsoft Office -> Micorsoft Office工具 -> Microsoft Office Document Imaging”菜单项运行。
如果运行MSPVIEW.EXE时提示“应用程序缺少组件。请重新安装该应用程序。”,那么就是电脑里安装过旧版的MODI引擎,新版MODI与之发生冲突,手工删除下面的文件夹就好:
C:\Program Files (x86)\Common Files\microsoft shared\OFFICE12
如果是x86版Windows,则删除
C:\Program Files\Common Files\microsoft shared\OFFICE12
这个文件夹下面其实就一个mso.dll,新版里这个文件已经被转移到了MODI文件夹下面,如果旧版的文件还在,就会与新版发生冲突。 - 点击工具条最左侧的“打开”按钮,打开需要OCR的多页TIFF或MDI文件。
- 如果有必要,点击“工具 -> 选项”菜单,在OCR页签中选择OCR语言。该页签中的“自动旋转”、“自动拉伸”这两个选项一般也要去掉勾选,否则图像可能莫名其妙就被旋转了。该页签中的选项会被记录到注册表里,所以选择过一次以后,后续OCR都会自动按照此选项操作。
- 点击工具条上的“将文本发送到WORD”按钮,或点击“工具 -> 将文本发送到WORD...”菜单项,把“默认文件夹”改成你希望存放结果文件的文件夹,点击“确定”按钮。
- 弹出提示“Microsoft Office Document Imaging 必须在您执行此操作前识别该文档中的文本(OCR)。这可能需要一些时间。”,点击“确定”按钮。等待OCR结束,会自动打开WORD并调入结果文件。如果电脑或虚拟机里没有装WORD,则会提示“无法启动 Microsoft Word。请检查该计算机上是否已安装该程序并设置正确。”,但不影响结果文件的生成。
- 生成的结果文件是html文件,就放在所选的“默认文件夹”下。如果其中有插图,会单独创建一个子文件夹存放插图。不过一般我都是直接在WORD里另存为文本文件或WORD文件,方便校对。
四、用MODI做OCR的一些限制
我曾经在《用MODI OCR 21种语言》里说过,MODI支持的亚洲语言包括简体、繁体、日文、朝鲜语,这4种语言的OCR引擎都由清华文通(Tsinghua Wintone)出品。清华文通的其他产品我没用过,但MODI中的中日韩OCR引擎却存在下列问题,使用时务必注意:
- 如果最终的识别结果不足8个汉字,则会返回OCR结果为空。IdxSubOcr、UnicorViewer等软件对此的解决办法是“拼图”,即把需要识别的图像重复排列,或者多个需要OCR的图像拼接在一起OCR,确保OCR结果不少于8个汉字。
- 如果需要识别的图像中含有插图、表格,则OCR引擎会变得极不稳定,一言不合就死给你看。在DjVuTou、FreePic2Pdf、Pdg2Pic、UnicorViewer等软件中分两个部分解决这个问题,第一是在OCR之前先对图像进行预处理,即这些软件界面中“去掉大于页面尺寸1/n的图表”选项。预处理虽然不能杜绝OCR引擎故障,但可以大大降低故障出现的概率。第二是把OCR功能放到独立的进程中,即MODI_Engine.exe,其他软件通过进程间通讯(IPC)调用它,它再调用MODI,如果MODI引擎挂了,挂的也是MODI_Engine.exe进程,不是调用MODI_Engine.exe的进程,这就是程序员经常说的“线程是不安全的,进程是”。
- OCR过程中存在累积性的资源泄露,即连续OCR到300多页后,就可能出各种幺蛾子。因此在TiffToy的“文件合并”功能中,缺省情况下是每300页合并成一个多页TIFF文件,一次就OCR这么多。如果是自己写的软件调用MODI,则最好是用上面的方法进行解决,即每OCR 300页左右,就重启一次MODI_Engine.exe进程。
- MODI只有32位版,不能直接被64位应用所调用。这个也是用上面的方法,IPC可以在32位和64位软件之间通讯。
- OCR纯中文或者纯英文都没有问题,但OCR中英文混排的时候,效果确实不如Abbyy,这个无解。
尽管存在上面各种问题,但MODI,尤其是MODI引擎仍然是目前能找到的最好的免费离线版OCR引擎。毕竟是商业级OCR引擎,tesseract之流拍马也追不上。
(完)