Foxtable(狐表)用户栏目专家坐堂 → 【ocr识别】VB实现OCR文字识别,怎么进行转化为foxtable程序代码呢?


  共有8409人关注过本帖树形打印复制链接

主题:【ocr识别】VB实现OCR文字识别,怎么进行转化为foxtable程序代码呢?

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
【ocr识别】VB实现OCR文字识别,怎么进行转化为foxtable程序代码呢?  发帖心情 Post By:2017/11/1 14:50:00 [显示全部帖子]


下面是网上文章及代码  怎么修改代码实现FOXTABLE实现识别呢?

VB实现OCR文字识别

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

1. 添加控件,需要安装office2003, 没有安装office2003的可以从别人机子上拷贝相关文件,注册regsvr32.exe mdivwctl.dll,【如下图错误,怎么解决呢?】


此主题相关图片如下:12.png
按此在新窗口浏览图片


 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:mdivwctl.dll.rar


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

工程->部件->添加这个控件:Microsoft Office Document Imaging 11.0 Type Library【这个部分在FOXTABLE中该如何操作呢?】

2.在按钮的Click事件里:


代码1:

    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

 

代码二:

Option Explicit

'OCR的主要功能

Private Function OCRImageFile(ByVal strName As String) As Boolean

    Dim modiDocument As New MODI.Document

    Dim modiImages As New MODI.Images

    Dim modiImage As New MODI.Image

    Dim modiLayout As New MODI.Layout

    Dim ImageCount As Integer

    

    Dim i As Integer

    

    modiDocument.OCR miLANG_CHINESE_SIMPLIFIED, False, False

    Set modiImage = modiDocument.Images

 

    

    For i = 0 To ImageCount

        Set modiImage = modiImages.Item(i)

        Set modiLayout = modiImage.Layout

        Text1.Text = modiLayout.Text

    Next i

    

    modiDocument.Close False: Set modiDocument = Nothing

    

    If ImageCount > 0 Then

        OCRImageFile = True

    Else

        OCRImageFile = False

    End If

End Function



然后运行如下代码会报错:


此主题相关图片如下:22.png
按此在新窗口浏览图片

上述代码怎么能够分别修正使用在foxtable中呢?


[此贴子已经被作者于2017/11/1 16:07:37编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)参考 http://www.cnblogs.c...  发帖心情 Post By:2017/11/1 15:34:00 [显示全部帖子]

如图的东西  在foxtable中如何操作啊?

图片点击可在新窗口打开查看此主题相关图片如下:22.png
图片点击可在新窗口打开查看
楼上的那调用并注册DLL也没有成功   

目前操作系统是window7 64位  安装的是office2007

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)参考代码 Dim doc = Create...  发帖心情 Post By:2017/11/1 15:49:00 [显示全部帖子]


现在第一步DLL就出错了 没有成功 求解啊  
楼上的参考代码也是需要先解决如下两个问题了才能测试吧!


我已经复制在foxtable安装目录下了的   且已经检查了对应的目录下有这个文件dll

图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:22.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)识别文字,现在基本都是调用api的,如...  发帖心情 Post By:2017/11/1 15:52:00 [显示全部帖子]

因为是在内部网操作,所以不可能调用网络上的api,还得麻烦有点甜老师多多指导啊
工程->部件->添加这个控件:Microsoft Office Document Imaging 11.0 Type Library【这个部分在FOXTABLE中该如何操作呢?】

图片点击可在新窗口打开查看此主题相关图片如下:33.png
图片点击可在新窗口打开查看
对应在FOXTABLE中如何操作呢?

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)参考代码?Dim doc = Create...  发帖心情 Post By:2017/11/2 12:09:00 [显示全部帖子]

有点甜老师   我打上补丁之后  运行
Dim doc = CreateObject("MODI.Document")  
doc.Create("d:\test.jpg")
doc.OCR(2052, True, True)
Dim layout = doc.images(0).Layout
msgbox(layout.text)
提示错误:未知编译错误   求解啊


甚至卸载开发板  然后重新安装都是一样的错误!
[此贴子已经被作者于2017/11/2 12:12:16编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)安装ms office,打好sp补丁,再测试...  发帖心情 Post By:2017/11/2 12:44:00 [显示全部帖子]

原来是要打上SP2补丁才能运行

但是效果为什么多行文字 却只有一行可以识别 呢  而不是全部被识别呢?

图片点击可在新窗口打开查看此主题相关图片如下:1111111.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)Dim doc = CreateObject("MODI.Docum...  发帖心情 Post By:2017/11/2 15:17:00 [显示全部帖子]

有点甜老师 改成了下面的  效果已经实现
Dim doc = CreateObject("MODI.Document")
doc.Create(e.Form.Controls("TextBox1").value )
doc.OCR(2052, True, True)
For i As Integer = 0 To doc.Images.count - 1
    Dim layout = doc.images(i).Layout
        
    e.Form.Controls("TextBox4").value = layout.text
Next i
doc.close
doc = Nothing


[此贴子已经被作者于2017/11/2 15:26:06编辑过]

 回到顶部