您的位置:首页 > 其它

不安装office的情况下第三方软件(开发语言)调用MODI(Microsoft Office Document Imaging)

2013-07-09 19:19 567 查看

要搞定的事情

1.搞定MODI组件所需文件

2.完成与MODI的COM组件相关的注册表项安装(添加)

3.完成与Office相关的注册表项安装(添加)

1.
MODI文件

层次
文件名
说明
接口层

MODI

MDIVWCTL.DLL

Microsoft Office Document Imaging Viewer Control

MSPCORE.DLL

Microsoft® Office Document Imaging Object Library

MSPGIMME.DLL

Microsoft® Gimme library

OFFICE12\MSO.DLL

2007 Microsoft Office component

数据层

英语

LATIN1.SHP

西欧11国(含英文)通用特征库

CharSetTable.chr

字符编码转换表,文本文件

ENGLISH.LNG

英文语言文件

简体中文

ENGDIC.DAT

清华文通的英文字典文件,貌似它也支持中、英文

ENGIDX.DAT

清华文通的英文索引

JFONT.DAT

Simplified Chinese code Conversion

LOOKUP.DAT

OCRHC.DAT

OCRVC.DAT

TWGB32.DLL

SCCODE.UNI

SCPRINT.DAT

SCPRINT2.DAT

2与MODI的COM组件相关的注册表项安装(添加)

COM相关就是与MODI的COM组件相关的注册表项,这个直接用regsvr32导入即可:启动命令行,进入MODI安装文件夹,执行下面的命令:

regsvr32 MDIVWCTL.DLL

regsvr32 MSPCORE.DLL

即可完成MODI COM组件的注册。

3 与Office相关的注册表项安装(添加)

[HKEY_CLASSES_ROOT\Installer\Components\61BA386016BD0C340BBEAC273D84FD5F]

"2052"=hex(7):76,00,55,00,70,00,41,00,56,00,53,00,2e,00,7d,00,58,00,25,00,21,\

00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\

5f,00,32,00,30,00,35,00,32,00,3c,00,00,00,00,00

[HKEY_CLASSES_ROOT\Installer\Features\00002109F10040800000000000F01FEC]

"OCR_2052"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\00002109F10040800000000000F01FEC\Features]

"OCR_2052"="%mEMae,7q9*DXdU@EPi="

[HKEY_CLASSES_ROOT\Installer\Products\00002109710000000000000000F01FEC]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\3F745FF6A76FF2F4797DB74FC7B3FD8B]

"00002109710000000000000000F01FEC"="C:\\Program Files\\Common Files\\Microsoft Shared\\MODI\\12.0\\XPAGE3C.DLL"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\4080B9FA1A0BBF34FB7813E87159FC64]

"00002109F10040800000000000F01FEC"="C:\\Program Files\\Common Files\\Microsoft Shared\\MODI\\12.0\\SCCODE.UNI"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\48AD0082D02B3D24C9A56FA50728CCAB]

"00002109710000000000000000F01FEC"="C:\\Program Files\\Common Files\\Microsoft Shared\\MODI\\12.0\\MSPCORE.DLL"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\D94C8360B8BB1DC41B1950E0F8237563]

"00002109710000000000000000F01FEC"="C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE12\\MSO.DLL"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\00002109710000000000000000F01FEC\InstallProperties]

"WindowsInstaller"=dword:00000001

下面是自己用C#调用MODI及使用人工神经网络算法AspriseOCR写的OCR程序

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;

namespace ToText
{
public
partial class
Form2 : Form
{
public Form2()
{
InitializeComponent();
}
#region DllImport
[DllImport("AspriseOCR.dll", EntryPoint ="OCR",
CallingConvention = CallingConvention.Cdecl)]
public
static extern
IntPtr OCR(string file,
int type);

[DllImport("AspriseOCR.dll", EntryPoint ="OCRpart", CallingConvention =
CallingConvention.Cdecl)]
static
extern IntPtr OCRpart(string file,int type,
int startX,int startY,
int width,int height);

[DllImport("AspriseOCR.dll", EntryPoint ="OCRBarCodes", CallingConvention =
CallingConvention.Cdecl)]
static
extern IntPtr OCRBarCodes(string file,int type);

[DllImport("AspriseOCR.dll", EntryPoint ="OCRpartBarCodes", CallingConvention =
CallingConvention.Cdecl)]
static
extern IntPtr OCRpartBarCodes(string file,int type,
int startX,int startY,
int width,int height);
#endregion

// 点击“转换”事件
private
void button1_Click(object sender,
EventArgs e)
{
//txt_result.Text = "";

StringBuilder sb =new
StringBuilder();
string img_Path = txt_imgpath.Text.Trim(); //
图片地址

if (String.IsNullOrEmpty(img_Path))
{
MessageBox.Show("请先输入图片地址!");
return;
}

//office MODI
if (string.Compare(this.cmb_toolstype.SelectedValue.ToString(),"2007") == 0)

{
try
{
MODI.Document doc =new MODI.Document();
doc.Create(img_Path);
//open
MODI.Image image;
MODI.Layout layout;
doc.OCR(GetLanuageType(cmb_languagetype.SelectedValue.ToString()),true,
true); // 识别文字类型
for (int i = 0; i < doc.Images.Count; i++)
{
image = (MODI.Image)doc.Images[i];
layout = image.Layout;
sb.Append(layout.Text);
}
}
catch (Exception ex)
{
txt_result.Text =
"转换失败!详情:" + ex.Message;
}
txt_result.Text = sb.ToString();
}

//AspriseOCR 人工神经网络算法
else
if(string.Compare(this.cmb_toolstype.SelectedValue.ToString(),"8") == 0)

{
int startX = 0;
int startY = 0;
int width = -1;
int height = -1;

try
{
Image img =Image.FromFile(img_Path);
width = img.Width;
height = img.Height;
}
catch (Exception ex)
{
MessageBox.Show(ex.StackTrace);
}
txt_result.Text = Marshal.PtrToStringAnsi(OCRpart(img_Path, -1, startX, startY, width, height));
}
}

// “浏览”事件
private
void button2_Click_1(object sender,
EventArgs e)
{
openFileDialog1.ShowDialog();
txt_imgpath.Text = openFileDialog1.FileName;
}

// 窗体加载事件
private
void Form2_Load(object sender,
EventArgs e)
{
List<ListItem> list =new
List<ListItem>();
ListItem item =
new ListItem();

List<ListItem> list2 =new
List<ListItem>();
ListItem item2 =
new ListItem();

// 数值对应 以MODI.MiLANGUAGES枚举类为准
list.Add(new
ListItem("英语","9"));
list.Add(new
ListItem("简体中文","2052"));

cmb_languagetype.DataSource = list;
cmb_languagetype.ValueMember =
"_sValue";
cmb_languagetype.DisplayMember =
"_sText";

list2.Add(new
ListItem("MODI_OCR",
"2007"));
list2.Add(new
ListItem("Asprise_OCR",
"8"));

cmb_toolstype.DataSource = list2;
cmb_toolstype.ValueMember =
"_sValue";
cmb_toolstype.DisplayMember =
"_sText";

}

private MODI.MiLANGUAGES GetLanuageType(string sValue) //判断语言类型
{
switch (sValue)
{
case
"2052":
return MODI.MiLANGUAGES.miLANG_CHINESE_SIMPLIFIED;
case
"9":
return MODI.MiLANGUAGES.miLANG_ENGLISH;
default:
return MODI.MiLANGUAGES.miLANG_ENGLISH;
}
}

private
void txt_result_TextChanged(object sender,EventArgs e)
{

}
}
}

运行结果



解析原图(左上角部分)



原图18M无法上传
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐