关于OFFICE2003文字识别控件

关于OFFICE2003文字识别控件  

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

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

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

控件一般在这个目录下:C:\Program Files\Common Files\Microsoft Shared\MODI\11.0, 只需要相关的几个文件就可以了, 此文件夹全部文件大概在21M左右.

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

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识别组件。  总结工作中发现的问题

 

一、  服务中创建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明显变多

 

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

 

二、 核心的dll

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

MDIVWCTL.dll (核心COM)

MSPGIMME.dll

三、 文件锁定问题

 

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

...

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

 

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

转载于:https://my.oschina.net/u/582827/blog/196195

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Visual Basic是一种编程语言,用于开发Windows应用程序。要实现文字识别功能,可以使用Visual Basic的图像处理和文字识别库。 首先,需要导入相关的库文件,例如Microsoft Office的"Microsoft OCR Library"。然后,通过调用库函数和方法,可以读取和处理图像中的文字。 在代码中,可以通过以下步骤实现文字识别功能: 1. 加载图像:使用图像处理库的函数,读取待识别的图像文件。 2. 预处理图像:可以使用图像处理库的函数来调整图像的亮度、对比度和清晰度,以提高文字识别的精准度。 3. 文字识别调用OCR库的函数,对预处理后的图像进行文字识别操作。这将返回一个包含识别到的文字的文本结果。 4. 结果处理:将识别到的文字结果进行适当的处理,例如提取特定的信息或进行文本分析。 5. 输出结果:最后,将识别到的文字结果显示在应用程序的用户界面上,或存储到文件中。 需要注意的是,文字识别的准确性受到图像质量、文字字体和大小等因素的影响。因此,在使用文字识别功能时,可以尝试不同的预处理和图像增强方法,以提高识别率。 在实际开发中,还可以根据具体需求添加其他功能,例如图像裁剪、旋转或保存识别到的文字文件等。 总之,使用Visual Basic编写文字识别代码,可以使开发者轻松实现图像文字识别功能。 ### 回答2: Visual Basic是一种很强大的编程语言,可以用来编写文字识别代码。文字识别代码的作用主要是将图像中的文字转化为可识别的文本。 首先,我们需要引用一些相关的库和组件。可以使用OCR(Optical Character Recognition,光学字符识别)技术来实现文字的识别。在Visual Basic中,可以使用一些第三方库,如Tesseract OCR等。 下面是一个简单的Visual Basic文字识别代码示例: ```vb Imports Tesseract Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' 打开图像文件 Dim imgPath As String = "image.jpg" Dim img As New TesseractEngine("./tessdata", "eng", EngineMode.Default) Dim page As Tesseract.Page = img.Process(Pix.LoadFromFile(imgPath)) ' 获取识别的文本 Dim text As String = page.GetText() ' 显示识别结果 MessageBox.Show(text) End Sub End Class ``` 在这个示例代码中,我们首先需要导入Tesseract库。然后,我们通过创建一个TesseractEngine对象来初始化图像处理引擎。接着,我们通过调用Process方法来处理图像中的文字,并获取识别的文本。最后,我们可以使用MessageBox.Show方法来显示识别结果。 当然,这只是一个简单的示例,实际的文字识别代码可能会更加复杂。根据具体的需求,可以根据Tesseract库的文档和其他相关资源来进行更深入的学习和实践。同时,还可以探索其他OCR库和技术,以实现更准确和高效的文字识别功能。 ### 回答3: Visual Basic是一种广泛用于开发Windows应用程序的编程语言。文字识别是一项将图像中的文字转化为可编辑或可搜索的文本的技术。下面是一个用Visual Basic编写的简单文字识别代码示例: 首先,需要引用Microsoft Office文档对象库,以使用其中的OCR功能。添加一个“OCR”按钮和一个文本框控件到窗体上。在按钮的Click事件中添加以下代码: ``` Private Sub btnOCR_Click(sender As Object, e As EventArgs) Handles btnOCR.Click Dim ocrApp As New MODI.Document() ' 创建MODI文档对象 ocrApp.Create("C:\path\to\your\image.jpg") ' 读取要识别的图像文件 ocrApp.OCR(MODI.MiLANGUAGES.miLANG_CHINESE_SIMPLIFIED, False, False) ' 使用简体中文进行OCR识别 Dim ocrText As String = ocrApp.Images(0).Layout.Text ' 获取识别的文本 txtResult.Text = ocrText ' 将识别结果显示在文本框控件ocrApp.Close() ' 关闭MODI文档对象 ocrApp = Nothing ' 释放资源 End Sub ``` 在这个示例中,我们使用了Microsoft Office文档对象库中的MODI(Microsoft Office Document Imaging)组件来进行文字识别。首先,我们创建一个MODI文档对象,并通过Create方法加载要识别的图像文件。然后,我们调用OCR方法来执行识别操作,指定识别的语言为简体中文。最后,我们通过Images集合获取识别的图像对象,并从中提取识别的文本,将其显示在文本框控件上。最后,我们关闭MODI文档对象并释放资源。 需要注意的是,上述代码仅是一个简单的示例,需根据实际需求进行修改和完善。另外,MODI组件是自2009年起停止支持和开发的,因此建议使用其他先进的OCR库或API来进行文字识别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值