最近的答题赢钱很火爆,我也参与了几次,有些题目确实很难答,但是10秒钟的时间根本不够百度的,所以写了个辅助挂,这样可以出现题目时自动百度,这个时间也就花掉2秒钟,剩下的7、8秒钟可以进行分析和作答,提升了赢钱概率。
源码可以见我的github:点击链接
原理分析下:使用adb命令,抓取手机视频播放的界面,然后通过python的截取和ocr,获得到题目和答案, 然后百度得到结果。这个环境怎么搭建,有需要的童鞋可以联系我,因为使用本地的ocr所以解析不花钱,也没有使用的限制。
github上的代码中
ocr_bw.py,这个是自动根据题目去百度,然后打开浏览器,展示检索结果
# -*- coding: utf-8 -*-import pytesseractimport timeimport webbrowserimport subprocessfrom PIL import Imagedef main(): """ 主函数 """ op = yes_or_no('请确保手机打开了 ADB 并连接了电脑,' '然后打开西瓜视频后再用本程序,确定开始?') if not op: print('bye') return #核心递归 ocr_subject_parent() # for root, sub_dirs, files in os.walk('E:/临时接收的文件/知乎答题/百万/'): # for file in files: # print('发现图片:' + file) # img = Image.open('E:/临时接收的文件/知乎答题/百万/'+file) # ocr_subject(img)def yes_or_no(prompt, true_value='y', false_value='n', default=True): """ 检查是否已经为启动程序做好了准备 """ default_value = true_value if default else false_value prompt = '{} {}/{} [{}]: '.format(prompt, true_value, false_value, default_value) i = input(prompt) if not i: return default while True: if i == true_value: return True elif i == false_value: return False prompt = 'Please input {} or {}: '.format(true_value, false_value) i = input(prompt)def screenImg(true_value='', default=True): prompt = '当出现题目时,请按下回车进行识别 ' i = input(prompt) if not i: return default while True: if i == true_value: return True else: return False i = input(prompt)def ocr_subject(p): # 截取 距离上530开始 940结束 # 截取 距离上260 570结束 p = cut_img(p) pytesseract.pytesseract.tesseract_cmd = 'E:/Program Files (x86)/Tesseract-OCR/tesseract' subject = pytesseract.image_to_string(p, lang='chi_sim') subject = "".join(subject.split()) subject = subject.split('.')[1] print(subject) openPage(subject) ocr_subject_parent()def ocr_subject_parent(): result = screenImg() if result: start = time.time() # screenshot.check_screenshot() process = subprocess.Popen( 'adb shell screencap -p', shell=True, stdout=subprocess.PIPE) binary_screenshot = process.stdout.read() binary_screenshot = binary_screenshot.replace(b'/r/n', b'/n') f = open('autojump.png', 'wb') f.write(binary_screenshot) f.close() # screenshot.pull_screenshot() img = Image.open('autojump.png') print("耗时:" + str(time.time() - start)) ocr_subject(img)def openPage(subject): url = 'https://www.baidu.com/s?wd={}'.format( subject) webbrowser.open(url) webbrowser.get()def cut_img(img): region = img.crop((70, 260, 1025, 570)) #region.save("temp/cut_first.png") return regionif __name__ == '__main__': main()
新闻热点
疑难解答