当前位置: 代码迷 >> PB >> office modi控件的使用
  详细解决方案

office modi控件的使用

热度:308   发布时间:2016-04-29 10:32:11.0
高分求教office modi控件的使用
pb中如何使用modi控件开发ocr,有人做过吗?[email protected]??加。谢谢

------解决方案--------------------
以下为转贴

6月29日
基于MODI开发OCR程序小结
找了一大圈,试过什么文萃、Pegasus Imaging等等,国产、进口的都试过,感觉都不太满意,要么得花钱,要么不支持中文;最后终于发现,远在天边,近在眼前,Office2003里就藏着这么个东西:Microsoft Office Document Image,虽然网上资料不多,但也不难找到,msdn上也有:http://msdn2.microsoft.com/en-us/library/aa167607(office.11).aspx,对包括中英文在内的各种语言的印刷体支持还不错,没试过手写体,估计悬。
安装完Microsoft Office Document Image后,在项目中分别引用、添加控件:Microsoft Office Document Imaging
11 Type Library,之后分别得到MODI名称空间下的Document、Image等主要操作文档类,以及用于显示文档的AxMODI.AxMiDocView控件;代码比较简单,关键的有如下部分:
private void SetImage(string filename)
{
// set the image..
try 
{
_MODIDocument = new MODI.Document();
_MODIDocument.Create(filename);
axMiDocView1.Document = _MODIDocument;
axMiDocView1.Refresh();
}
catch(System.Runtime.InteropServices.COMException ee)
{
MessageBox.Show(ee.Message);
}
}
  

public void Analyse()
{
if (_MODIDocument == null) return;
try 
{
// add event handler for progress visualisation
//_MODIDocument.OnOCRProgress += new MODI._IDocumentEvents_OnOCRProgressEventHandler(this.ShowProgress);

// the MODI call for OCR
// _MODIDocument.OCR(_MODIParameters.Language,_MODIParameters.WithAutoRotation,_MODIParameters.WithStraightenImage);
_MODIDocument.OCR(MODI.MiLANGUAGES.miLANG_CHINESE_SIMPLIFIED, true, true); 

this.textBox1.Text = (_MODIDocument.Images[0] as MODI.Image).Layout.Text;
//statusBar1.Text = "Ready."; 

_MODIDocument.Close(false);
_MODIDocument = null;
}
catch(Exception ee)
{
// simple exception "handling"
MessageBox.Show(ee.Message);
}
}
问题是编译通过,初始运行也正常,但只要一扫描就报“OCR Runtime Error”,找了半天发现,我的系统是win2003,默认设置为:“除所选外,为所有程序和服务提供数据执行保护”,改成“只为windows程序和服务提供数据执行保护”,重启,搞定!设置方法为:右击“我的电脑”-》高级-》性能设置-》数据执行保护。 

但这只是winform类的程序,现在需求是要在ie里webform上执行,咋办呢?综合考虑之后,还是做成windows control嵌入webform成本最低(嘿嘿,方便啊),牺牲的代价是客户端需安装.net framework,唉,鱼与熊掌不可兼得啊,先凑合着,有机会再优化吧。控件开发也没啥可说的,嵌入网页的代码如下:<OBJECT ID="ocr1" WIDTH="100%" HEIGHT="90%" CLASSID="http:OCRControl.dll#OCRControl.MODIOCRControl" VIEWASTEXT>
</OBJECT>,CLASSID中用#分为两部分,前面是可以包含路径的控件名,后面是类的全名称控件,其中需要注意的是:控件不可放在bin文件夹下,因为bin是系统文件夹,用户不可访问,而winform控件是需要下载到客户端的;运行代码,哈哈,一切OK!稍微有点遗憾就是网页必须发布到IIS,不能象Applet那样直接跑,是因为IE对CLR、JIT不支持还是怎么的?不明白~~。 

换台机器试试,哦?出问题了,控件加载不起来,在页面上显示为类似图片不存在时的小叉,机器是xp,.net framework,modi,一个都不少!是权限问题?原来遇到过webform内嵌winform的情况,好像是要配置什么,给忘了;试着把IE的internet选项里安全都调低,信任站点也加上,还是不管用。google一下,最终找到比较权威的解决办法:以上关于权限设置也是需要的,另外在对目录做web共享时,应用程序权限要设为“脚本”(默认就是),最关键的是,需要配置.net framework的运行库安全策略,控制面板-》microsoft .net framework (版本号) 配置-》我的电脑-》运行库安全策略-》计算机-》代码组-》all code-》添加子代码组-》输入名称、说明-》选择条件类型为URL-》输入程序URL,如http://localhost/*-》使用权限FullTrust(完全信任)-》完成。 

再运行程序,出来了,爽啊。 


------解决方案--------------------
小弟这两天我找到了一个小软件(见:最下面的下载网站),是调用OFFICE 自带的OCR控件来运行的。 

从国外网站下的,国内的也有这个软件,还有源代码,可是我下来以后可以运行,但是不能识别。 

office 这个组件是Microsoft Office Document Imaging组件 
位置是C:\Program Files\Common Files\Microsoft Shared\MODI(此文件夹应该不会有20M左右)如果OFFICE是完整版,可以看到,这个文件夹下有个MSPVIEW.EXE文件,利用它可以识别图片上的字符,但是我的在C:\Program Files\Common Files\Microsoft Shared\MODI下的MSPVIEW.EXE文件可以识别图片,但下载的小软件却不能。 

按道理讲,调用这个控件,既然这个控件可以识别,那小软件也应该可以。 

所以现在就是在想是不是OFFICE 的问题,于是我安装了很多个,都没有成功,搞的很是迷茫。 

如果各位有空帮忙看下,万分感谢. 

下载网站: 
http://www.codeproject.com/KB/recipes/OCRwithMODI.aspx (软件出处,可能下载不了用下面这个下) 
http://blog.chinaunix.net/u/22778/showart.php?id=237825
  相关解决方案