//屏幕找字完整版 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;repeat="scale";z=1} ) /*}}*/ /* 屏幕找字简版 doc://example/Automation/ComputerVision/ocrUwp.html 简单 OCR: doc://example/Automation/ComputerVision/soImage.ocr.example.html .NET OCR 范例: file://~/example/Languages/dotNet/Apps/OCR.aardio */ import string.ocrLite; import string.ocrLite.defaultModels; import win.clip; //string.ocrLite 主要用于识别中文,识别数字改用 dotNet.ocr 或 tesseract var ocr = string.ocrLite(,true); winform.button.oncommand = function(id,event){ var hBmp = win.clip.readBitmap() if(!hBmp){ winform.edit.print("剪贴板未读取到图像") 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 JSON; for i,block in table.eachIndex(ocrRet.blocks){ winform.edit.print(block.text); winform.edit.print(JSON.stringify(block.points,false)); } } } winform.show(); //请使用 string.ocrLite扩展库 以及 aardio 最新版 var ocrResult = ocr.detectClient(winform.hwnd); if(ocrResult){ //在图文识别结果里模糊搜索最接近的文本所在的区块正中点位置的坐标。 var x,y = ocrResult.findPoint("识别剪贴板图像",0.1); if(x && y){ import mouse; //无句柄窗口可以直接用 winex.mouse.click() 点击 mouse.moveToWindow(x,y,winform.hwnd); mouse.click(); } //也可以更简单一些下面这样写 ocrResult.click("识别剪贴板图像",0.1); } win.loopMessage();