当前位置: 移动技术网 > IT编程>开发语言>c# > C# 10分钟完成百度图片提取文字(文字识别)——入门篇

C# 10分钟完成百度图片提取文字(文字识别)——入门篇

2019年08月01日  | 移动技术网IT编程  | 我要评论

  现在图片文字识别已经很成熟了,比如qq长按图片,点击图片识别就可以识别图片的文字,将不认识的、文字数量大的、或者不能赋值的值进行二次可复制功能。

我们现在就基于百度ai开放平台进行个人文字识别,demo使用的是c#控制台应用程序,后续有需要的可以嫁接到指定项目中使用,比如提供选择图片,点击识别,

获取返回的值。废话不多说,上干货:


 

总体为:

  1. 注册百度账号api,创建自己的应用;
  2. 创建vs控制台应用程序,引入动态链接库;
  3. 编写代码调试,效果图查看;
  4. 总结。

 

1、创建百度ai文字识别应用

  在百度ai开放平台中,登录自己的百度账号,点击“文字识别”服务中的“通用场景文字识别”,选择“创建应用”,填好应用名称,选择应用类型,填好应用描述,这样就创建好了“通用场景文字识别”服务。

具体不废话,不知道的小伙伴可以移步看这里:c# 10分钟完成百度人脸识别——入门篇

创建完成后会生成appid、app key、secret key,这些是关键内容,后面要用。

2、创建vs控制台应用程序,引入动态链接库

首先我们创建一个vs控制台应用程序,这里就不详细说明。

然后引入百度baidu.ai动态链接库,步骤如下,小编使用2017,所以直接在nuget中搜索baidu.ai安装即可。

安装文字识别 c# sdk

c# sdk 现已开源! https://github.com/baidu-aip/dotnet-sdk

** 支持平台:.net framework 3.5 4.0 4.5, .net core 2.0 **

方法一:使用nuget管理依赖 (推荐)

在nuget中搜索 baidu.ai,安装最新版即可。

packet地址 https://www.nuget.org/packages/baidu.ai/

方法二:下载安装

文字识别 c# sdk目录结构

baidu.aip
    ├── net35
    │   ├── aipsdk.dll             // 百度ai服务 windows 动态库
    │   ├── aipsdk.xml             // 注释文件
    │   └── newtonsoft.json.dll    // 第三方依赖
    ├── net40
    ├── net45
    └── netstandard2.0
        ├── aipsdk.deps.json
        └── aipsdk.dll

如果需要在 unity 平台使用,可引用工程源码自行编译。

安装

1.在下载c# sdk压缩工具包。

2.解压后,将 aipsdk.dll 和 newtonsoft.json.dll 中添加为引用。


 

3、编写代码调试,效果图查看

  创建一个空文件夹,命名为image,存一个张有文字的图片,做调试。

在program.cs中编写代码,代码编写如下,可以直接拷贝进行调试。

using system;
using system.collections.generic;
using system.io;
using system.linq;
using system.net;
using system.text;
using system.threading.tasks;

namespace recognition
{
   public class program
    {
       static void main(string[] args)
        {
            //ak/sk
            var api_key = "fgpi0qpcbzxzxban6dvqt87x";
            var secret_key = "hunnq6xsljf3a7acauirvavqo7ckbuww";

            var client = new baidu.aip.ocr.ocr(api_key, secret_key);
            client.timeout = 60000;  // 修改超时时间


            var image = file.readallbytes("e:\\work demo\\图片提取文字\\recognition\\recognition\\image\\img.jpg");
            var url = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1564654456007&di=7832dd6f515e654bdf5074e47b6803b1&imgtype=0&src=http%3a%2f%2fpic.962.net%2fup%2f2018-5%2f2018527102938219310.jpg";
            
            // 调用通用文字识别, 图片参数为本地图片,可能会抛出网络等异常,请使用try/catch捕获
            //用户向服务请求识别某张图中的所有文字
            var result = client.generalbasic(image);        //本地图图片
            //var result = client.generalbasicurl(url);     //网络图片
            //var result = client.accurate(image);          //本地图片:相对于通用文字识别该产品精度更高,但是识别耗时会稍长。

            //var result = client.general(image);           //本地图片:通用文字识别(含位置信息版)
            //var result = client.generalurl(url);          //网络图片:通用文字识别(含位置信息版)

            //var result = client.generalenhanced(image);   //本地图片:调用通用文字识别(含生僻字版)
            //var result = client.generalenhancedurl(url);  //网络图片:调用通用文字识别(含生僻字版)

            //var result = client.webimage(image);          //本地图片:用户向服务请求识别一些背景复杂,特殊字体的文字。
            //var result = client.webimageurl(url);         //网络图片:用户向服务请求识别一些背景复杂,特殊字体的文字。

            console.writeline(result);
        }
    }
}

下面注释了的每一行都是一种识别,更多识别请看官网:https://ai.baidu.com/docs#/ocr-csharp-sdk/top

调用两个,一个精准,一个不精准,先看精准的:

调用的是:var result = client.generalbasic(image);,最后一个字没识别出来

 

 我的图片文字是“做个快乐读书人”,最后的“人”没识别出来,我们换一个能后识别复杂背景的,

调用的是:var result = client.generalenhanced(image);

 

 


 

4、总结

   具体业务使用看场景使用不同的接口即可。

这只是一个简单的识别,针对不能赋值、文字繁多、不认识的字都可以做一个简单的文字识别,更多内容需要大家去摸索入坑

拜拜,下次再见咯!

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网