日期:2014-05-17  浏览次数:21215 次

MSOffice OCR组件在Windows Server 2003 上执行出错的

? ? 近日,需要用到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进行测试,结果令人非常满意

?

?

?

?