現(xiàn)在圖片文字識別已經(jīng)很成熟了,比如qq長按圖片,點(diǎn)擊圖片識別就可以識別圖片的文字,將不認(rèn)識的、文字?jǐn)?shù)量大的、或者不能賦值的值進(jìn)行二次可復(fù)制功能。
我們現(xiàn)在就基于百度Ai開放平臺進(jìn)行個人文字識別,demo使用的是C#控制臺應(yīng)用程序,后續(xù)有需要的可以嫁接到指定項目中使用,比如提供選擇圖片,點(diǎn)擊識別,
獲取返回的值。廢話不多說,上干貨:
?
總體為:
* 注冊百度賬號api,創(chuàng)建自己的應(yīng)用;
* 創(chuàng)建vs控制臺應(yīng)用程序,引入動態(tài)鏈接庫;
* 編寫代碼調(diào)試,效果圖查看;
* 總結(jié)。
?
1、創(chuàng)建百度AI文字識別應(yīng)用
??在百度AI開放平臺中,登錄自己的百度賬號,點(diǎn)擊“文字識別”服務(wù)中的“通用場景文字識別”,選擇“創(chuàng)建應(yīng)用”
,填好應(yīng)用名稱,選擇應(yīng)用類型,填好應(yīng)用描述,這樣就創(chuàng)建好了“通用場景文字識別”服務(wù)。
具體不廢話,不知道的小伙伴可以移步看這里:C# 10分鐘完成百度人臉識別——入門篇
<https://www.cnblogs.com/xiongze520/p/10387355.html>。
創(chuàng)建完成后會生成APPID、APP Key、Secret Key,這些是關(guān)鍵內(nèi)容,后面要用。
2、創(chuàng)建VS控制臺應(yīng)用程序,引入動態(tài)鏈接庫
首先我們創(chuàng)建一個VS控制臺應(yīng)用程序,這里就不詳細(xì)說明。
然后引入百度Baidu.AI動態(tài)鏈接庫,步驟如下,小編使用2017,所以直接在NuGet中搜索Baidu.AI安裝即可。
安裝文字識別 C# SDK
C# SDK 現(xiàn)已開源! 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目錄結(jié)構(gòu)
Baidu.Aip ├── net35 │?? ├── AipSdk.dll // 百度AI服務(wù) windows 動態(tài)庫 │?? ├──
AipSdk.xml // 注釋文件 │?? └── Newtonsoft.Json.dll // 第三方依賴 ├── net40 ├── net45 └──
netstandard2.0 ├── AipSdk.deps.json └── AipSdk.dll
如果需要在 Unity 平臺使用,可引用工程源碼自行編譯。
安裝
1.在官方網(wǎng)站 <http://ai.baidu.com/sdk>下載C# SDK壓縮工具包。
2.解壓后,將?AipSdk.dll?和?Newtonsoft.Json.dll?中添加為引用。
?
3、編寫代碼調(diào)試,效果圖查看
創(chuàng)建一個空文件夾,命名為Image,存一個張有文字的圖片,做調(diào)試。
在Program.cs中編寫代碼,代碼編寫如下,可以直接拷貝進(jìn)行調(diào)試。
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
"; // 調(diào)用通用文字識別, 圖片參數(shù)為本地圖片,可能會拋出網(wǎng)絡(luò)等異常,請使用try/catch捕獲 //用戶向服務(wù)請求識別某張圖中的所有文字 var
result = client.GeneralBasic(image);//本地圖圖片 //var result =
client.GeneralBasicUrl(url);//網(wǎng)絡(luò)圖片 //var result = client.Accurate(image); //
本地圖片:相對于通用文字識別該產(chǎn)品精度更高,但是識別耗時會稍長。//var result = client.General(image); //
本地圖片:通用文字識別(含位置信息版)//var result = client.GeneralUrl(url); //網(wǎng)絡(luò)圖片:通用文字識別(含位置信息版)
//var result = client.GeneralEnhanced(image); //本地圖片:調(diào)用通用文字識別(含生僻字版) //var
result = client.GeneralEnhancedUrl(url);//網(wǎng)絡(luò)圖片:調(diào)用通用文字識別(含生僻字版) //var result =
client.WebImage(image);//本地圖片:用戶向服務(wù)請求識別一些背景復(fù)雜,特殊字體的文字。 //var result =
client.WebImageUrl(url);//網(wǎng)絡(luò)圖片:用戶向服務(wù)請求識別一些背景復(fù)雜,特殊字體的文字。
Console.WriteLine(result); } } }
下面注釋了的每一行都是一種識別,更多識別請看官網(wǎng):https://ai.baidu.com/docs#/OCR-Csharp-SDK/top
<https://ai.baidu.com/docs#/OCR-Csharp-SDK/top>
調(diào)用兩個,一個精準(zhǔn),一個不精準(zhǔn),先看精準(zhǔn)的:
調(diào)用的是:var result = client.GeneralBasic(image);,最后一個字沒識別出來
?
?我的圖片文字是“做個快樂讀書人”,最后的“人”沒識別出來,我們換一個能后識別復(fù)雜背景的,
調(diào)用的是:var result = client.GeneralEnhanced(image);
?
?
?
4、總結(jié)
? 具體業(yè)務(wù)使用看場景使用不同的接口即可。
這只是一個簡單的識別,針對不能賦值、文字繁多、不認(rèn)識的字都可以做一個簡單的文字識別,更多內(nèi)容需要大家去摸索入坑
拜拜,下次再見咯!
?
熱門工具 換一換