关于OFFICE2003文字识别控件

关于OFFICE2003文字识别控件  

原理: 利用微软OCR控件, 只须要不到10行代码就可以实现自已的OCR文字识别软件.spa

1. 添加控件,须要安装office2003, 没有安装office2003的能够从别人机子上拷贝相关文件,注册regsvr32.exe mdivwctl.dll,orm

在运行中输入regsvr32.exe "C:\Program Files\Common Files\Microsoft Shared\MODI\11.0\mdivwctl.dll"server

控件通常在这个目录下:C:\Program Files\Common Files\Microsoft Shared\MODI\11.0, 只须要相关的几个文件就能够了, 此文件夹所有文件大概在21M左右.对象

工程->部件->添加这个控件:Microsoft Office Document Imaging 11.0 Type Libraryblog

2.在按钮的Click事件里:接口

    Dim strLayoutInfo As String, strLPN As String事件

   

     '初始化并加载文档图片

    Set miDoc = CreateObject("MODI.Document")            '建立对象开发

    miDoc.Create "D:\未命名.jpg"                         '加载图片文件文档

   

    Screen.MousePointer = vbHourglass                    '设置光标忙

    '识别

    miDoc.Images(0).OCR miLANG_CHINESE_SIMPLIFIED, True, True '有用的就此一句,识别为中文简体

   

    Set modiLayout = miDoc.Images(0).Layout              '读出数据

    strLayoutInfo = _

        "Language: " & modiLayout.Language & vbCrLf & _

        "Number of characters: " & modiLayout.NumChars & vbCrLf & _

        "Number of fonts: " & modiLayout.NumFonts & vbCrLf & _

        "Number of words: " & modiLayout.NumWords & vbCrLf & _

        "Beginning of text: " & Left(modiLayout.Text, 50) & vbCrLf & _

        "First word of text: " & modiLayout.Words(0).Text

    MsgBox strLayoutInfo, vbInformation + vbOKOnly, "Layout Information"

    Set modiLayout = Nothing

    Set miDoc = Nothing

    Screen.MousePointer = vbDefault

3. OK了, 是否是很简单!

--------------------------

以上代码用精简版vb6编译经过,可是是在彻底安装office2003的前提下,单独用个人包注册,执行的时候,miDoc.Create "D:\未命名.jpg"                         '加载图片文件 这步有问题,

在易语言下不能注册该支持库,应该是兼容性问题!

该ocr识别效果很好,望高手给看看,如何在易中挂接,改进下图片对齐,作个车牌识别也能够!

最近在开发 Delphi 7中须要使用Office 2003的OCR识别组件。  总结工做中发现的问题

 

1、  服务中建立MODI.Document,报未注册 EOleException。

其实核心MDIVWCTL.DLL已reg,一样的主exe中核心代码运行没问题, 缘由在于 原来exe程序中主窗体上丢了一个 TMiDocView可视OLE控件。

尝试如下方法:

1. TService声明Private MiDoc:TMiDocView对象, Create时建立该对象

2. 纯接口方式 CoDocument.Create; IDocument.Create('文件名')

3. CreateOLEOBject('MODI.DOcument') 动态建立comserver as IDocument

4. way1 中指定 MiDoc.FileName, MiDoc.Document as IDocument

组合以上均未能解决问题

5. IDocument.Create时try 保护 except中再次 create;

偶尔能调过该问题,Create成功, 可是运行屡次后 exception明显变多

 

此问题在网上搜索多日,碰到不少一样的案例,均没发现解决方法。

 

2、 核心的dll

C:\Program Files\Common Files\Microsoft Shared\MODI\11.0 下

MDIVWCTL.dll (核心COM)

MSPGIMME.dll

3、 文件锁定问题

 

IDocument.Create('c:\aa.tif');

...

IDocument.Close;  //运行完这行 文件仍是一直被锁定,没法删除。

 

这个问题应该是能解决, 知道的朋友相烦告诉一下  :-)

相关文章
相关标签/搜索