C#基于Baidu.AI进行表格图片文字识别

您所在的位置:网站首页 生活用品表格图片 C#基于Baidu.AI进行表格图片文字识别

C#基于Baidu.AI进行表格图片文字识别

2024-07-12 04:22| 来源: 网络整理| 查看: 265

C#基于Baidu.AI进行表格图片文字识别 前言

在生活中我们常常会有把表格图片中的文字提取出来的需求,本文以一个具体的例子讲述C#是如何基于Baidu.AI进行表格图片文字识别的。

需求

需要识别的图片格式如下图所示: 在这里插入图片描述

Baidu.AI的使用

Baidu.AI的使用需要首先注册一个百度智能云账号,官网如下图所示: 在这里插入图片描述注册完成之后,点击登录,进行用户中心,找到文字识别服务所在的位置,如下图所示: 在这里插入图片描述开通表格文字识别接口,每天可以免费调用接口200次,如下图所示: 在这里插入图片描述创建应用获取密钥,如下图所示: 在这里插入图片描述 在这里插入图片描述 点击立即创建,在应用列表就会看到刚刚创建的应用,如下图所示: 在这里插入图片描述 根据API Key与Secret Key获取Token,该Token每30天就要重新获取一次,可以自己发请求获得,也可以在官网上选择API在线调试获取Token,如下图所示: 在这里插入图片描述 填入对应的Key,如下图所示: 在这里插入图片描述 点击开始调试,查看调试结果中的响应数据的Body,“access_token”中的内容就是我们想要获得的Token了,如下图所示: 在这里插入图片描述 在项目中引用Bai.Ai的库 在这里插入图片描述 使用表格图片识别接口的代码如下所示:

string token = "你的token"; string host = "https://aip.baidubce.com/rest/2.0/ocr/v1/form?access_token=" + token; Encoding encoding = Encoding.Default; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host); request.Method = "post"; request.KeepAlive = true; // 图片的base64编码 string base64 = getFileBase64(fileName); String str = "image=" + HttpUtility.UrlEncode(base64); byte[] buffer = encoding.GetBytes(str); request.ContentLength = buffer.Length; request.GetRequestStream().Write(buffer, 0, buffer.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default); string result = reader.ReadToEnd(); return result;

图片需要转化为base64编码,将图片转化为base64编码的函数,如下图所示:

//返回图片的base64编码 public static String getFileBase64(String fileName) { FileStream filestream = new FileStream(fileName, FileMode.Open); byte[] arr = new byte[filestream.Length]; filestream.Read(arr, 0, (int)filestream.Length); string baser64 = Convert.ToBase64String(arr); filestream.Close(); return baser64; }

成功调用该接口,查看返回的数据,返回的数据,如下图所示: 在这里插入图片描述 将该json字符串,放到解析json字符串的网站上进行解析,方便理清它的结构,json字符串的最外层结构,如下图所示: 在这里插入图片描述 我们需要的数据存放在“forms_result”中,而“forms_result”中有包含有4个数据,分别为主体,底部,头部和顶点位置数据。 “body”数据再打开,结构如下图所示: 在这里插入图片描述 “footer”数据再打开,结构如下图所示: 在这里插入图片描述 “header”数据再打开,结构如下图所示: 在这里插入图片描述 以上就包含了我们想要提取出来的所有数据。

json字符串解析

使用Baidu.AI接口已经成功返回了数据,现在需要做json字符串解析,获得我们需要的数据。在这里进行json字符串解析,使用的是Newtonsoft.Json这个库。Newtonsoft.Json(又称为 JSON.NET)是一个流行的、高性能的JSON(JavaScript Object Notation)序列化和反序列化库,用于在 .NET 平台上处理JSON数据。它由James Newton-King 开发并维护,已经成为许多 .NET 开发人员在处理 JSON 数据时的首选库之一。 引入Newtonsoft.Json这个库 在这里插入图片描述

处理json字符串

JObject o = JObject.Parse(result); string name = (string)o.SelectToken("forms_result[0].header[0].words"); if (name != null && name.Contains("水位信息")) { List DataList = new List(); JArray formsResult = (JArray)o["forms_result"]; if (formsResult != null && formsResult.Count > 0) { JObject formObject = (JObject)formsResult[0]; JArray bodyArray = (JArray)formObject["body"]; for (int i = 3; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3