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

    运行结果:

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

  • 相关阅读:
    Spark的协同过滤.Vs.Hadoop MR
    IAAS: IT公司去IOE-Alibaba系统构架解读
    八种Docker容器开发模式解析
    Docker的特性解析
    Docker的官网在线--中文教程
    三维重建:深度相机方案对比-KinectFusion的基本原理(尺度)
    ES: 机器学习、专家系统、控制系统的数学映射
    算法设计之—常用算法之-分支界定法
    图像特征综述
    CaptCha的现状与未来
  • 原文地址:https://www.cnblogs.com/qk2014/p/9203068.html
Copyright © 2011-2022 走看看