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