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

運行結果:

 

注:上面兩個方法,圖片清晰度不高得話,識別不了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM