• C# 图片识别(支持21种语言) (转)


    图片识别的技术到几天已经很成熟了,只是相关的资料很少,为了方便在此汇总一下(C#实现),方便需要的朋友查阅,也给自己做个记号。

     

    图片识别的用途:很多人用它去破解网站的验证码,用于达到自动刷票或者是批量注册的目的,但我觉得它最吸引我的地方是可以让一些书写的东西,自动识别成电脑上的文字,比如说手拟的合同,修改过的书面论文或者是文档,每月的花费发票需要在电脑上录入或者是汇总信息,日记本上的文章要转移到电脑上等等,我们现在就不用再头痛把它们在电脑上敲写一遍了。

    本文介绍两种比较主流和成熟的识别方式:

    方式一、Asprise-OCR实现。

    方式二、Microsoft Office Document Imaging(Office 2007) 组件实现。

     

    方式一、Asprise-OCR的使用。

    Asprise-OCR下载地址:

    http://asprise.com/product/ocr/download.php?lang=csharp 

    其中需要使用的3个dll是AspriseOCR.dll、DevIL.dll、ILU.dll。

    需要注意的是这几个.dll是vc写的引用要在程序中用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);

     

    调用代码很简单只有一句:

    MessageBox.Show(Marshal.PtrToStringAnsi(OCRpart(img_path, -1, startX, startY, width, height)));

    其中img_path:为图片路径,startX、startY坐标均为0即可,width、height图片的宽和高。

     

    方式二、Microsoft Office Document Imaging(Office 2007) 组件实现。

    在使用之前需要给大家说的是Imaging 组件的兼容性不是很好,使用win 7 office 2007的时必须打上office 2007 sp1或者sp2补丁,读取中文才行。 

    sp1补丁地址(226M) :

    http://download.microsoft.com/download/1/6/5/1659d607-8696-4001-8072-efaedd70dd30/office2007sp1-kb936982-fullfile-zh-cn.exe

    sp2补丁地址(301 MB):

    http://download.microsoft.com/download/A/3/9/A39E919E-AFA8-4128-9249-51629206C70F/office2007sp2-kb953195-fullfile-zh-cn.exe 

     

    给项目添加组件引用,如图:

    使用代码:

    MODI.Document doc = new MODI.Document();

    doc.Create(img_Path);

    MODI.Image image;

    MODI.Layout layout;

    doc.OCR(MODI.MiLANGUAGES.miLANG_CHINESE_SIMPLIFIED, true, true);  // 识别简体中文

    for (int i = 0; i < doc.Images.Count; i++)

    {

        image = (MODI.Image)doc.Images[i];

        layout = image.Layout;

        sb.Append(layout.Text);

    }

    MessageBox.Show(sb.ToString());

    其中img_Path为图片路径,MODI.MiLANGUAGES为读取图片的文字类型枚举。

     

    本文源码下载地址:http://files.cnblogs.com/stone_w/OCR.rar 

     

    汉王 PDF OCR V8.1简体中文版下载地址(已经使用了,感觉不错推荐一下):http://xiazai.zol.com.cn/detail/34/335364.shtml 

     

  • 相关阅读:
    [HNOI2004]宠物收养所 题解
    文艺平衡树(区间翻转)(Splay模板)
    搜索专题 题解
    Gorgeous Sequence 题解 (小清新线段树)
    花神游历各国 题解(小清新线段树/树状数组+并查集)
    [HNOI2012]永无乡 题解
    poj 3683 2-sat问题,输出任意一组可行解
    hdu 1824 2-sat问题(判断)
    hdu 4115 石头剪子布(2-sat问题)
    hdu 4421 和poj3678类似二级制操作(2-sat问题)
  • 原文地址:https://www.cnblogs.com/rainbowzc/p/3725574.html
Copyright © 2020-2023  润新知