使用office2003 MODI控件做识别 OCR

 

转载地址:http://www.cnblogs.com/xuneng/archive/2008/07/31/1257448.html

先确保的是你要装上这个组件Microsoft Office Document Imaging 12.0 Type Library或者Microsoft Office Document Imaging 11.0 Type Library


 

装好后项目里添加引用这个com就可以了

它识别英文和中文的正确率都还不错。要注意的是:如果要识别简体中文,你必须下载安装中文简体OCR引擎,微软官方下载地址:中文简体OCR引擎

以下是识别的核心代码

 MODI.Document md  =   new  MODI.Document();
            md.Create(Directory.GetCurrentDirectory() 
+   " \\SampleForOCR.tiff " );
            md.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, 
true true );

            MODI.Image image 
=  (MODI.Image)md.Images[ 0 ];
            MODI.Layout layout 
=  image.Layout;

            MODI.Word word;
            StringBuilder sb 
=   new  StringBuilder();
            
for  ( int  i  =   0 ; i  <  layout.Words.Count;i ++  )
            
{
                word 
= (MODI.Word)layout.Words[i];
                sb.Append(word.Text);
            }

sb.ToString就可以得到了
图片转成 tiff
Bitmap bitmap  =   new  Bitmap( 100 100 );
            bitmap.Save(
" somefilename " , ImageFormat.Tiff);
如何进行截屏呢?
拷屏.先把整个屏幕的图像拷过来(其它地方也会用到这个.比如做一个操作动作的外挂等)
Graphics g  =  Graphics.FromImage(m_WindowDlg.m_objBitmap);
            
//  Copy the screen into the bitmap object.
            g.CopyFromScreen( 0 0 0 0 new  Size(w, h));

指定区域是利用
另一个窗口来的..把这个窗口的透明属性opacity设为100%这样人家就看不到了.
然后利用 MouseDown 画出我们截屏的范围 和 mouseUP事件.
mouseUP后引发一个完成的事件.并通知座标大小
主要代码

//  Make sure we clicked the mouse button and
            
//    have a starting coordinate.
             if  (m_nStartX  !=   - 1 )
            
{
                
// Get the graphcis object from this window.
                Graphics g = Graphics.FromHwnd(Handle);

                
// Check to see if we need to restore the
                
//   screen from a previous rectangle draw.
                if (m_nLastX != -1)
                
{
                    
// Create a rectangle with which to clip.
                    
//   Note that we are 3 pixels to the left
                    
//   and 3 pixels to the right so that we
                    
//   can take the width of the line into
                    
//   account.
                    Rectangle rc = new Rectangle(m_nLastX-3, m_nLastY-3,
                        m_nLastWidth
+6, m_nLastHeight+6);
                    g.SetClip(rc);
                    g.DrawImage(m_objBitmap, 
00);
                    g.ResetClip();
                }


                
// Here we set some local variables just
                
//   in case we have to swap the values.
                int nStartX = m_nStartX;
                
int nStartY = m_nStartY;

                
// Get and record our current mouse position.
                int nEndX = e.X;
                
int nEndY = e.Y;

                
// Calculate width and height.
                int nWidth = Math.Abs(nStartX - nEndX);
                
int nHeight = Math.Abs(nStartY - nEndY);

                
// We may need to swap values if user went
                
//   left from the start position.
                if (nEndX < nStartX)
                
{
                    
int i = nStartX;
                    nStartX 
= nEndX;
                    nEndX 
= i;
                }

                
// We may need to swap values if user went
                
//   up from the start position.
                if (nEndY < nStartY)
                
{
                    
int i = nStartY;
                    nStartY 
= nEndY;
                    nEndY 
= i;
                }


                
// Draw the rectangle.
                g.DrawRectangle(new Pen(Color.Black, 3),
                    nStartX, nStartY, nWidth, nHeight);

                
// Record the operation so that we can restore
                
//   when the mouse moves, and also give values
                
//   to the EndCapture method.
                m_nLastX = nStartX;
                m_nLastY 
= nStartY;
                m_nLastWidth 
= nWidth;
                m_nLastHeight 
= nHeight;
g.DrawRectangle(new Pen(Color.Red, 1), 这个改成红色一个像素看起来更舒服,这个函数是鼠标一移动都会被调用的.
### 回答1: 对于许多人来说,安装Office可以让他们使用模拟OCR功能。然而,有一些人可能不需要通过安装Office使用OCR,这就是为什么可以使用一个名为Modi OCR的光学扫描中文简繁体的modi ocr安装包。Modi OCR是一种独立的OCR系统,允许您将扫描的图像转换为可编辑的文本。这个软件可以将简体中文和繁体中文进行识别,从而减轻了对OCR功能的需求。这个软件是免费的,可以从许多网站上下载,安装起来也非常简单。简单来说,如果您需要使用OCR功能,但又不想安装OfficeModi OCR可以是一个非常好的选择。无论您是使用简体中文还是繁体中文,这个软件都可以为您提供有帮助的功能。 ### 回答2: Microsoft Office Document Imaging(简称MODI)是一款Office套件中自带的OCR软件,用于识别图像中的文字和字符,可以将图像文件转换成可编辑的文本文件。Windows 10没有自带的MODI OCR,但用户可以通过安装MODI OCR安装包来使用功能,而不需要安装Office软件。 使用MODI OCR安装包,用户可以将中文简繁体文本转化为可编辑的文本文件,并且还能进行一定的文本识别和编辑,极大地提高了工作效率和便捷性。安装包包含了多种语言,其中包括简体中文和繁体中文,用户可以根据自己的需要选择不同的语言进行安装和使用MODI OCR安装包的安装非常简单,用户只需要下载并双击运行安装程序即可完成安装。安装过程中,用户可以根据自己的需要选择安装的语言和安装路径。在安装完成之后,用户可以通过Windows搜索功能快速找到MODI OCR软件,并进行使用。 总之,MODI OCR安装包是一款非常实用的软件,不仅能够实现光学扫描文本识别,还可以转化为可编辑的文本文件,大大提高了工作效率和便捷性。用户可以根据自己的需要进行使用,而且不需要安装Office软件也可以使用,十分方便。 ### 回答3: Modi OCR是一种光学字符识别技术,可以将纸质文档转换为可编辑格式的电子文档。虽然Windows 10内置了一些OCR功能,但是它们可能不支持中文简繁体的识别,因此我们可以使用Modi OCR来解决这个问题。 Modi OCR是以前Microsoft Office的一部分,现在可以通过独立安装包在Windows 10中安装。虽然我们可以在Windows 10上安装Microsoft Office,但这并不是必须的。通过安装Modi OCR,我们可以使用OCR功能来将纸质文档扫描成电子文档,可以节省时间和努力。 安装过程是相对简单的:首先,下载并运行Modi OCR安装程序,然后按照指示完成安装。安装完成后,我们可以使用Windows Fax and Scan应用程序直接扫描文档。在开始扫描之前,我们需要设置扫描的分辨率和文件格式,以确保获得高质量的图像和文本识别结果。一旦扫描完成,OCR过程会自动开始,我们可以查看识别的文本结果并进行编辑。 总之,Modi OCR是一种非常实用和方便的光学字符识别工具,它可以在Windows 10上轻松使用,无需安装Office套件。如果您需要扫描和识别中文简繁体文本,Modi OCR将是一个非常好的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值