C# 图片识别

时间:2025-03-29 16:35:19

项目需要识别图片上的信息,网上搜索试了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, -));
var list = s.Split(new string[] { "\r\n" }, StringSplitOptions.None);
}
}

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

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

C# 图片识别

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

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

打完补丁后添加引用,

C# 图片识别

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

如何添加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(""), true, true);
for (int i = ; 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 ""://简体中文
return MODI.MiLANGUAGES.miLANG_CHINESE_SIMPLIFIED;
case ""://英语
case ""://繁体中文
return MODI.MiLANGUAGES.miLANG_CHINESE_TRADITIONAL;
default:
return MODI.MiLANGUAGES.miLANG_ENGLISH;
}
}
}

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

运行结果:

C# 图片识别

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