zoukankan      html  css  js  c++  java
  • 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[] { "
    " }, 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

    运行结果:

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

  • 相关阅读:
    Java实现第九届蓝桥杯付账问题
    Java实现第九届蓝桥杯付账问题
    Java实现第九届蓝桥杯星期一
    Java实现第九届蓝桥杯星期一
    Java实现第九届蓝桥杯倍数问题
    Java实现第九届蓝桥杯倍数问题
    Java实现第九届蓝桥杯倍数问题
    Java实现第九届蓝桥杯倍数问题
    Java实现第九届蓝桥杯倍数问题
    Java实现第九届蓝桥杯三体攻击
  • 原文地址:https://www.cnblogs.com/qk2014/p/9203068.html
Copyright © 2011-2022 走看看