OCR識別
# Smart之OCR識別
# 1. 說明
範例通過WebAPI的方式,進行圖片的識別並回傳識別結果的資訊。範例接入的是百度OCR的API,目前該範例支援通用文字識別,車牌識別以及車型識別。在使用該功能前需要獲取百度智能云OCR識別 (opens new window)API Key與Secret Key。
OCR(Optical Character Recognition,光學字符識別)是指電子設備(例如掃描器或數碼相機)檢查紙上列印的字元,通過檢測暗、亮的模式確定其形狀,然後用字元識別方法將形狀翻譯成計算機文字的過程;即,針對印刷體字元,採用光學的方式將紙質文件中的文字轉換成為黑白點陣的影象檔案,並通過識別軟體將影象中的文字轉換成文字格式,供文書處理軟體進一步編輯加工的技術。通過OCR技術,我們可以快速獲取圖片中的資訊,從而提高效率。
通過範例學習,可以掌握攝像機獲取圖片的方式,並使BaiduAPI獲取圖片進行OCR識別的功能。
# 2. 設計明細
開啟Smart智慧控制平臺,分別加入下插圖之控制元件。或者通過點選功能表欄[檔案]
-[打開專案]
選擇範例專案檔案來打開該範例。
①:TBaiduAPI元件,控制元件名稱為BaiduAPI1
。
②:TVideoServer元件,控制元件名稱為VideoServer1
。
③:TImage元件,控制元件名稱為Image1
。
④:TLabel元件,控制元件名稱為Label1
。
⑤:TBitBtn元件,控制元件名稱為BitBtnLicensePlate
。
⑥:TBitBtn元件,控制元件名稱為BitBtnCarInfo
。
⑦:TSwitchButton元件,控制元件名稱為SwitchButton1
。
⑧:TBitBtn元件,控制元件名稱為BitBtnGeneral
。
⑨:TMemo元件,控制元件名稱為Memo1
。
Main窗體屬性設定
BorderStyle
:設定邊界樣式=bsDialog
。Caption
:設定窗體顯示的標題=OCR識別
。ClientHeight
:設定客戶區窗體的高度=438
。ClientWidth
:設定窗體客戶區的寬度=465
。
①BaiduAPI1屬性設定
APIKey
:對應為申請百度智能云OCR識別 (opens new window)獲取到的API Key。Secret
:對應為申請百度智能云OCR識別 (opens new window)獲取到的Secret Key。
②VideoServer1屬性設定
Height
:設定控制元件高度=312
。Width
:設定控制元件寬度=466
。
③Image1屬性設定
Align
:設定控制元件對齊方式=alClient
。Stretch
:設定圖片拉伸適應于控制元件。Picture
:設定圖片。點選Picture
屬性右側的[...]
按鈕,打開檔案上傳界面,點選[Load...]
從檔案瀏覽器中選擇對應的圖片檔案上傳,返回該界面下,待顯示出圖片後點擊[OK]
載入圖片。
④Label1屬性設定
Caption
:設定標籤內容=窗體相互傳值 主界面
。Font
:設定字型,雙擊該屬性或者點選屬性右側的[...]
以打開字型設定界面。
⑤BitBtnLicensePlate屬性設定
Height
:設定控制元件高度=73
。Width
:設定控制元件寬度=75
。Layout
:設定佈局=blGlyphTop
。Caption
:設定顯示的文字=車牌識別
。Glyph
:設定圖片,雙擊該屬性或者點選屬性右側的[...]
打開檔案上傳界面,點選[Load...]
從檔案瀏覽器中選擇對應的圖片檔案上傳,返回該界面下,待顯示出圖片後點擊[OK]
載入圖片。
⑥BitBtnCarInfo屬性設定
Height
:設定控制元件高度=73
。Width
:設定控制元件寬度=75
。Layout
:設定佈局=blGlyphTop
。Caption
:設定顯示的文字=車型識別
。Glyph
:設定圖片,雙擊該屬性或者點選屬性右側的[...]
打開檔案上傳界面,點選[Load...]
從檔案瀏覽器中選擇對應的圖片檔案上傳,返回該界面下,待顯示出圖片後點擊[OK]
載入圖片。
⑦SwitchButton1屬性設定
Height
:設定控制元件高度=50
。Width
:設定控制元件寬度=50
。Stretch
:設定圖片拉伸=True
。SwitchOff
:設定處於關閉狀態時顯示的圖片。點選屬性右側的[...]
按鈕,打開檔案上傳界面,點選[Load...]
從檔案瀏覽器中選擇對應的圖片檔案上傳,返回該界面下,待顯示出圖片後點擊[OK]
載入圖片。
SwitchOn
:設定處於開啟狀態時顯示的圖片。點選屬性右側的[...]
按鈕,打開檔案上傳界面,點選[Load...]
從檔案瀏覽器中選擇對應的圖片檔案上傳,返回該界面下,待顯示出圖片後點擊[OK]
載入圖片。
⑧BitBtnGeneral屬性設定
Height
:設定控制元件高度=73
。Width
:設定控制元件寬度=75
。Layout
:設定佈局=blGlyphTop
。Caption
:設定顯示的文字=文字識別
。Glyph
:設定圖片,雙擊該屬性或者點選屬性右側的[...]
打開檔案上傳界面,點選[Load...]
從檔案瀏覽器中選擇對應的圖片檔案上傳,返回該界面下,待顯示出圖片後點擊[OK]
載入圖片。
⑨Memo1屬性設定
Height
:設定高度=117
。Width
:設定控制元件寬度=209
。
# 3. 程式設計
# 3.1. 程式初始化設定
該程式無初始化設定。
# 3.2. 事件設定
- ⑦SwitchButton1-OnSwitch事件
點選以切換相機的開啟關閉。
procedure TMyHandler.SwitchButton1Switch;
//開啟、關閉相機視訊
begin
if FThis.SwitchButton1.IsChecked then
FThis.VideoServer.StartDevice
else
FThis.VideoServer.StopDevice;
end;
2
3
4
5
6
7
8
- ⑤BitBtnLicensePlate-OnClick事件
點選以開始進行車牌識別。
procedure TMyHandler.BitBtnLicensePlateClick;
//識別車牌
var
Path: String;
begin
Path := FThis.VideoServer.TakePicture;
FThis.BaiduAPI1.doFileToLicensePlate(Path);
end;
2
3
4
5
6
7
8
- ①BaiduAPI1-OnlicensePlate事件
當執行車牌識別時觸發該事件,用於返回車牌識別的結果。
procedure TMyHandler.BaiDuAPI1licensePlate;
//返回車牌識別結果
begin
FThis.Memo1.Lines.Add('車牌顏色:' + Color + ' 車牌號:' + Number);
end;
2
3
4
5
- ⑥BitBtnCarInfo-OnClick事件
當點選該按鈕時,執行車型資訊識別。
procedure TMyHandler.BitBtnCarInfoClick;
//車型識別
var
Path: String;
begin
Path := FThis.VideoServer.TakePicture;
FThis.BaiduAPI1.doFileToCarInfo(Path);
end;
2
3
4
5
6
7
8
- ①BaiduAPI1-OnCarInfo事件
當執行車輛資訊識別時觸發該事件,用於返回車型識別的結果。
procedure TMyHandler.BaiDuAPI1CarInfo;
//車型識別結果
begin
ShowMessage(Info);
end;
2
3
4
5
- ⑧BitBtnGeneral-OnClick事件設定
當點選時觸發該事件,進行通用文字識別。
procedure TMyHandler.BitBtnGeneralClick;
//通用文字識別
var
Path: String;
begin
Path := FThis.VideoServer.TakePicture;
FThis.BaiduAPI1.doFileToGeneralBasic(Path);
end;
2
3
4
5
6
7
8
- ①BaiduAPI1-OnGeneral事件設定
當進行通用文字識別時觸發該事件,返回通用識別的結果。
procedure TMyHandler.BaiDuAPI1GeneralBasic;
//通用文字識別結果
begin
ShowMessage(Info);
end;
2
3
4
5
# 4. 運行結果
通過工具欄儲存,將程式儲存為 sdb 專案檔案。
使用滑鼠點選工具欄運行(Run),測試運行結果。選擇設別使用的相機以及解析度,打開相機開關,將帶有車牌號資訊的圖片或者含有文字的圖片放置在相機前,點選車牌識別或者文字識別,程式返回識別的結果。