Microsoft Office Document Imaging (MODI)是Office 2003-2007版本中的一个利用OCR(Optical Character Recognition 光学字符识别)技术识别图像中的文字并转换为文本的一个组件。在VBA中使用该组件需要在“工具-引用”中将其设置为“可使用的引用”,如下图:
VBA识别代码如下:
Private Sub Select_JPG_File()
SelectedFilePath="D:\1.jpg"
OCRImageFile (SelectedFilePath)
MsgBox "识别成功!", vbOKOnly, "提示"
End Sub
' 利用微软MODI控件,实现OCR文字识别。
' 1. 需要安装微软MODI控件,可以通过Office原装安装光盘添加工具里面OCR组件。
' 2. 点击“开发工具->Visual Basic->工具->引用->Microsoft Office Document Imaging 12.0 Type Library”
Function OCRImageFile(ByVal ImageFile As String)
Dim objDocument As New MODI.Document
Dim objImage As New MODI.Image
objDocument.Create ImageFile
Set objImage = objDocument.Images.Item(0)
On Error Resume Next
objImage.OCR miLANG_CHINESE_SIMPLIFIED, False, False ' 以中文模式识别,并禁止自动检测
If Err.Number = 0 Then
'MsgBox objImage.Layout.Text ' 显示识别的文本
Sheets("Sheet1").Cells(1, 1) = objImage.Layout.text ' 将识别结果写入单元格
Else
MsgBox Err.Description
End If
objDocument.Close False
Set objDocument = Nothing
End Function
虽然有高手提取了该组件的独立安装包,并设法部署在Office2010版本中使用,但经过笔者反复试验,其成功率非常低,仅在Office2010精简版中部署成功过,在Office2010正版安装环境中从未成功过,总是会造成Office应用软件直接崩溃,并提示错误信息如下:
问题签名:
问题事件名称: APPCRASH
应用程序名: EXCEL.EXE
应用程序版本: 14.0.4756.1000
应用程序时间戳: 4b9c08e8
故障模块名称: KERNELBASE.dll
故障模块版本: 6.1.7601.24545
故障模块时间戳: 5e0eb7d0
异常代码: c06d007f
异常偏移: 0000845d
OS 版本: 6.1.7601.2.1.0.256.48
区域设置 ID: 2052
有关该问题的其他信息:
LCID: 2052
skulcid: 2052
由于MODI组件很难在Office2010以上版本中成功部署,且其对图片文字的识别能力较差,准确率又不高,建议改用OneNote组件来代替它。OneNote是Office中的一个电子笔记本软件,它支持使用触笔、声音或视频创建笔记,且能够直接识别和复制图片中的文字,并粘贴到其他文档中进行编辑,非常方便,且识别率高,如下图: