1. 程式人生 > >識別扭曲干擾性驗證碼

識別扭曲干擾性驗證碼

偏向於扭曲,傾斜,干擾驗證碼,例如下圖:

 

因為字元距離較近,沒法採用先切割為單個字元然後進行區域性識別的方式,所以,使用TensorFlow+cnn進行識別,該方法無需切割驗證碼

使用深度學習+訓練資料+大量計算力,我們可以在幾天內訓練一個可以破解驗證碼的模型,不需要分割驗證碼,而是把驗證碼做為一個整體進行識別。

因為驗證碼的訓練集實在不好找,你基本不太可能搞到網站生成驗證碼的完整原始碼。碰到這種情況,我的解決方案就是自己推測出網站驗證碼的生成規則,然後寫個生成驗證碼的程式,最後通過CNN模型訓練,破解自己做的驗證碼生成器。

CNN需要大量的樣本進行訓練。如果使用數字+大小寫字母CNN網路有4*62個輸出,只使用數字CNN網路有4*10個輸出。因此需要一個指令碼自動生成訓練集。

成功率(可能波動,均親身實踐):

  1. 達到50%成功率需要2000個批次,總計20w張圖片。
  2. 達到70%成功率需要4000個批次,總計40w張圖片。
  3. 達到94%成功率需要40000個批次,總計400w張圖片。
  4. 達到98%成功率需要100000個批次,總計1000w張圖片。

驗證碼生成器(生成訓練資料)




1. 開啟Anaconda Prompt視窗,首先,安裝captcha模組,否則,後續執行會提示如下錯誤;


2. 輸入如下命令,進行安裝;

pip install captcha


3. 輸入命令:

python gen_captcha.py

即可在同目錄下,彈出一對話方塊生成驗證碼圖片,並輸入驗證碼結果;同時被TensorFlow_cnn呼叫;


左上角文字對應驗證碼影象;

訓練










CNN需要大量的樣本進行訓練,由於時間和資源有限,測試時我只使用數字做為驗證碼字符集。如果使用數字+大小寫字母CNN網路有4*62個輸出,只使用數字CNN網路有4*10個輸出。

執行

1. 開啟Anaconda Prompt視窗,切換到程式路徑內;


2. 然後,在視窗內輸入命令:

python tensorflow_cnn_train.py

3. 彈出如下內容:


每次都輸出訓練次數、準確率;

每100次計算一次準確率,如果準確率大於0.5,就儲存模型,完成訓練

4. 訓練完成時的準確率(本人訓練一天多也沒看到這個資料,一致到85%左右;超過50%就不訓練了)


使用訓練的模型測試


 執行結果如下:

檢視Loss和準確率曲線





相關推薦

識別扭曲干擾驗證

偏向於扭曲,傾斜,干擾驗證碼,例如下圖:   因為字元距離較近,沒法採用先切割為單個字元然後進行區域性識別的方式,所以,使用TensorFlow+cnn進行識別,該方法無需切割驗證碼。 使用深度學習+訓練資料+大量計算力,我們可以在幾天內訓練一個可以破解驗證碼的模型

圖像識別練習(flash驗證

探討 野比 2012由於破解可能給他人帶來困擾,所以我只說大概的思路,不會提供源碼。-----------------本次目標是www.iboling.com的flash驗證碼。這個網站很新穎,用的是flash動畫,隨機給出大小球,然後讓用戶用鼠標點擊相應的球,實現驗證碼輸入。像這樣本來這是個很不錯的思路,跳

c#實現識別圖片上的驗證數字

這篇文章主要介紹了c#實現識別圖片上的驗證碼數字的方法,本文給大家彙總了2種方法,有需要的小夥伴可以參考下。 public void imgdo(Bitmap img) { //去色 Bitmap btp = img; Color c

python呼叫pytesseract識別某網站的驗證(實戰專案)

一、首先安裝 tesseract-ocr-setup-4.00.00dev.exe 1.直接安裝 2.安裝完之後,將目錄檔案 配置到path中 3.新建一個系統變數,名稱為“ TESSDATA_PREFIX”  內容跟步驟二一樣的內容 二、配置完系統變數之後 1.執

【PIL+numpy+pytesseract】識別汽車之家驗證

實踐目標對汽車之家的驗證碼文字做識別處理原圖如下:降噪處理+去除邊框噪點的存在會干擾影象文字識別,可以通過我們之前講的識別噪點的演算法來做,因為之家驗證碼的特性,這麼做有些囉嗦了思路:噪點顏色較淺->將接近白色的RGB轉化成白色->去除邊框(將邊框變為白色)程式碼

基於Python使用SVM識別簡單的字元驗證的完整程式碼開源分享

關鍵字:Python,SVM,字元驗證碼,機器學習,驗證碼識別 1   概述 基於Python使用SVM識別簡單的驗證字串的完整程式碼開源分享。 因為目前有了更厲害的新技術來解決這類問題了,但是本文作為初級入門方法,還是具有一定的學習意義的,所以就將原始碼和相關的素材開源出來。 本文雖然已經不具備

Atiitt 圖片影象驗證生成法原理 目錄 1.1. 常見的最簡單圖片驗證是利用影象api把隨機數文字轉影象 1 1.2. 常見較為複雜圖片驗證的方法 ( 鏤空文字 打散 干擾線 文字扭曲

Atiitt 圖片影象驗證碼生成法原理   目錄 1.1. 常見的最簡單圖片驗證碼是利用影象api把隨機數文字轉影象 1 1.2. 常見較為複雜圖片驗證碼的方法 ( 鏤空文字  打散 干擾線 文字扭曲 粘連  膨脹,填充 ) 1 1.3. 實現 2

(一)python爬蟲驗證識別(去除干擾線)

(一)python爬蟲驗證碼識別(去除干擾線) 1.開發環境與工具 python27:sklearn、pytesser、opencv等 pycharm windows7 2. 資料集 用request庫爬蟲抓取某一網站驗證碼1200張,並

(二) python爬蟲驗證識別(去除干擾線)

(二)python爬蟲驗證碼識別(去除干擾線) 釘釘釘~繼完成第一波的任務之後,又來第二波了!!!!!! 1.開發環境與工具 python36:sklearn、pytesser、opencv等 pycharm windows7 2.資料集 3.解決思想討

Python3.4 12306 2015年3月驗證識別

like target bottom edr ocr extra spl apple creat import ssl import json from PIL import Image import requests import re import urllib.r

驗證識別

code threshold 識別 div out style end gray .cn # -*- coding: utf-8 -*- import urllib.request, urllib.parse from PIL import Image from pyt

Python驗證通過pytesser識別

bsp table src 解壓 pac and pan __init__ open Python安裝包: 需要安裝的包主要有兩個: PIL 和 pytesser 、tesseract (1)、安裝PIL:下載地址:http://www.pythonware.com/pro

python之驗證識別 特征向量提取和余弦相似性比較

wow gif .get extra time ade upd orm log 0.目錄 1.參考2.沒事畫個流程圖3.完整代碼4.改進方向 1.參考 https://en.wikipedia.org/wiki/Cosine_similarity https://zh.wi

linux環境下pytesseract的安裝和央行征信中心的登錄驗證識別實戰

int tab 權限 linux a-z 都是 提示 解釋 text 首先是安裝,我參考的是這個 http://blog.csdn.net/xinghun_4/article/details/47860645 我是centos,使用yum yum install pyt

Python - WebDriver 識別登錄驗證

增強 import ive screen 什麽 open auth odi img Python - WebDriver 識別登錄驗證碼 沒什麽可說的直接上代碼! #-*-coding:utf-8-*- # Time:2017/9/29 7:16 # Autho

驗證識別(最簡單之印刷體數字)

轉化 end double show ray app def 藍色 代碼實現 # -*- coding: utf-8 -*- import numpy from PIL import Image image = Image.open("5.gif") heigh

C#驗證識別基礎方法實例分析

renren 幫助 流行 人工 esp 導致 edi count public 本文實例講述了C#驗證碼識別基礎方法,是非常實用的技巧。分享給大家供大家參考。具體方法分析如下: 背景 最近有朋友在搞一個東西,已經做的挺不錯了,最後想再完美一點,於是乎就提議把這種驗證碼

python+selenium識別驗證並登錄

from process rep 分享 tracking refresh 文章 rom fill python版本:3.4.3 所需要的代碼庫:PIL,selenium,tesseract 先上代碼: #coding:utf-8import subprocessfrom

深度學習下的驗證識別教程

www 2016年 復制 egit 關於 廣泛 效果 yun 概念 轉:https://bbs.125.la/thread-14031313-1-1.html 隨著大數據時代,人工智能時代的到來,深度學習的應用越來越廣,場景識別、目標檢測、人臉識別、圖像識別等等廣泛應用。在

python 簡單圖像識別--驗證

use 頁面 lte headers 新的 AR -a 提交 進行 python 簡單圖像識別--驗證碼Ⅲ 實現自動登陸網站 登錄學校圖書館管理系統為例,做一個簡單的例子。python識別簡單的沒有幹擾的純數字驗證碼還是可以的,但是識別字母數字再加上幹擾因素,誤報率很高,