基于Python使用SVM识别简单的字符验证码的完整代码开源分享
关键字:Python,SVM,字符验证码,机器学习,验证码识别
1 概述
基于Python使用SVM识别简单的验证字符串的完整代码开源分享。
因为目前有了更厉害的新技术来解决这类问题了,但是本文作为初级入门方法,还是具有一定的学习意义的,所以就将源码和相关的素材开源出来。
本文虽然已经不具备太强的实战性和迁移性,但是主要希望能够是以一个有趣的应用点来让对机器学习有兴趣的同学找到入门点。
上面提到的 “更厉害的新技术” 是指 “CNN 卷积神经网络”,这个工具基本上免去了本文介绍的繁杂的图片预处理工作, 而且通用性更强,换一种验证模式,基本上不需要修改任何代码,就可以训练出想要的模型。 但是这部分入门门槛会稍微高一些,后续有机会,会逐渐开一个专题来讲此类高级方法。
总之,最后会有一个结论:传统的字符验证码是完全没有防御自动化的能力了。
输入图片:
输出字符串:
6937
2 详细原理
完整的识别的源码项目:
https://github.com/zhengwh/captcha-svm
代码有些丑,但是结合原理文档,应该还算是比较清晰的。
关于原理文档请参考博客:
《字符型图片验证码识别完整过程及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扫码加入:
基于Python使用SVM识别简单的字符验证码的完整代码开源分享的更多相关文章
- Python 基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现
基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现 by:授客 QQ:1033553122 测试环境 功能需求 实现思路 代码实践(关键技术点实现) 代码模块组织 ...
- 文字识别还能这样用?通过Python做文字识别到破解图片验证码
前期准备 1. 安装包,直接在终端上输入pip指令即可: # 发送浏览器请求 pip3 install requests # 文字识别 pip3 install pytesseract # 图片处理 ...
- 人脸识别系统 —— 基于python的人工智能识别核心
起因 自打用python+django写了一个点菜系统,就一直沉迷python编程.正好前几天公司boss要我研究一下人脸识别,于是我先用python编写了一个人脸识别系统的核心,用于之后的整个系统. ...
- 基于Python+Sqlite3实现最简单的CRUD
一.基本描述 使用Python,熟悉sqlite3的基本操作(查插删改),以及基本数据类型.事务(ACID). 准备工作:在sqlite3的官网上下载预编译的sqlite文件(windows) ...
- 一种基于python的人脸识别开源系统
今天在搜索人脸识别的文章时,无意中搜到一个比较开源代码,介绍说是这个系统人脸的识别率 是比较高的,可以达到:99.38%.这么高的识别率,着实把我吓了一跳.抱着实事求是的态度.个人 就做了一些验证和研 ...
- 基于python的人脸识别(检测人脸、眼睛、嘴巴、鼻子......)
本文链接:https://blog.csdn.net/James_Ray_Murphy/article/details/79209172 import numpy as np import cv2 # ...
- Python反编译调用有道翻译(附完整代码)
网易有道翻译是一款非常优秀的产品,他们的神经网络翻译真的挺无敌.无奈有道客户端实在是太难用了,而且在某些具体场景 (比如对网站进行批量翻译) 无法使用,而有道的云服务又特别的贵,一般人是无法 ...
- Python常用的库简单介绍一下
Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...
- [验证码识别技术]字符验证码杀手--CNN
字符验证码杀手--CNN 1 abstract 目前随着深度学习,越来越蓬勃的发展,在图像识别和语音识别中也表现出了强大的生产力.对于普通的深度学习爱好者来说,一上来就去跑那边公开的大型数据库,比如I ...
随机推荐
- 点击页面其它地方隐藏该div的方法
思路一 第一种思路分两步 第一步:对document的click事件绑定事件处理程序,使其隐藏该div 第二步:对div的click事件绑定事件处理程序,阻止事件冒泡,防止其冒泡到document,而 ...
- form表单上传文件使用multipart请求处理
在开发Web应用程序时比较常见的功能之一,就是允许用户利用multipart请求将本地文件上传到服务器,而这正是Grails的坚固基石——spring MVC其中的一个优势.Spring通过对Serv ...
- Lamp单独安装(windows下)
安装的软件清单:apache_2.2.9-win32-x86-openssl-0.9.8h-r2.msimysql-5.1.28-rc-win32.zipphp-5.2.6-Win32.zipphpM ...
- 解决jenkins下使用HTML Publisher插件后查看html报告显示不正常 以jmeter报告为例
jenkins 配置使用html publisher查看jmeter html报告时,发现显示不全,很多东西显示不了. 项目配置: 查看html报告异常(很多资源无法加载): 控制台查看加 ...
- cssradius
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 怎么使用CURL传输工具发送get或者post指令
1.先下载CURL,见网盘 2.使用,可以直接到doc,cd到curl.exe目录,然后执行 或者用脚本 Set exeRs = WshShell.Exec("curl.exe -F &qu ...
- 跨进程通信之Messenger
1.简介 Messenger,顾名思义即为信使,通过它可以在不同进程中传递Message对象,通过在Message中放入我们需要的入局,就可以轻松实现数据的跨进程传递了.Messenger是一种轻量级 ...
- Linux 下挂在ntfs 硬盘
CentOS 7 下想要挂载NTFS的文件系统该怎么办呢? 我们需要一个NTFS-3G工具,并编译它之后在mount就可以了,就这么简单. 首先要进入官网下载NTFS-3G工具 http://www. ...
- kaptcha 验证码组件使用
kaptcha 验证码组件使用简介 kaptcha 是一个非常实用的验证码生成工具.有了它,你可以生成各种样式的验证码,因为它是可配置的.kaptcha工作的原理是调用 com.google.co ...
- 百度云bcc建站
一.购买百度云服务 1.百度云bcc购买网页http://bce.baidu.com/product/bcc.html 2.买完后管理:http://console.bce.baidu.com/bcc ...