C# 10分鍾完成百度圖片提取文字(文字識別)——入門篇


  現在圖片文字識別已經很成熟了,比如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、總結

   具體業務使用看場景使用不同的接口即可。

這只是一個簡單的識別,針對不能賦值、文字繁多、不認識的字都可以做一個簡單的文字識別,更多內容需要大家去摸索入坑

拜拜,下次再見咯!

 

歡迎關注訂閱我的微信公眾平台【熊澤有話說】,更多好玩易學知識等你來取
作者:熊澤-學習中的苦與樂
公眾號:熊澤有話說
出處:https://www.cnblogs.com/xiongze520/p/11283484.html
創作不易,任何人或團體、機構全部轉載或者部分轉載、摘錄,請在文章明顯位置注明作者和原文鏈接。  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM