其實 Windows 10/11 系統(tǒng)自帶得一個強大、免費得屏幕圖像文字識別組件,調(diào)用該組件生成得 EXE 文件體積很小。
下面我們用 aardio 敬請關(guān)注程語言寫個例子,代碼很簡單,先上圖看效果:
請復(fù)制下面得源代碼粘貼到 aardio 中,再按「運行」按鈕就專業(yè)看到上圖得效果 —— 程序自動找到了屏幕上得文本,鼠標(biāo)自動移到了該位置。
import mouse;import dotNet.ocr;//創(chuàng)建 OCR 對象var ocr = dotNet.ocr();//識別屏幕上得文字var ocrResult = ocr.detectScreen()//查找文字在屏幕上得位置var x,y = ocrResult.findPoint("把鼠標(biāo)移動到這里",0.1);mouse.moveTo(x,y,true)
上面就是一個完整得程序了,aardio 寫程序就這嗎簡單。
這個系統(tǒng) OCR 組件其實是一個 UWP 組件,不過 aardio 調(diào)用 .NET 組件、或者調(diào)用 UWP 組件都非常方便。參考「 aardio 范例 > 調(diào)用其他語言 > dotNet > 調(diào)用 UWP 接口 」:
屏幕找字:調(diào)用開源、免費、強大、綠色得 chineseocrliteaardio 基于 chineseocrlite 封裝了 string.ocrLite 擴展庫,圖片生成綠色、獨立得 EXE 文件,帶模型生成得EXE打包后僅 十幾 MB。
調(diào)用源代碼很簡單,先上圖看效果:
請復(fù)制下面得源代碼,粘貼到 aardio 中,再按「運行」按鈕就專業(yè)看到上圖得效果 ——鼠標(biāo)自動移到了屏幕上指定文本所在位置。
import mouse;import string.ocrLite;import string.ocrLite.defaultModels;//創(chuàng)建 OCR 對象var ocr = string.ocrLite();//識別屏幕上得文字var ocrResult = ocr.detectScreen();//查找文字在屏幕上得位置var x,y = ocrResult.findPoint("把鼠標(biāo)移動到這里",0.2);mouse.moveTo(x,y,true);
大家專家注意到了,aardio 中很多庫得接口、用法都一樣,專業(yè)一通百通。
如果是制作自動化機器人之類得軟件,識別屏幕上文字得能力就好像機器人得眼睛一樣重要。尤其是現(xiàn)在很多無窗口界面得軟件,通過 OCR 組件就專業(yè)較好地定位到界面上指定得部位進行準(zhǔn)確得操作。大家專業(yè)試試 OCR 結(jié)合 aardio 標(biāo)準(zhǔn)庫里得 winex.mouse, mouse @專業(yè)實現(xiàn)非??岬眯Ч?,另外 aardio 工具里得「探測器->窗口探測器」也很重要(專業(yè)生成示例代碼)。
屏幕找色找色很簡單,請復(fù)制下面得范例代碼粘貼到 aardio 中,然后點「運行」就專業(yè)看到效果:
import gdi;import win;import mouse;import soImage;//抓屏var imgScreen = soImage();imgScreen.capture(); //在圖像上搜索指定顏色得點,//第壹個參數(shù)是一個表示查找顏色得數(shù)值,更多參數(shù)用法請查看智能提示var x,y = imgScreen.findColor( gdi.RGB(48,171,53) );//返回該坐標(biāo)所在顯示器左上角位置var scrX,scrY = win.getScreenPos(x=x,y=y); //快速移動鼠標(biāo)(相對移動)mouse.move(scrX,scrY,true);//獲取虛擬屏幕位置,雙屏幕時專家起始坐標(biāo)專家返回負數(shù)var scrX,scrY = win.getScreenPos(); //慢速移動鼠標(biāo),顯示移動軌跡mouse.moveTo(x+scrX,y+scrY,true);
注意 mouse.moveTo() 函數(shù)移動鼠標(biāo)時專業(yè)看到移動軌跡,改為 mouse.move() 函數(shù)專業(yè)直接移動到指定坐標(biāo)。
屏幕找圖aardio 里屏幕找圖就更簡單了,首先加載要查找得圖像:
import soImage;var img = soImage();img.load("/res/find.jpg");
"/res/find.jpg" 專業(yè)是硬盤上得圖像文件路徑,也專業(yè)是 EXE 資源文件路徑(專業(yè)生成獨立 EXE )。
也專業(yè)自內(nèi)存直接加載圖像,如下用第 2 個參數(shù)指定圖像文件后綴名:
img.setBytes( imgBytes,"gov.png");
查找圖像要盡專家得小,并盡專家裁剪去掉背景,突出查找特征。
使用 img.findImage 全屏找圖,也專業(yè)使用下面得函數(shù)在指定窗口內(nèi)找圖:
var sm,x,y = imgFind.findImageInWindow(hwnd);
上面得 hwnd 參數(shù)指定窗口句柄。返回值 sm 為相似度( 0 到 100 之間得值,100 為完全相似,0 為完全不相似 ),返回值 x,y 為找到圖像得右下角坐標(biāo)。
自動化操作找圖找色找字得目得是自動化操作,aardio 與自動化操作有關(guān)得庫如下:
win //窗口操作winex //外部程序窗口操作winex.accObject //Microsoft Active Accessibility 自動化接口winex.key //后臺鍵盤操作winex.mouse //后臺鼠標(biāo)操作key //鍵盤操作mouse //鼠標(biāo)操作process //進程操作soImage //找圖找色
與自動化操作有關(guān)得范例:
網(wǎng)頁自動化就不必用上面這些了,直接使用瀏覽器控件就專業(yè),可參考我之前寫得文章 更簡單地自動化操作瀏覽器 ?!竌ardio 范例 > Web 界面」也專業(yè)看一下: