reCAPTCHA项目是由卡内基梅隆大学所发展的系统,主要目的是利用CAPTCHA技术来帮助典籍数字化的进行,这个项目将由书本扫描下来无法准确的被光学文字识别技术识别的文字显示在CAPTCHA问题中,让人类在回答CAPTCHA问题时用人脑加以识别[2]。reCAPTCHA正数字化《纽约时报》(New York Times)的扫描存档[3],目前已经完成20年份的资料,并希望在2010年完成110年份的资料。2009年9月17日,Google宣布收购reCAPTCHA。[4] 为了验证人类所输入的文字是正确的,而不是随意输入,有两个字会被显示出来;一个是光学文字识别软件无法辨别的字,另一个是一个已经知道正确答案的字。如果用户正确的回答出已知正确答案的字,那么就假设所输入的另一个光学识别软件无法识别的字是认真的查看后被输入而非随便输入。[5][6]
@classmethod def create_task(cls): try: response = requests.get(cls.CREATE_TASK_URL) if response.status_code == 200: data = response.json() cls.TASK_ID = data.get('data', {}).get('taskId') print(f"Task created, ID:{cls.TASK_ID}") except requests.RequestException as e: print(f'Create task failed:{e}')
@classmethod def get_token(cls, task_id=None, retry_times=120): if not task_id: cls.create_task() task_id = task_id or cls.TASK_ID if not task_id: print("Not found task id") return False
print(f"Start pull task:{task_id} result") url = cls.GET_TOKEN_URL.format(BASE_URL=cls.BASE_URL, TOKEN=cls.TOKEN, task_id=task_id) count = 0 while count < retry_times: try: response = requests.get(url) if response.status_code == 200: data = response.json() status = data.get('data', {}).get('status') print('task status', status) if status == 'Success': return data.get('data', {}).get('response') except requests.RequestException as e: print('task failed', e) finally: count += 1 time.sleep(1)