引言
如果談到這幾年手機上各平臺最常見的引流福利,必然是答題贏大獎系列小游戲了。像什么頭號英雄,百萬玩家之類的,充斥在我們生活中,同時也成為了我們生活中常見的娛樂方式。
但是有時候就會想,能不能實現(xiàn)手機自動答題呢,畢竟網(wǎng)絡上是充斥著很多問題的答案,自己手動搜題速度顯然來不及。答案是當然可以,今天我們就來用手機連接電腦,讓電腦自動搜索答案,省時省力省心。
這一項目中主要用到了文字識別和瀏覽器操作,其中文字識別是利用計算機自動識別字符的技術,是模式識別應用的一個重要領域。
人們在生產(chǎn)和生活中,要處理大量的文字、報表和文本。為了減輕人們的勞動,提高處理效率,50年代開始探討一般文字識別方法,并研制出光學字符識別器。60年代出現(xiàn)了采用磁性墨水和特殊字體的實用機器。
60年代后期,出現(xiàn)了多種字體和手寫體文字識別機,其識別精度和機器性能都基本上能滿足要求。如用于信函分揀的手寫體數(shù)字識別機和印刷體英文數(shù)字識別機。70年代主要研究文字識別的基本理論和研制高性能的文字識別機,并著重于漢字識別的研究。
基于一些基礎認識,下面我們先來思考下,實現(xiàn)這一項目的整體思路:
做這一項目首先會存在以下疑問:
1、我們要讓手機連接電腦,但是怎么讓電腦自動控制手機呢
2、手機上是顯示文字的,但是怎么讓電腦看懂你手機上的文字呢
3、電腦知道了問題后如何借助網(wǎng)絡搜答案呢?
針對上面的問題,我們大概想了下思路:
1、讓電腦能夠控制手機,一般都是利用usb把手機連接到電腦上。然后借助ADB實現(xiàn)對手機的調(diào)控,包括點觸、滑動、截圖等等功能。
2、讓電腦能夠看懂文字,必然需要對手機屏幕截圖,然后對截圖中的文字識別即可
3、讓電腦操控瀏覽器搜題,用python的庫即可實現(xiàn)
了解了整體思路后,下面開始我們的實驗。
首先我們使用的python版本是3.6. 5 所用到的庫有os,Python 中os模塊包含普遍的操作系統(tǒng)功能。
如果你希望你的程序能夠與平臺無關的話,這個模塊是尤為重要的;pillow庫中Image模塊是在Python PIL圖像處理中常見的模塊,對圖像進行基礎操作的功能基本都包含于此模塊內(nèi);Pytesseract模塊是文字識別模塊;webbrowser是實現(xiàn)瀏覽器的操作;time庫實現(xiàn)等待下一題之間的間隔時間等待。
1、利用ADB控制手機:
ADB是安卓手機常見的調(diào)控插件,我們需要將手機數(shù)據(jù)線和電腦連接,然后借助adb實現(xiàn)對手機的截屏并保存在指定路徑。Adb控制指令如下:
截取屏幕,圖片命名為screen.png :
os.system("adbshell/system/bin/screencap-p/sdcard/screen.png")#截取屏幕,圖片命名為screen.png將截圖保存到電腦,路徑為:C:/Users/jia/Desktop
os.system("adbpull/sdcard/screen.pngC:/Users/jia/Desktop")#將截圖保存到電腦在桌面模擬點擊屏幕,x y分別為點擊處的像素
os.system("adbshellinputtap{}{}".format(x,y))#x,y為點擊處的像素點詳細代碼如下:
#adb手機截圖defget_image():os.system('adbshellscreencap-p/sdcard/image.png')os.system('adbpull/sdcard/image.png.')xigua_size=(150,530,1800,800)2、對圖片文字識別:
文字識別部分為了方便快速,我們直接使用pytesseract文字識別即可。其中主要用的函數(shù)是pytesseract.image_to_strin。
pytesser里包含了tesseract.exe和英語的數(shù)據(jù)包(默認只識別英文),還有一些示例圖片,所以解壓縮后即可使用。
同時模塊需要PIL庫的支持。
如何識別率低的問題?
可以增強圖片的顯示效果,或者將其轉(zhuǎn)換為黑白的,這樣可以使其識別率提升不少。
識別其他語言?
tesseract是一個命令行下運行的程序,參數(shù)如下:
tesseractimagenameoutbase[-llang][-psmN][configfile...]imagename是輸入的image的名字,outbase是輸出的文本的名字,默認為outbase.txt ,-l lang 是定義要識別的的語言,默認為英文。
詳細代碼如下:
#讀取圖像get_image()img=Image.open('image.png')img_que=img.crop(xigua_size)#識別截圖文字question=pytesseract.image_to_string(img_que,lang='chi_sim')獲取文字后,對文字做一些處理,去除沒必要的信息。
question=question.replace('','').replace('\\n','')que=question[question.find('.')+1:question.find('?')]1、瀏覽器操作:
在識別問題的基礎上,我們通過webbrowser打開瀏覽器,并操作瀏覽器搜索答案。
其中主要用到的方法如下:
webbrowser 有以下方法:
webbrowser.open(url[,new=0[,autoraise=1]])這個方法是在默認的瀏覽器中顯示url, 如果new = 0, 那么url會在同一個瀏覽器窗口下打開,如果new = 1, 會打開一個新的窗口,如果new = 2, 會打開一個新的tab, 如果autoraise = true, 窗口會自動增長。
webbrowser.open_new(url)在默認瀏覽器中打開一個新的窗口來顯示url,否則,在僅有的瀏覽器窗口中打開url。
webbrowser.open_new_tab(url)在默認瀏覽器中當開一個新的tab來顯示url,否則跟open_new()一樣、
webbrowser.get([name])根據(jù)name返回一個瀏覽器對象,如果name為空,則返回默認的瀏覽器
webbrowser.register(name,construtor[,instance])注冊一個名字為name的瀏覽器,如果這個瀏覽器類型被注冊就可以用get()方法來獲取。
詳細代碼如下:
到這里,我們整體的程序就搭建完成,下面為我們程序的運行結(jié)果:
試試用這個方法參加《百萬答題》類小游戲,或許下一個百萬獲獎人就是你。
作者介紹:
李秋鍵,CSDN 博客專家,CSDN達人課作者。碩士在讀于中國礦業(yè)大學,開發(fā)有taptap安卓武俠游戲一部,vip視頻解析,文意轉(zhuǎn)換工具,寫作機器人等項目,發(fā)表論文若干,多次高數(shù)競賽獲獎等等。
本文名稱:用Python實現(xiàn)手機自動答題,這下百萬答題游戲誰也玩不過我!
標題鏈接:http://chinadenli.net/article6/chohig.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計、網(wǎng)站建設、網(wǎng)頁設計公司、響應式網(wǎng)站、服務器托管、網(wǎng)站設計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)