如今圖片文字識別已經很成熟了,好比qq長按圖片,點擊圖片識別就能夠識別圖片的文字,將不認識的、文字數量大的、或者不能賦值的值進行二次可複製功能。html
咱們如今就基於百度Ai開放平臺進行我的文字識別,demo使用的是C#控制檯應用程序,後續有須要的能夠嫁接到指定項目中使用,好比提供選擇圖片,點擊識別,git
獲取返回的值。廢話很少說,上乾貨:github
整體爲:json
在百度AI開放平臺中,登陸本身的百度帳號,點擊「文字識別」服務中的「通用場景文字識別」,選擇「建立應用」,填好應用名稱,選擇應用類型,填好應用描述,這樣就建立好了「通用場景文字識別」服務。windows
具體不廢話,不知道的小夥伴能夠移步看這裏:C# 10分鐘完成百度人臉識別——入門篇。api
建立完成後會生成APPID、APP Key、Secret Key,這些是關鍵內容,後面要用。網絡
首先咱們建立一個VS控制檯應用程序,這裏就不詳細說明。工具
而後引入百度Baidu.AI動態連接庫,步驟以下,小編使用2017,因此直接在NuGet中搜索Baidu.AI安裝便可。字體
C# SDK 現已開源! https://github.com/Baidu-AIP/dotnet-sdk網站
** 支持平臺:.Net Framework 3.5 4.0 4.5, .Net Core 2.0 **
在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