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

  如今圖片文字識別已經很成熟了,好比qq長按圖片,點擊圖片識別就能夠識別圖片的文字,將不認識的、文字數量大的、或者不能賦值的值進行二次可複製功能。html

咱們如今就基於百度Ai開放平臺進行我的文字識別,demo使用的是C#控制檯應用程序,後續有須要的能夠嫁接到指定項目中使用,好比提供選擇圖片,點擊識別,git

獲取返回的值。廢話很少說,上乾貨:github


 

整體爲:json

  1. 註冊百度帳號api,建立本身的應用;
  2. 建立vs控制檯應用程序,引入動態連接庫;
  3. 編寫代碼調試,效果圖查看;
  4. 總結。

 

一、建立百度AI文字識別應用

  在百度AI開放平臺中,登陸本身的百度帳號,點擊「文字識別」服務中的「通用場景文字識別」,選擇「建立應用」,填好應用名稱,選擇應用類型,填好應用描述,這樣就建立好了「通用場景文字識別」服務。windows

具體不廢話,不知道的小夥伴能夠移步看這裏:C# 10分鐘完成百度人臉識別——入門篇api

建立完成後會生成APPID、APP Key、Secret Key,這些是關鍵內容,後面要用。網絡

二、建立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 中添加爲引用。


 

三、編寫代碼調試,效果圖查看

  建立一個空文件夾,命名爲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);

 

 


 

四、總結

   具體業務使用看場景使用不一樣的接口便可。

這只是一個簡單的識別,針對不能賦值、文字繁多、不認識的字均可以作一個簡單的文字識別,更多內容須要你們去摸索入坑

拜拜,下次再見咯!

 

原文出處:https://www.cnblogs.com/xiongze520/p/11283484.html

相關文章
相關標籤/搜索