C# 图片识别

项目需要识别图片上的信息,网上搜索试了Asprise-OCR、Microsoft Office Document Imaging(Office 2007) 组件实现两种方式,后者可以识别中文等其他语言

一、Asprise-OCR实现:

需要引用破解版AspriseOCR.dll

代码如下:

class Program
    {
        [DllImport("AspriseOCR.dll", EntryPoint = "OCR", CallingConvention = CallingConvention.Cdecl)]
        public static extern IntPtr OCR(string file, int type);
        
        static void Main(string[] args)
        {
            var imgpath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"1111.jpg");

            //AspriseOCR方法
            var s = Marshal.PtrToStringAnsi(OCR(imgpath, -1));
            var list = s.Split(new string[] { "\r\n" }, StringSplitOptions.None);
        }
    }

运行结果如下,对数字识别还是可以的。

注意,项目的目标平台要设置X86

 

二、Microsoft Office Document Imaging(Office 2007) 组件实现:

 使用win 7 office 2007的时必须打上office 2007 sp1或者sp2补丁,读取中文才行(补丁地址自行百度搜索)。

打完补丁后添加引用,

需要在控制面板里添加安装才可以:

如何添加Microsoft Office Document Imaging

class Program
    {        
        static void Main(string[] args)
        {
            var imgpath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"333333.png");            

            //MODI方法(Microsoft Office Document Imaging(Office 2007) 组件实现)
            StringBuilder sb = new StringBuilder();
            MODI.Document doc = new MODI.Document();
            doc.Create(imgpath);
            MODI.Image image;
            MODI.Layout layout;
            doc.OCR(SwitchLanuageType("2052"), true, true);
            for (int i = 0; i < doc.Images.Count; i++)
            {
                image = (MODI.Image)doc.Images[i];
                layout = image.Layout;
                sb.Append(layout.Text);
            }
            var ss = sb.ToString();
        }
        
        
        private static MODI.MiLANGUAGES SwitchLanuageType(string sValue)
        {
            switch (sValue)
            {
                case "2052"://简体中文
                    return MODI.MiLANGUAGES.miLANG_CHINESE_SIMPLIFIED;
                case "9"://英语
                case "1028"://繁体中文
                    return MODI.MiLANGUAGES.miLANG_CHINESE_TRADITIONAL;
                default:
                    return MODI.MiLANGUAGES.miLANG_ENGLISH;
            }
        }
    }

 注意,项目的目标平台要设置X86

运行结果:

 

注:上面两个方法,图片清晰度不高得话,识别不了。

posted @ 2018-06-20 11:49  一夜秋2014  Views(9203)  Comments(0Edit  收藏  举报