paip.手写OCR识别方法总结--基于验证码识别... 1
paip.手写OCR识别方法总结--基于验证码识别
paip.手写OCR识别方法总结--基于验证码识别... 1
前言... 1
需要达到的技术指标... 1
版面分析与分行... 2
分词截取图片... 2
去色--灰度处理... 2
去噪点... 2
去杂色,转换为黑白图片... 2
分割图片... 3
得到每个字符的特征码... 3
进行字母特征码匹配与单词拼写检查... 3
Deathbycaptcha人工打码... 4
GOOGLE reCAPTCHA社会化工程... 4
参考... 4
前言
很多情况下,我们需要手写识别文字处理…对于印刷体我们可以用OCR来解决..
但对于手写体的识别。则效果不佳。即使有训练功能的OCR。。
而验证码的识别技术则很大程序上与手写OCR识别相同
需要达到的技术指标
识别文字: 英文手写体(正规大写),数字,标点
字号限制:可以适当限制普通字号
识别时间:机器方式1秒, 人工打码 10秒左右..
识别率: 需要达到99%左右
书写纸张:普通纸张,最好有格式线,可以限定行的位置.。纸颜色为白色
书写工具:普通笔
图片来源:最好扫描仪
文字颜色:常用的兰色或者黑色
书写时的注意事项:全部大写,尽可能正规书写..标点符号写在中间,要醒目..单词间的间隔适当多一些空白..以利于识别
版面分析与分行
分行可以使用指定TOP和HEIGHT来人工做模块进行分行,以简化操作
分词截取图片
由于是基于验证码进行手写体的识别,所以必须进行分词来识别,否则过长无法识别..
去色--灰度处理
将文字图片去色(将彩色转换为灰度)去色是为了进一步做成黑白双色图片。
C# code
Color c = sourcebm.GetPixel(x、y); int luma = (int)(c.R * 0.3 + c.G * 0.59 + c.B * 0.11);//转换灰度的算法 sourcebm.SetPixel(x、y、Color.FromArgb(luma、luma、luma));
去噪点
将周边噪点去除…然后文字周围的离散的点去除..
去杂色,转换为黑白图片
从灰度图片中可以看出,数字的颜色比较深,而杂色都是比较浅,所以可以设定一个临界颜色值,颜色高于或等于这个值的设置为白色,低于这个值的设置为黑色。
C# code
Color c = sourcebm.GetPixel(x、y); if (c.R >= critical_value) sourcebm.SetPixel(x、y、Color.FromArgb(255、255、255));
C# code
else sourcebm.SetPixel(x、y、Color.FromArgb(0、0、0));
分割图片
书写的时候尽可能每个字母宽度一致,字母间要有空白..以利于切割单个字母图片
得到每个字符的特征码
在每个字符的边界内,检测每个像素,如果象素为白色则为「0」,如果象素为黑色则为「1」,将「0」「1」连起来就是该数字或字符的特征码。
C# code
Color c = sourcebm.GetPixel(x、y); if (c.R == 0) str = str + "1"; else str = str + "0";
进行字母特征码匹配与单词拼写检查
特征码与库的进行匹配。。可以使用字串匹配算法进行匹配。。
然后再结合单词字典进行拼写检查…从而得出最佳匹配字符..
Deathbycaptcha人工打码
Deathbycaptcha提供的验证码服务可以来用识别手写文字..95%的识别率,结合字典进行拼写检查,应该可以达到99%的识别率.. 好向不能识别标点符号..
不过唯一的缺点是成本。。识别一个单词大约需要1分钱。..一篇文章识别下来估计就要一百块了,成本太高了..
GOOGLE reCAPTCHA社会化工程
GOOGLE reCAPTCHA比较好.。。可以大规模实施降低成本…
参考
【转】C#识别验证码—百度空间
天涯博客里的评论验证码为例,说明验证码识别的基本思路和方法:
paip.手写OCR识别方法总结--基于验证码识别... 1相关推荐
- 《视觉SLAM进阶:从零开始手写VIO》第三讲 基于优化的IMU预积分与视觉信息融合 作业
<视觉SLAM进阶:从零开始手写VIO>第三讲 基于优化的IMU预积分与视觉信息融合 作业 文章目录 <视觉SLAM进阶:从零开始手写VIO>第三讲 基于优化的IMU预积分与视 ...
- 比较完善的手写数组reduce方法
手写数组reduce方法 看过其他的文章, 感觉他们实现的reduce方法不够完善, 分享一下自己写的比较完善的reduce方法, 如果错误的地方, 请留言给我 Array.prototype.new ...
- 手写字符串 trim 方法,保证浏览器的兼容性
手写字符串 trim 方法,保证浏览器的兼容性 trim() 方法删除字符串首尾空白字符 手写trim方法: String.prototype.trim = function(){return thi ...
- android 人脸识别 方法研究,基于Android平台的人脸识别技术研究
摘要: 在计算机视觉与模式识别领域中,人脸检测与识别技术是一个非常热门的研究课题,同时也具备非常广阔的商业价值.在诸多的目标检测算法中,基于AdaBoost算法的目标检测方法具有检测速度快,检测效果好 ...
- 使用Tesseract (OCR)实现简单的验证码识别(C#)+窗体淡入淡出效果
来园子也有一段时间了,一直没时间写点东西,说实话刚开始也不知道写什么,一直以来对验证码识别比较感兴趣,曾经想着自己处理图形实现识别验证码, 不过感觉对我来说太难了,偶然中再网上发现了Tesseract ...
- AI识别 图片识别 微信小程序(手写OCR)
使用腾讯云手写OCR API的微信小程序 GitHub地址 主要功能:识别图片形式的手写笔记并展示 //appid等作为全局变量定义在了app.js里//使用时需将相应字段添加到app.js文件中gl ...
- powerdesigner导入sql生成pdm没有注释_PDM手写签名实现方法
我们知道文件在PDM中审批完成后,可以通过流程操作将审批人员的姓名填写到对应的栏位,但是常规情况下,填写的都是电脑常规字体的签名:然而,如今越来越多的客户希望签上的是他们的手写签名.本文将介绍如何在P ...
- 手写系列之手写LM(Levenberg–Marquardt)算法(基于eigen)
紧接上次的手写高斯牛顿,今天顺便将LM算法也进行了手写实现,并且自己基于eigen的高斯牛顿进行了对比,可以很明显的看到,LM的算法收敛更快,精度也略胜一筹,这次高博的书不够用了,参考网上伪代码进行实 ...
- python验证码识别训练模型_python 基于机器学习识别验证码
1.背景 验证码自动识别在模拟登陆上使用的较为广泛,一直有耳闻好多人在使用机器学习来识别验证码,最近因为刚好接触这方面的知识,所以特定研究了一番.发现网上已有很多基于machine learning的 ...
- ocr智能图文识别 tess4j 图文,验证码识别
最近写爬虫采集数据,遇到网站登录需要验证码校验,想了想有两种解决办法 1,利用htmlunit,将验证码输入到swing中,并弹出一个输入框,手动输入验证码,这种实现方式,如果网站需要登录一次可以使用 ...
最新文章
- 意外收获字节跳动内部资料,Android岗
- PMCAFF《产品经理第一课》第三期开始报名!天团导师再次升级,631培训模式升级...
- spring 注解上传文件 @RequestParam,FormData上传文件
- 跟锦数学190314
- @Html.Action()
- CodeForces - 1486B Eastern Exhibition(二维中位数)
- Dell做RAID配置图文全教程
- 用python语言模拟微信红包_python 模拟微信抢红包 基础语法实现demo
- linux 解压 视频插件,linux下压缩解压缩命令
- 启动Intent之前先检查是否有合适的接收者
- cypress离线安装_【拆一个高端货】 美国NI公司 GPIB-USB转接卡 长标题
- 「最全」电子元器件图片、名称、符号图形对照(精编请收藏)
- smp irq affinity介绍
- 交互电子白板有哪些特点?电子白板功能介绍
- Ubuntu软件包升级失败的终极修复方法
- 大牛博士是如何进行文献检索和阅读的
- 2019. 6.14___增加CSDC的博客文章
- Mac OS 输入adb命令无效(zsh: command not found: adb)的解决方法
- 计算机二级考试mysql内容_计算机二级MySQL考试考什么内容(二)
- 浅析未来大数据的发展趋势