• 首页
  • 狐文
  • 狐图
  • About
狐窝
OvO
  1. 首页
  2. 未分类
  3. 正文

知识库 : 使用Tesseract识别弱验证码

2017年08月08日 219点热度 0人点赞 0条评论
2015-07-08 from---http://udn.yyuap.com/doc/ae/920457.html

摘要

1.验证码
2.验证码识别思路
3.验证码的强弱
4.Tesseract
5.Tesseract识别验证码示例

1.验证码

Wikipedia中验证码定义如下:

A CAPTCHA (an acronym for "Completely Automated Public Turing test to tell Computers and Humans Apart") is a type of challenge-response test used in computing to determine whether or not the user is human.

翻译为中文就是:

全自动区分计算机和人类的公开图灵测试,是一种区分用户是计算机和人的公共全自动程序。

验证码有很多种形式,最常见的就是图片验证码(输入图片中的文本进行验证),其他形式还有音频验证码、动画验证码、短信验证码、视频验证码等形式,本文只讨论图片验证码。

2.验证码识别思路

通用的验证码识别是很难做到的,在识别与反识别的斗争中,不同的验证码都演化出了不同的反识别方式,不同的验证码往往需要使用不同的方式来破解验证码的反识别手段。

下面看一组不同展现方式的图片验证码:

验证码识别的步骤如下:

a.二值化
去噪,去掉图片中的噪点,干扰线,干扰字符等,将图片转为二进制的矩阵
b.分割
将图片中的单个字符切分出来
c.标准化
还原旋转、扭曲,骨架细化
d.识别单字符
单字符识别

上面的步骤只是一个大概的思路,对于某些验证码可能一些步骤是不必要的,对于某些验证码可能一些步骤是不可实现的,对于某些验证码可能要改变步骤的顺序或者将一些步骤合并。

3.验证码的强弱

验证码通常会采取一定手段使验证码识别在二值化、分割、标准化三个步骤中增加识别的难度。下面看不同步骤的例子

a.加干扰(对应二值化)

几乎没有干扰,很容易二值化
干扰线,可以剔除固定颜色宽度的横竖线段来消除,二值化比较容易
干扰线、点与文字颜色相近,二值化比较困难

b.防分割

垂直字符像素加和为0处分割,很容易
部分字符粘连,分割比较困难
全部字符粘连,很难分割

c.扭曲(对应标准化)

印刷体,没有扭曲
印刷体,所有字符扭曲一致
手写体,扭曲不一致

加干扰、防分割、扭曲中,干扰通常可以使用特定的方式去掉,可以使用Shape Contents匹配扭曲字符,

分割的难度往往决定了验证码识别的难度,对于颜色相同又完全粘连的字符,比如google的验证码,目前是没法做到5%以上的识别率的,不过google的验证码基本上人类也只有30%的识别率

下面给出某国外验证码识别服务的一部分验证码识别率数据:

4.Tesseract

Wikipedia介绍:

Tesseract is probably the most accurate open source OCR engine available. Combined with the Leptonica Image Processing Library it can read a wide variety of image formats and convert them to text in over 60 languages. It was one of the top 3 engines in the 1995 UNLV Accuracy test. Between 1995 and 2006 it had little work done on it, but since then it has been improved extensively by Google. It is released under the Apache License 2.0.

项目地址:

https://code.google.com/p/tesseract-ocr/

5.Tesseract识别验证码示例

需要的工具:tesseract-ocr、pytesseract(python模块)、PIL或pillow(python模块)

代码示例:

二值化、分割、标准化三个步骤中,对于粘连不严重的验证码Tesseract能很好地处理分割和标准化步骤,我们可以自己处理二值化,然后把剩下的所有工作交给Tesseract处理;

首先写一个pycaptcha模块,负责图片验证码的下载、转换、识别

然后编写测试代码

某招聘网站的验证码测试结果如下:

标签: 暂无
最后更新:2017年08月08日

OvO

狐狸

点赞
< 上一篇
下一篇 >
最新 热点 随机
最新 热点 随机
brave编译打包时dump_syms报错Couldn't locate EXE or DLL file 使用Windows Kits创建PE 及精简镜像 Windows精简部署相关简易内容 APC UPS SUA1000ICH 踩坑记 TrueNAS SCALE虚拟机无法 Ping主机 TrueNas Scale libvirt-sock RDMA RoCE相关资料 Linux系统修改网卡名(eth0-3) Linux系统打开SRIOV 构建android内核时DTC工具中的多个定义错误 Windows 来宾系统提示“安全删除硬件” 修改jar的三种方法(反编译jar) 如何在 Debian 10上安装和配置 VNC Openwrt内SR-IOV网卡桥接问题 Linux下编译android 时报错loadlocale.c:130 windows 查看文件夹被那个进程占用 MongoDB中的多表关联 mongodb 学习记录
mitmproxy 调试方法 21款响应式网站设计工具 pycharm运行scrapy项目 KMS激活专用:所有Windows版本的GVLK密钥对照表 GeoIP.dat.gz和GeoLiteCity.dat.gz获取 linux环境 :Linux 共享库LIBRARY_PATH, LD_LIBRARY_PATH 与ld.so.conf vsftpd 安装以及配置虚拟用户上传下载 超微主板风扇频繁切换转速 Torrent下载工具推荐 chrome 扩展推荐 WIN10禁用WIN+F Oracle 查看表空间的大小及使用情况sql语句 SpringBoot配置文件说明 瑞斯康达 ISCOM HT8151 光猫破解超级管理员密码 18 款名不见经传的下载工具 如何禁用samba身份验证 nginx重写错误的调试 Selenium WebDriver之JavaScript - 布瓜
标签聚合
e android 路由 ssl 网卡 git 文件 密码 编译 docker com chrome linux 下载 https http

COPYRIGHT © 2020 狐窝. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS