近日,需要用到Office的OCR组件来把一些图片转成文字,在WinXP上测试都挺好,但是在Windows Server 2003上执行时,总出错:
1、用Office自带的OCR工具:
C:\Program Files\Common Files\Microsoft Shared\MODI\11.0\MSPVIEW.EXE
进行识别时,报错如下:
在一页或多页上执行 OCR 不成功(未找到文本);
多次测试还是同样出错,后来换成Office2007来测试,结果还是一样出错,我开始怀疑该OCR组件是否不能在Windows Server使用。但是在网络上搜索了很久,也没找到佐证来验证我的怀疑。于是对做了以下两个测试。
2、用VB编写测试程序进行测试,结果正常(VB测试程序请参考我的另一篇拙文);
3、用jacob在JAVA中调用,报错:
OCR Running error
从以上测试结果看来,并不是OCR组件在Windows Server上不能使用,而是什么地方设置的问题,于是在网上再次大海捞针,看到有人说修改Windows Server2003的“数据执行保护”策略可以解决,于是照猫画虎进行了设置:
1、右键单击“我的电脑”,选择“属性”-->“高级”-->“性能”-->“设置”-->“数据执行保护”,在“除所选之外,为所有程序和服务启用数据执行保护”下面的列表中增加要取消数据执行保护的程序,例如:
C:\Program Files\Common Files\Microsoft Shared\MODI\11.0\MSPVIEW.EXE
也可以直接选择“只为关键Windows程序和服务启用数据执行保护”选项,不过这样可能降低系统的安全性
2、重启操作系统
3、打开
C:\Program Files\Common Files\Microsoft Shared\MODI\11.0\MSPVIEW.EXE
并打开测试图片进行OCR,错误不再出现;
4、为了解决JAVA程序中执行出错的问题,把JAVA虚拟机也加入取消数据执行保护的列表中,假设我的JDK安装目录是:c:\jdk1.6.0_10,则把
C:\jdk1.6.0_10\bin\java.exe
C:\jdk1.6.0_10\bin\javaw.exe
两个可执行文件加入取消数据执行保护列表
,再启动Eclipse进行测试,结果令人非常满意