不安装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无法上传
相关文章推荐
- office2010安装Microsoft Office Document Imaging (MODI)
- office2010安装Microsoft Office Document Imaging (MODI) 图解
- Visual Studio2013使用Microsoft Office Document Imaging(MODI)的方法
- OFFICE2007的文字识别(OCR,Microsoft Office Document Imaging,MODI)无法识别的问题
- 使用MODI(Microsoft Office Document Imaging)识别中文,但无法区分段落
- Visual Studio2013使用Microsoft Office Document Imaging(MODI)的方法
- C# 使用Microsoft Office Document Imaging(MODI) 识别 图片中的文字(OCR)
- Android开发,在一个项目中调用(启用)已经安装的第三方apk应用软件
- C语言学习之1(Microsoft Visual Studio即VC6软件的安装及hello world 简单例子编写)
- 高质量,高效率的多国语言软件开发(Web/PC/Mobile),使用接口约束/调用不同语言资源
- Microsoft Office Document Imaging 2007提取图片中的文字
- go linxu环境安装,webserver开发及go语言如何调用shell脚本
- 针对2007 Microsoft Office system进行开发的安装步骤
- Android开发之Genymotion安装第三方软件的“APP not installed”问题
- 使用Microsoft® Visual Studio® 2008解决软件开发中的挑战-Office 开发
- 使用VC++调用C#封装的DLL库实现Excel文件的操作(不用安装office软件环境)
- Microsoft Office Document Imaging File (.mdi)文件怎么转成图片格式
- 在 2007 Office 程序中添加 Microsoft Office Document Imaging 程序
- Tips-Anaconda与Python共存情况下,包的安装及调用语言冲突问题
- iOS软件开发常见通过Cocoapods安装的第三方框架