用Python快速搜索答題類app問題


1.前言

最近答題類app比較火爆,由於題目廣並且時間短,自己打字搜索是不太可能的了,於是想自己做一個自動搜索的Python腳本

該Python腳本的原理是用adb工具將手機截圖傳到電腦上進行文字識別,然后百度搜索該問題,打開瀏覽器時間還是比較慢的

2.文字識別庫pytesseract

2.1 pytesseract庫的安裝

這個庫的安裝特別容易,在命令行中輸入

pip install pytesseract

即可安裝

2.2 tesseract ocr引擎

tesseract ocr引擎是一個開源的強大引擎,安裝Windows然后通過相關變量設置即可使用

2.3 image_to_string函數

該函數為pytesseract庫的方法,將圖片文本轉換為文字

from PIL import Image
import pytesseract
question_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 os
def pull_screenshot():
    os.system('adb shell screencap -p /sdcard/screenshot.png')
    os.system('adb pull /sdcard/screenshot.png')

這樣操作便可以模擬命令行輸入將手機端截圖發送至腳本目錄

4.完整代碼

from PIL import Image
import pytesseract
import time
import os
import webbrowser

def 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后才能打開瀏覽器進行搜索,然后我們再找答案的話就可能時間到了

於是改進可以使用爬蟲,選定搜索結果的相關網頁進行關鍵詞的搜索,進行答案的排查搜索


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM