| 首先感謝 https://github.com/xuncv/chineseocrlite-aardio 提供的 chineseocrlite-aardio 擴(kuò)展庫(kù),讓我了解到了 https://github.com/DayBreak-u/chineseocr_lite 這個(gè)優(yōu)秀的開源組件。但是我在使用 chineseocrlite-aardio 時(shí)遇到一些問題,沒有找到 DLL 的源代碼,翻了一下 chineseocr_lite 的源碼也只有 EXE 的項(xiàng)目,所以花了一點(diǎn)時(shí)間改造了一個(gè) DLL 版本并開源(已發(fā)到 github.com ),DLL 主要用于我重新實(shí)現(xiàn)的 aardio 擴(kuò)展庫(kù):string.ocrLite,當(dāng)然也可以用于任何支持 DLL 的語(yǔ)言。 此 DLL使用 Unicode 路徑加載文件( 可解決中文路徑下崩潰的問題 ),并使用內(nèi)存數(shù)據(jù)輸入輸出圖像 —— 這樣在調(diào)用DLL時(shí)可以更靈活一些。DLL 工程已經(jīng)全部配置好,只要使用 VC 2017 就可以直接編譯出DLL文件。也可以在 aardio 中運(yùn)行 import string.ocrLite即可自動(dòng)下載安裝好我生成好的DLL文件以及 aardio 擴(kuò)展庫(kù)源碼,DLL 接口用法請(qǐng)參考 aardio 擴(kuò)展庫(kù)源碼。 string.ocrLite 支持生成綠色、獨(dú)立的 EXE 文件,帶模型生成的EXE打包后僅  十幾 MB。下面主要介紹一下在 aaardio 中的用法,詳細(xì)的用法請(qǐng)查看 string.ocrLite 函數(shù)庫(kù)文檔,以下是一個(gè)簡(jiǎn)單的例子: 
 //string.ocrLiteimport win.ui;
 /*DSG{{*/
 var winform = win.form(text="string.ocrLite簡(jiǎn)單演示";right=796;bottom=504)
 winform.add(
 button={cls="button";text="識(shí)別剪貼板圖像";left=528;top=423;right=712;bottom=477;db=1;dr=1;z=2};
 edit={cls="edit";left=497;top=36;right=764;bottom=403;db=1;dr=1;dt=1;edge=1;hscroll=1;multiline=1;vscroll=1;z=3};
 plus={cls="plus";left=25;top=36;right=474;bottom=403;db=1;dl=1;dr=1;dt=1;notify=1;repeat="scale";z=1}
 )
 /*}}*/
 
 import string.ocrLite
 import string.ocrLite.defaultModels;
 import win.clip;
 
 var ocr = string.ocrLite(,true);
 winform.button.oncommand = function(id,event){
 var hBmp = win.clip.readBitmap()
 if(!hBmp){ return; }
 var bmp = gdip.bitmap(hBmp);
 var ocrRet = ocr.detectBitmap(bmp);
 if(ocrRet){
 winform.plus.background = ocrRet.resultBitmap;
 winform.edit.text = ocrRet.text;
 winform.edit.text = '';
 import web.json;
 for i,block in table.eachIndex(ocrRet.blocks){
 winform.edit.print(block.text);
 winform.edit.print(web.json.stringify(block.points,false));
 }
 }
 }
 
 winform.plus.skin(
 background = {
 hover = "/res/images/btn-hover.png";
 focus = "/res/images/btn-focus.jpg";
 active = "/res/images/btn-active.png";
 disabled = "/res/images/btn-disabled.png";
 }
 )
 winform.plus.oncommand = function(id,event){
 
 }
 
 winform.show();win.loopMessage();
 
 
 如果是制作自動(dòng)化機(jī)器人之類的軟件,識(shí)別屏幕上文字的能力就好像機(jī)器人的眼睛一樣重要,尤其是現(xiàn)在很多無窗口界面的實(shí)現(xiàn),通過 OCR 組件就可以較好的定位到界面上指定的部位進(jìn)行準(zhǔn)確的操作,大家可以試試 OCR 結(jié)合 aardio 標(biāo)準(zhǔn)庫(kù)里的 winex.mouse, mouse 等可以實(shí)現(xiàn)非常酷的效果,另外 aardio 工具里的「探測(cè)器->窗口探測(cè)器」也會(huì)有較大的幫助(可以生成示例代碼)。
 最后要提醒一下大家,這個(gè)組件使用 GPL 許可證開源,GPL具有傳染性,也就是使用這個(gè)組件的應(yīng)用也必須使用 GPL 開放源代碼。
 |