這個是在網上找的**修修改改之後發現還是蠻好用的。成功率在60%左右,雖然成功率雖然有點低,但是相對來說還是蠻可以的了。
1importre2
from pil import
image
3import
pytesseract45
6#自動識別驗證碼
7def
get_pictures(driver):8#
整個頁面截圖的存放路徑
9 driver.s**e_screenshot(r'
d:\honest\picture\poo1.png')
10#id是驗證碼在頁面上的id
11 pg = driver.find_element_by_id('
codeimg')
12 left = pg.location['x'
]13 top = pg.location['y'
]14 right = pg.size['
width
'] +left
15 height = pg.size['
height
'] +top
16 im = image.open(r'
d:\honest\picture\poo1.png')
17 image_obj =im.crop((left, top, right, height))18#
驗證碼截圖的存放路徑
19 image_obj.s**e(r'
d:\honest\picture\poo2.png')
20 images = image_obj.convert("
l") #
轉灰度21 pixdata =images.load()
22 w, h =images.size23#
畫素值24 threshold = 19025#
遍歷所有畫素,大於閾值的為黑色
26for y in
range(h):
27for x in
range(w):
28if pixdata[x, y] 29 pixdata[x, y] =0
30else
:31 pixdata[x, y] = 255
32 data =images.getdata()
33 w, h =images.size
34 black_point =0
35for x in range(1, w - 1):
36for y in range(1, h - 1):
37 mid_pixel = data[w * y + x] #
**畫素點畫素值
38if mid_pixel < 50: #
找出上下左右四個方向畫素點畫素值
39 top_pixel = data[w * (y - 1) +x]
40 left_pixel = data[w * y + (x - 1)]
41 down_pixel = data[w * (y + 1) +x]
42 right_pixel = data[w * y + (x + 1)]43#
判斷上下左右的黑色畫素點總個數
44if top_pixel < 10:
45 black_point += 1
46if left_pixel < 10:
47 black_point += 1
48if down_pixel < 10:
49 black_point += 1
50if right_pixel < 10:
51 black_point += 1
52if black_point < 1:
53 images.putpixel((x, y), 255)
54 black_point =0
55 result = pytesseract.image_to_string(images) #
轉文字56 resultj = re.sub(u"
([^\u4e00-\u9fa5\u0030-\u0039\u0041-\u005a\u0061-\u007a])
", "", result) #
去除識別出來的特殊字元
57 result_four = resultj[0:4] #
只獲取前4個字元58#
print(result_four) # 列印識別的驗證碼
59return result_four
from selenium importwebdriver
from common.common_verification import get_pictures #
方法路徑
deftest_a():
driver =webdriver.chrome()
driver.get(r
"www.123.com")
#賬號driver.find_element_by_name('
loginname
').send_keys('
123'
) #密碼
driver.find_element_by_name('
password
').send_keys('
123'
)
#驗證碼 呼叫方法 get_pictures(self.driver)
driver.find_element_by_id('
code
').send_keys(get_pictures(self.driver)) if
__name__ == '
__main__':
test_a()
驗證碼自動識別平台與打碼平台的區別
從驗證碼出現之後,引發的驗證碼識別技術衍生了一系列的新興行業。比如打碼平台,軟體自動識別驗證碼等網際網路行業,可以說是促進了就業和經濟的發達。驗證碼識別平台 答題吧打碼平台 驗證碼識別作為一種圖靈測試,綜合了影象處理 機器視覺 模式識別 人工智慧等多個領域的研究。其研究成果不僅對於captcha識別...
Python 驗證碼識別
使用pip安裝pytessseract,如圖所示 例項 識別該中的字元 指令碼 import os os.chdir c python34 lib site packages pytesser from pytesser import from pytesseract import image to...
python 驗證碼識別
一 python識別簡單驗證碼 1 2 func 實現簡單驗證碼獲取 3 4import pytesseract 5from pil import image67 首先通過image開啟乙個 9 然後通過方法將image物件轉化為字串10 code pytesseract.image to stri...