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

    运行结果:

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

  • 相关阅读:
    C. Karen and Game
    BZOJ2134: 单选错位
    BZOJ3562: [SHOI2014]神奇化合物
    BZOJ1084: [SCOI2005]最大子矩阵
    BZOJ5039: [Jsoi2014]序列维护
    BZOJ1798: [Ahoi2009]Seq 维护序列seq
    BZOJ3932: [CQOI2015]任务查询系统
    BZOJ3339: Rmq Problem
    BZOJ3585: mex
    BZOJ4196: [Noi2015]软件包管理器
  • 原文地址:https://www.cnblogs.com/qk2014/p/9203068.html
Copyright © 2011-2022 走看看