沖頂大會等競答遊戲的輔助工具,介紹請移步開源周報2018年第3期

關於遊戲

沖頂大會:遊戲過程中由一名主持人出題,在線註冊觀眾答題,每期 12 道題,題目範圍將涵蓋科學、文化、綜藝、藝術等各個領域,有 10 秒作答時間。每天有兩次遊戲機會,通常為中午 1 點和晚上 9 點。全答對的人能分得獎金。

關於ADB

全名為 Android Debug Bridge ,直譯過來就是安卓調試橋,其實它的作用也就是搭起你的 android設備與 pc間的橋樑,讓你能用你的 pc操作管理你的 android設備或者模擬器。在這個項目中主要用來獲取截屏。

註:IOS使用的是 WDA ,詳情自行谷歌。

關於谷歌 Tesseract

開源 OCR 引擎,使用 c 和 c++ 編寫而成,主要用於識別圖像中的文本,目前已支持世界上大部分使用較廣的語言。當然,你也可以自己進行訓練。

OCR:Optical Character Recognition,光學字元識別,顧名思義,不加贅述。

Wiki: https://en.wikipedia.org/wiki/Tesseract_(software)

而該項目使用的是 Python-tesseract:封裝過的Tesseract

https://github.com/madmaze/pytesseract

關於百度 OCR

功能相仿,但使用它需要到百度平台上創建應用申請 API Key 和 Secret Key ,所以還是建議使用 Tesseract (=w=)。

工作原理

使用 ADB 截屏

代碼鏈接:https://github.com/Skyexu/TopSup/blob/master/common/screenshot.py

使用 OCR 識別文本

代碼鏈接:https://github.com/Skyexu/TopSup/blob/master/common/ocr.py

除了 Tesseract 的部分以外,還使用了灰度轉化的方法增加了識別準確率。

獲取結果,官方文檔對三種方式的介紹:

  1. 直接打開瀏覽器搜索問題
  2. 題目+每個選項都通過搜索引擎搜索,從網頁代碼中提取搜索結果計數
  3. 只用題目進行搜索,統計結果頁面代碼中包含選項的詞頻

代碼鏈接:https://github.com/Skyexu/TopSup/blob/master/common/methods.py

然後,因為沒法使用(某些特殊原因),所以沒有截圖,按照官方的說法,可能會識別錯誤導致你與勝利失之交臂,也有可能無法識別,總之,在有些時候,它可能還不如你使用語音搜索來的快。