最近很多人玩答題類(lèi)App,例如沖頂大會(huì)、芝士超人、百萬(wàn)英雄系列,答對(duì)12道題與其他玩家平分所有獎(jiǎng)金,雖然獎(jiǎng)金沒(méi)有剛開(kāi)始的時(shí)候多了,但偶爾還是能有個(gè)飯錢(qián)的。一方面是玩的人多了,另一方面是因?yàn)榭萍际侄翁?,有基于語(yǔ)音識(shí)別的、圖像識(shí)別的,還有抓接口的,甚至有直播答題的,它們的各自?xún)?yōu)缺點(diǎn)請(qǐng)大家自己嘗試,我也不說(shuō)哪個(gè)工具了,在此只說(shuō)自己制作的一款小工具,它首先用OCR識(shí)別手機(jī)的截圖,然后把識(shí)別到的問(wèn)題交給百度,返回顯示搜索結(jié)果。
準(zhǔn)備工作
基本環(huán)境:macOS 10.12.5、 python 2.7、Xcode 8.33、PyCharm
- 安裝mac下的tesseract,并安裝python下的擴(kuò)展,具體步驟參照我的另一篇文章,mac+python+tesseract識(shí)別中文。
- 下載WebDriverAgent,并安裝python下的擴(kuò)展,具體步驟參照我的另一篇文章,mac +python+facebook-wda遠(yuǎn)程控制手機(jī)
控制手機(jī)截圖
-
首先用xcode運(yùn)行WebDriverAgent項(xiàng)目,若提示連接失敗可以嘗試重新插下數(shù)據(jù)線,直到提示:image.png
-
假若需要轉(zhuǎn)換端口的,則轉(zhuǎn)換端口:
image.png - python代碼獲取圖片:
import wda
c = wda.Client('http://localhost:8100')
c.screenshot('/Users/gcf/Desktop/shotImg/%dscreen.png' % (tag))
OCR識(shí)別圖像
這里的OCR,各位也可以用三方的,列如百度、騰訊,它們的準(zhǔn)確度高,速度快。
import pytesseract
from PIL import Image
# open image
image = Image.open('test.png')
code = pytesseract.image_to_string(image, lang='chi_sim')
print(code)
百度搜索
首先調(diào)用搜索,然后用BeautifulSoup獲取返回的結(jié)果列表,最后用正則處理結(jié)果。
#coding=utf-8
import urllib2
import urllib
from bs4 import BeautifulSoup
import re
def search(ques,keywords):
length =5
request = urllib2.Request(
'http://www.baidu.com/s?wd=' + urllib.quote((ques).strip().decode(sys.stdin.encoding).encode('gbk')))
response = urllib2.urlopen(request)
soup = BeautifulSoup(response.read(), 'html5lib')
# rr1 =soup.select('div.result h3.t > a') #標(biāo)題
data = soup.select('div.c-abstract')
for index in range(len(data)):
if index<length:
item = data[index]
# 處理<em></em>
data1 = re.sub('<em>', '\033[32;0m', str(item))
data2 = re.sub('</em>', '\033[0m', data1)
# 保留內(nèi)容
data3 = re.sub(u'<[\d\D]*?>', '', data2)
for key in keywords:
data3 = re.sub(key, '\033[0;35m'+key+'\033[0m', data3)
print data3 + '\n\n'
else:
break
效果展示
網(wǎng)絡(luò)順暢的話,從識(shí)別到返回結(jié)果,整個(gè)過(guò)程2秒左右。其實(shí)還有很多地方值得優(yōu)化的,由于其它原因,只能到此了。

Untitled.gif
項(xiàng)目地址
不要沉迷與答題,偶爾玩玩即可??。github地址

