翼度科技»论坛 编程开发 .net 查看内容

基于百度智能云的OCR接口进行图文识别

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
由于一些客户的内部系统需要提取一些记录信息,如果手工录入会变得比较麻烦,因此考虑使用百度云的OCR进行图片文字的提取处理,综合比较了一下开源免费的Tesseract 类库进行处理,不过识别效果不太理想,因此转为了百度的OCR云接口处理方式,测试的效果比较理想,基本上较少出现错别字。本篇随笔介绍如何利用百度OCR进行图片文字的提取处理,以便从别的系统中批量化获得响应的系统数据,然后进行相应的格式化处理。
1、百度OCR服务申请

百度的OCR接口调用是收费的接口,不过一般是在超过一定量的情况后进行收费,我们可以申请获得每月免费的额度。
百度智能云地址:https://login.bce.baidu.com/
首先我们去到百度智能云里,在左边菜单栏的产品服务中搜索"文字识别",点击【领取免费资源】,将所有的免费资源领取,领取之后要半个小时之后才能生效。

回到主面板,我们要进行创建应用,填写相关的信息即可创建成功,应用创建好之后会生成AppID、API Key和Secret Key,使用百度AI的SDK,使用API Key和Secret Key参数接口调用处理!

 
 
2、项目测试/接口调用

创建一个Winform的测试项目及性能接口的调用测试,在Nuget上添加对应的Baidu.AI的SDK包,以及Json.NET的类库,如下所示。

 
设计一个界面,对图片文件的内容进行识别处理。 

 
具体测试的代码如下所示。
  1.         private void btnLoadImage_Click(object sender, EventArgs e)
  2.         {
  3.             var imageFile = FileDialogHelper.OpenImage(false, "");
  4.             if(imageFile != null)
  5.             {
  6.                 var str = BaiduOcr(imageFile);
  7.                 //var str = TesseractOcr(imageFile);
  8.                 this.txtResuilt.Text = str;
  9.             }
  10.         }
  11.         private static string BaiduOcr(string imageFile)
  12.         {
  13.             var APIKey = "**********";
  14.             var SecretKey = "********";
  15.             var ocr = new Baidu.Aip.Ocr.Ocr(APIKey, SecretKey);
  16.             var currentImage = FileUtil.FileToBytes(imageFile);
  17.             var result = ocr.Accurate(currentImage);
  18.             string str = string.Empty;
  19.             var txts = (from obj in (JArray)result.Root["words_result"]
  20.                         select (string)obj["words"]).ToList();
  21.             string startString = "手术助手";
  22.             int startIndex = 0;
  23.             for (int i = 0; i < txts.Count(); i++)
  24.             {
  25.                 if (txts[i] == startString)
  26.                 {
  27.                     startIndex = i; //记录二维表的开始位置
  28.                 }
  29.             }
  30.             var newList = txts.Skip(startIndex + 1).ToList();
  31.             str = string.Join("\r\n", newList);
  32.             return str;
  33.         }
复制代码
如系统界面的图片如下所示。

 
使用百度OCR接口进行测试,可以看到具体的测试结果即可,然后根据结果进行格式化的转换就可以输出对应Excel格式或者其他格式了

 
能够获取列表的记录,进行相应的处理即可,这样可以减少数据提取或者录入的时间,通过OCR的自动化处理,可以极大的提高数据的处理效率。
 

来源:https://www.cnblogs.com/wuhuacong/archive/2023/01/30/17075924.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具