需求:
最近要用c#写一个识别pdf扫描版里面表格,发现百度OCR识别表格还可以,下面介绍主要程序。(pdf扫描版我用python写的程序先改成png图片格式完整代码)
实现(代码我都自己运行了一遍,没有问题,有问题欢迎留言交流):
①新建一个项目,因为我们这里是跑程序,就直接新建控制台(后期写成Addin做成word插件再改),然后下一步。
②添加两个引用:安装
1.在官方网站下载C# SDK压缩工具包。官网:https://ai.baidu.com/sdk
2.解压后,将 AipSdk.dll 和 Newtonsoft.Json.dll 中添加为引用。
三、主要代码:下面是介绍百度OCR识别表格怎么调用的,以及c#怎么提取json数据
/*
#作者:小白jiang
#联系:bk_jiang@163.com
#csdn:https://blog.csdn.net/weixin_37413070
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Baidu.Aip.Ocr;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
namespace ConsoleApp1
{
class Program //建一个类,外面的空间用原来的就行
{
static void Main(string[] args)
{
string apiKey = "*******************";//根据自己申请的key
string secretKey = "***********************";//根据自己申请的key
Ocr client = new Ocr(apiKey, secretKey)
{
Timeout = 30000//延时时间
};
var tuPian = "D:\\JBK\\task\\sh\\vsto_test3\\32.png";//需要识别的图片路径
byte[] image = File.ReadAllBytes(tuPian);//JObject result = client.GeneralBasic(image);//json数据,具体格式可以看官方API说明,这是识别文字
//1、************下面这个识别png图片中表格成excel
//var result = client.TableRecognitionToExcel(image, 30000); // 识别为excel文件
//string url = result["result"]["result_data"].ToString();//获取树形result的json字符串
//这是url就是excel文件的地址http://bj.bcebos.com/v1/ai-edgecloud/FB852F5C998A41F9AA9BFE966BD4D663.xls?authorization=bce-auth-v1%2Ff86a2044998643b5abc89b59158bad6d%2F2020-01-13T04%3A45%3A32Z%2F172800%2F%2F5f7ee677f2c66c3a6fe1649e4861e56e0009dd857d18b39b542a107cf9d50d5b
//2、************下面这个识别png图片中表格获得返回结果json,然后提取一下json里面的"request_id",这个可以参考官方文档:https://cloud.baidu.com/doc/OCR/s/8jwvxznsf#%E8%A1%A8%E6%A0%BC%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB
Newtonsoft.Json.Linq.JObject result = client.TableRecognitionRequest(image); //这是识别表格文字
// resulte为{"result": [{"request_id": "18159544_1341054"}],"log_id": 1578881598722677}
string userList = result["result"].ToString();//获取树形result的json字符串
JArray jar = (JArray)JsonConvert.DeserializeObject(userList); //解析result的json信息
JObject j = JObject.Parse(jar[0].ToString());
string userid = j["request_id"].ToString(); // request_id = 18159544_1341184
Console.WriteLine(userid);
Console.ReadKey();
//**********下面这个是根据上面的获得的requestId = "18159544_1341212"获得结果
//var requestId = "18159544_1341212";
//var result1 = client.TableRecognitionGetResult(requestId);
//Console.WriteLine(result1);
//Console.WriteLine(result);
}
}
}