Tesseract与tess4j验证码识别

本文介绍了如何使用Tesseract OCR引擎和tess4j库进行验证码识别。通过图像预处理、Tesseract训练和采样训练提高识别准确率,并在Java环境中使用tess4j进行识别。
摘要由CSDN通过智能技术生成

验证码,英文名CAPTCHA,全称叫做:全自动区分计算机和人类的图灵测试。验证码主要为了防一些不怀好意的人(程序猿),避免批量注册账户,暴力尝试多次登录失败等一些恶意行为。

最经典的就是文字型的验证码:

搜狐验证码腾讯验证码阿里云验证码搜狐快站验证码新浪微博验证码网易邮箱验证码新浪微博新浪华为验证码中国移动中国移动中国移动中国移动中国移动中国移动支付宝验证码360验证码金山网易邮箱验证码直聘拉钩世纪天成

简单的文字型验证码容易被OCR识别,所以程序猿们让文字随机旋转、扭曲、黏连,在验证码上加干扰线、加噪点以降低自动化程序的识别率,但是很多扭曲变形的文字连人都识别不出来,比如中国移动这个验证码:

中国移动验证码

这些诡异的验证码反而降低了用户体验,所以现在比较流行的是行为式验证码

用户点击

用户滑动

用户滑动

这篇文章主要讨论入门级的传统文字型验证码的识别。

因为我自己也没有深入研究过图形学,所以这里拿一个最简单验证码举例:

验证码

Tesseract

这里用开源的Tesseract-OCR引擎来识别字符,Tesseract目前最新版是4.0,Wiki里给出了各平台的安装方式。

tesseract-ocr是谷歌赞助开发的一款开源的光学字符识别(Optical character recognition)引擎,通常拿来进行文档扫描,图片字符识别。最常见的例子就是车牌号的识别与pdf扫描

Windows下载地址:https://github.com/tesseract-ocr/tesseract/wiki/Downloads

除了软件安装包,还有官方提供的训练数据:https://github.com/tesseract-ocr/tesseract/wiki/Data-Files

我们需要设置TESSDATA_PREFIX变量为训练数据所在的目录。

验证码

将Tesseract安装目录配置到环境变量后,我们可以直接用tesseract命令来对上面的验证码进行识别:

tesseract命令识别验证码

--psm选项用于是page segmentation mode,用于设置分页模式,tesseract有13中分页模式,因为验证码中字符基本在一行显示,所以选用7单行文本模式。

stdout表示我们将识别结果输出到标准输出流(也就是控制台),如果你想把识别结果输出到一个文件中可以直接指定文件名。比如tesseract CheckCode.jpg --psm 7 out

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值