標籤:www. 手機 debug home png pil div 時間 自己
1.前言
最近答題類app比較火爆,由於題目廣並且時間短,自己打字搜尋是不太可能的了,於是想自己做一個自動搜尋的Python指令碼
該Python指令碼的原理是用adb工具將手機傳到電腦上進行文字識別,然後百度搜尋該問題,開啟瀏覽器時間還是比較慢的
2.文字識別庫pytesseract2.1 pytesseract庫的安裝
這個庫的安裝特別容易,在命令列中輸入
pip install pytesseract
即可安裝
2.2 tesseract ocr引擎
tesseract ocr引擎是一個開源的強大引擎,安裝Windows然後通過相關變數設定即可使用
2.3 image_to_string函數
該函數為pytesseract庫的方法,將圖片文本轉換為文字
from PIL import Imageimport pytesseractquestion_text = pytesseract.image_to_string(question_img, lang='chi_sim').replace(' ','')
上述為基礎用法,並且將空格替換掉
3.adb工具3.1簡介
adb全名Android Debug Bridge,通過該工具,可以在電腦端的命令列與安裝手機進行互動,前提是手機開啟USB調試
adb有很多功能,它可以類比螢幕觸擊,之前火熱的跳一跳輔助正是利用該原理進行操作的
3.2python代碼中使用adb
python代碼中使用adb shell很簡單
import osdef pull_screenshot(): os.system('adb shell screencap -p /sdcard/screenshot.png') os.system('adb pull /sdcard/screenshot.png')
這樣操作便可以類比命令列輸入將手機端發送至指令碼目錄
4.完整代碼
from PIL import Imageimport pytesseractimport timeimport osimport webbrowserdef pull_screenshot(): os.system('adb shell screencap -p /sdcard/screenshot.png') os.system('adb pull /sdcard/screenshot.png')def main(): pull_screenshot() img = Image.open("./screenshot.png") question_img = img.crop((65,350,1019,621)) question_text = pytesseract.image_to_string(question_img, lang='chi_sim').replace(' ','') webbrowser.open("https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&tn=baiduhome_pg&wd="+question_text)if __name__ == '__main__': main()
使用之後發現耗時還是比較久的,在識別1-2s後才能開啟瀏覽器進行搜尋,然後我們再找答案的話就可能時間到了
於是改進可以使用爬蟲,選定搜尋結果的相關網頁進行關鍵詞的搜尋,進行答案的排查搜尋
用Python快速搜尋答題類app問題