首先感謝 https://github.com/xuncv/chineseocrlite-aardio 提供的 chineseocrlite-aardio 擴展庫,,讓我了解到了 https://github.com/DayBreak-u/chineseocr_lite 這個優(yōu)秀的開源組件,。但是我在使用 chineseocrlite-aardio 時遇到一些問題,沒有找到 DLL 的源代碼,,翻了一下 chineseocr_lite 的源碼也只有 EXE 的項目,,所以花了一點時間改造了一個 DLL 版本并開源(已發(fā)到 github.com ),DLL 主要用于我重新實現(xiàn)的 aardio 擴展庫:string.ocrLite,,當然也可以用于任何支持 DLL 的語言,。 此 DLL使用 Unicode 路徑加載文件( 可解決中文路徑下崩潰的問題 ),,并使用內(nèi)存數(shù)據(jù)輸入輸出圖像 —— 這樣在調(diào)用DLL時可以更靈活一些。DLL 工程已經(jīng)全部配置好,,只要使用 VC 2017 就可以直接編譯出DLL文件,。也可以在 aardio 中運行 import string.ocrLite 即可自動下載安裝好我生成好的DLL文件以及 aardio 擴展庫源碼,DLL 接口用法請參考 aardio 擴展庫源碼,。 string.ocrLite 支持生成綠色,、獨立的 EXE 文件,帶模型生成的EXE打包后僅 十幾 MB,。下面主要介紹一下在 aaardio 中的用法,,詳細的用法請查看 string.ocrLite 函數(shù)庫文檔,以下是一個簡單的例子: //string.ocrLite import win.ui; /*DSG{{*/ var winform = win.form(text="string.ocrLite簡單演示";right=796;bottom=504) winform.add( button={cls="button";text="識別剪貼板圖像";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();
如果是制作自動化機器人之類的軟件,,識別屏幕上文字的能力就好像機器人的眼睛一樣重要,,尤其是現(xiàn)在很多無窗口界面的實現(xiàn),通過 OCR 組件就可以較好的定位到界面上指定的部位進行準確的操作,,大家可以試試 OCR 結(jié)合 aardio 標準庫里的 winex.mouse, mouse 等可以實現(xiàn)非常酷的效果,,另外 aardio 工具里的「探測器->窗口探測器」也會有較大的幫助(可以生成示例代碼),。
最后要提醒一下大家,這個組件使用 GPL 許可證開源,,GPL具有傳染性,,也就是使用這個組件的應用也必須使用 GPL 開放源代碼。
|