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

關鍵字:Python,SVM,字符驗證碼,機器學習,驗證碼識別

1   概述

基於Python使用SVM識別簡單的驗證字符串的完整代碼開源分享。python

由於目前有了更厲害的新技術來解決這類問題了,可是本文做爲初級入門方法,仍是具備必定的學習意義的,因此就將源碼和相關的素材開源出來。git

本文雖然已經不具有太強的實戰性和遷移性,可是主要但願可以是以一個有趣的應用點來讓對機器學習有興趣的同窗找到入門點。github

上面提到的 「更厲害的新技術」 是指 「CNN 卷積神經網絡」,這個工具基本上免去了本文介紹的繁雜的圖片預處理工做, 並且通用性更強,換一種驗證模式,基本上不須要修改任何代碼,就能夠訓練出想要的模型。 可是這部分入門門檻會稍微高一些,後續有機會,會逐漸開一個專題來說此類高級方法。ubuntu

總之,最後會有一個結論:傳統的字符驗證碼是徹底沒有防護自動化的能力了。網絡

輸入圖片:機器學習

輸出字符串:工具

6937學習

 

2   詳細原理

完整的識別的源碼項目:測試

https://github.com/zhengwh/captcha-svm

代碼有些醜,可是結合原理文檔,應該還算是比較清晰的。code

關於原理文檔請參考博客:

《字符型圖片驗證碼識別完整過程及Python實現》

http://www.cnblogs.com/beer/p/5672678.htm

效果:能夠對簡單的可分割的驗證碼達到99%以上的識別率。

3   代碼環境

  • python 3.5
  • libSVM 本身到官網下載安裝
  • ubuntu 16.4或者mac-os下都能正常搭建和運行
  • 其它的依賴關係沒有特別要求,缺啥就裝啥

4   數據解釋

  • origin 原始數據集。
  • bin_clear 二值化且去噪後的圖片集。

由於數據包比較大,就不放上來了

  • demo-6937 以6937爲例子進行的圖像處理效果展現

  • cut_pic 把處理後的圖片切割成單位字符後,再進行分類標記的結果值

  • svm_train 和svm訓練相關的文件
    • train_pix_feature_xy.txt 用於作訓練的SVM特徵文件
    • last_test_pix_xy_8.txt 用於作簡單檢測的SVM特徵文件(爲了圖簡單,只包含數字8的特徵)
    • svm_model_file 訓練完成後保存的模型文件

5   代碼解釋

  • lib 直接從libSVM官網下載的py庫文件,可使用python調用相應的 .so文件
  • cfg.py 一些全局配置文件
  • img_tools.py 圖像素材的預處理工具和庫文件
  • svm_features.py 將圖像進行特徵化的相應工具
  • svm_train.py 對特徵文件進行訓練和測試,並保存模型
  • predict.py 訓練完成後,將整個流程串起來的工具流

6   方案思路

整個學習的過程,主體數據處理部分是一個不斷的把信息降維處理的過程。

以圖片 6987 爲例子:

 
 

7   後續交流

若是有對相關技術有持續關注的興趣的同窗,歡迎加入QQ羣: 592109504

或者手機QQ掃碼加入:

相關文章
相關標籤/搜索