C# 图片识别

发布时间 2023-09-05 10:10:33作者: 白码一号

C# 图片识别信息

最近由于项目需要,需要对传入的图片进行图片识别其中的文字 在网上找了一些资料

介绍两种比较主流和成熟的识别方式:

方式一、Asprise-OCR实现。

方式二、Microsoft Office Document Imaging(Office 2007) 组件实现。

 

Asprise-OCR 官方文档:http://asprise.com/ocr/sdk/docs/html/asprise-ocr-library-csharp-vb.net-component.html

Asprise-OCR此项目不仅包含文字,还可识别其他信息,具体的可以看官方文档

 

1.首先安装nuget asprise_ocr_api包其次在项目中调用,调用方式也很简单

// See https://aka.ms/new-console-template for more information
using asprise_ocr_api;
using System.Reflection.Emit;

Console.WriteLine("Hello, World!");
Main main = new Main();
main.Start();
public class Main
{
    public void Start()
    {
        AspriseOCR.SetUp();
        AspriseOCR ocr = new AspriseOCR();
        ocr.StartEngine("eng", AspriseOCR.SPEED_FASTEST);
        System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
        string s = ocr.Recognize("C:\\Users\\Administrator\\Desktop\\图片识别\\图片验证码01.png", -1, -1, -1, -1, -1, AspriseOCR.RECOGNIZE_TYPE_ALL, AspriseOCR.OUTPUT_FORMAT_PLAINTEXT);
        Console.WriteLine("我是输出字符串:" + s);
        ocr.StopEngine();
    }
}

图片内容为

 其中img_path:为图片路径,startX、startY坐标均为0即可,width、height图片的宽和高。

输出的内容为

对比图片上的内容看,准确率还不能达到百分百了,但准确率依旧很高

 

Microsoft Office Document Imaging(Office 2007) 组件实现

在使用之前需要给大家说的是Imaging 组件的兼容性不是很好,使用win 7 office 2007的时必须打上office 2007 sp1或者sp2补丁,读取中文才行。 

sp1补丁地址(226M) :

http://download.microsoft.com/download/1/6/5/1659d607-8696-4001-8072-efaedd70dd30/office2007sp1-kb936982-fullfile-zh-cn.exe

sp2补丁地址(301 MB):

http://download.microsoft.com/download/A/3/9/A39E919E-AFA8-4128-9249-51629206C70F/office2007sp2-kb953195-fullfile-zh-cn.exe 

 

给项目添加组件引用,如图:

使用代码:

MODI.Document doc = new MODI.Document();

doc.Create(img_Path);

MODI.Image image;

MODI.Layout layout;

doc.OCR(MODI.MiLANGUAGES.miLANG_CHINESE_SIMPLIFIED, true, true);  // 识别简体中文

for (int i = 0; i < doc.Images.Count; i++)

{

    image = (MODI.Image)doc.Images[i];

    layout = image.Layout;

    sb.Append(layout.Text);

}

MessageBox.Show(sb.ToString());

其中img_Path为图片路径,MODI.MiLANGUAGES为读取图片的文字类型枚举。