软件中包含OCR功能模块实现方法

来源:互联网 发布:窥探隐私 知乎 编辑:程序博客网 时间:2024/05/16 18:14

ocr的目的是提取图片中的信息,变为可操作的文本信息。

ocr就是不断地去匹配图片中的区域,与已知的字符图像进行比较,达到一个百分之多少的相似度,则认为这块区域的图片就是这个字符,直到整张图全部匹配过n次,我这么认为的,可能理解的简单了。 

如何自己开发ocr

我找到了两种方法,

一种是大家比较常见的office的 Document Imaging 组件 ;

另一种就是 tw_ocr32.dll这个库;

 

第一种 office的 Document Imaging 组件

MFC实现OCR的识别,采用的是office2003的MODI类型库,平台VC6.0。借鉴了Code project上一篇文章的例子[喝小酒的网摘]http://blog.const.net.cn/a/3453.htm
地址 如下:http://www.codeproject.com/KB/recipes/OCRwithMODI.aspx


用VC6.0打开你在codeproject中下载的那个工程文件,然后在工程中Project->Add to project->Component and controls,打开Registered ActiveX Controls找到Microsoft Office Document Imaging Viewer Control 11.0,双击添加,会自动添加相关.h和.cpp文件,其中包括mdivwctl.h和mdivwctl.cpp,最后使用 bReadOCRByMODIAxctrl函数。
如果你是识别简体中文就将OCR函数的第一个参数设置为 miLANG_CHINESE_SIMPLIFIED,如果为英文就设置为miLANG_ENGLISH。这样在做OCR识别就正常了。

    int miLANG_CHINESE_SIMPLIFIED = 2052;
    IDocument *pDoc = new IDocument;
    pDoc->CreateDispatch( _T("MODI.Document") );
    pDoc->Create(GetAppPath() + _T("out.bmp"));
    pDoc->OCR( miLANG_CHINESE_SIMPLIFIED, 0, 0 );
    IImages images = pDoc->GetImages();
    long      num =images.GetCount();
    for( int i = 0; i < num; i++ )
    {
        IImage  image = images.GetItem(i);
        ILayout layout = image.GetLayout();
        strTemp.Append( layout.GetText());
     }
     pDoc->Close(0);
     pDoc->ReleaseDispatch();
     delete pDoc;

 

 

第二种 tw_ocr32.dll

清华同方的ocr库,非常的强大,中国达人的神作

首先需要找到tw_ocr32.dll,tw_ocr32.lib,tw_ocr32.h,这就需要自己去网上找下载了

找到后,就简单多了

把库和.h文件包含进去之后,一次调用

TW_Start函数  初始化

TW_RecogFile函数  识别

TW_End函数  结束

0 0
原创粉丝点击