Помогите распознать номер телефона с картинки.
Вот примеры:
http://krasnodar.krd.slando.ru/ajax/misc/phoneimage/5PwkT/
http://krasnodar.krd.slando.ru/ajax/misc/phoneimage/5Pv1f/
>>> from cStringIO import StringIO >>> from pytesser import image_to_string >>> from urllib2 import urlopen >>> from PIL import Image >>> img1 = Image.open(StringIO(urlopen('http://krasnodar.krd.slando.ru/ajax/misc /phoneimage/5PwkT/').read())) >>> img2 = Image.open(StringIO(urlopen('http://krasnodar.krd.slando.ru/ajax/misc /phoneimage/5Pv1f/').read())) >>> def resizer(img, scale): ... x,y = img.size ... return img.convert("RGB").resize((x*scale, y*scale), Image.BILINEAR) ... >>> image_to_string(resizer(img1,2)) '+7 918 965 17 14\n\n' >>> image_to_string(resizer(img2,2)) '89615815813\n\n' >>> image_to_string(resizer(img1,2)) '+7 918 965 17 14\n\n' >>> image_to_string(resizer(img1,4)) '+7 918 965 17 14\n\n' >>> image_to_string(resizer(img1,1)) '\n'
EBFE
http://www.debasish.in/2012/01/bypass-captcha-using-python-and.html
tibsНу вообще-то ссылка была на код. Как использовать PIL + pytesser
И что все вот эти капчи может распознать данный модуль?
>>> from cStringIO import StringIO >>> from pytesser import image_to_string >>> from PIL import Image >>> from urllib2 import urlopen >>> img1 = Image.open(StringIO(urlopen('http://krasnodar.krd.slando.ru/ajax/misc/phoneimage/5PwkT/').read())) >>> '#'*70 '######################################################################' >>>image_to_string(img1) '\n' >>> image_to_string(img1.convert("RGB")) '\n' >>> img1.mode 'P' >>> img1.size (160, 15) >>> image_to_string(img1.resize((160*3,15*3),Image.NEAREST) ... ) "+]' 918 965 1]' 1-*1-\n\n" >>> image_to_string(img1.resize((160*3,15*3),Image.BICUBIC)) "+]' 918 965 1]' 1-*1-\n\n" >>> image_to_string(img1.resize((160*30,15*30),Image.BICUBIC)) "-I-T!` 'gls 965 J.? 14\n\n" >>> image_to_string(img1.convert("RGB").resize((160*30,15*30),Image.BICUBIC)) '+7 9].8 965 17 14\n\n' >>> image_to_string(img1.convert("RGB").resize((160,15),Image.BICUBIC)) '\n' >>> image_to_string(img1.convert("RGB").resize((160*3,15*3),Image.BICUBIC)) '+7 918 965 17 14\n\n' >>> image_to_string(img1.convert("RGB").resize((160*3,15*3),Image.NEAREST)) '+? 918 965 1? 14\n\n' >>> image_to_string(img1.convert("RGB").resize((160*3,15*3),Image.BILINEAR)) '+7 918 965 17 14\n\n' >>> image_to_string(img1.convert("RGB").resize((160*30,15*30),Image.BILINEAR)) '-{-7 918 965 17 14\n\n'
cpu
ты определись, тебе телефон распознать или ломать все капчи сразу (ХАЛК ЛОМАТЬ!!1!!!)
fails = [] allowed = set("0123456789-/+") tel_str = get_tel_from_image(image_url) if not set(tel_str) <= allowed: # issubset of allowed ? fails.append(tel_str, image_url, set(tel_str) - allowed) #add string, image url and difference
fails = [] allowed = set("0123456789-/+") repl_dict = {'o' : '0', '$' : '8'} tel_str = get_tel_from_image(image_url) tel_str = "".join([repl_dict.get(c, c) for c in tel_str.lower()]) # dict.get(x, default_if_not_in_dict) if not set(tel_str) <= allowed: # issubset of allowed ? fails.append(tel_str, image_url, set(tel_str) - allowed) #add string, image url and difference
image_to_string(resizer(img1,10))
tibsМне кажется, $ всегда будет подразумевать восьмерку, а О — ноль.cpu
ты определись, тебе телефон распознать или ломать все капчи сразу (ХАЛК ЛОМАТЬ!!1!!!)
Мне только телефоны распознать надо.
Не все распознаются к сожалению, иногда вместо 8 - $, 0 - O. Можно как-то улучшить?
Прикрепил архив с телефонами.