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相关推荐

  1. 《视觉SLAM进阶:从零开始手写VIO》第三讲 基于优化的IMU预积分与视觉信息融合 作业

    <视觉SLAM进阶:从零开始手写VIO>第三讲 基于优化的IMU预积分与视觉信息融合 作业 文章目录 <视觉SLAM进阶:从零开始手写VIO>第三讲 基于优化的IMU预积分与视 ...

  2. 比较完善的手写数组reduce方法

    手写数组reduce方法 看过其他的文章, 感觉他们实现的reduce方法不够完善, 分享一下自己写的比较完善的reduce方法, 如果错误的地方, 请留言给我 Array.prototype.new ...

  3. 手写字符串 trim 方法,保证浏览器的兼容性

    手写字符串 trim 方法,保证浏览器的兼容性 trim() 方法删除字符串首尾空白字符 手写trim方法: String.prototype.trim = function(){return thi ...

  4. android 人脸识别 方法研究,基于Android平台的人脸识别技术研究

    摘要: 在计算机视觉与模式识别领域中,人脸检测与识别技术是一个非常热门的研究课题,同时也具备非常广阔的商业价值.在诸多的目标检测算法中,基于AdaBoost算法的目标检测方法具有检测速度快,检测效果好 ...

  5. 使用Tesseract (OCR)实现简单的验证码识别(C#)+窗体淡入淡出效果

    来园子也有一段时间了,一直没时间写点东西,说实话刚开始也不知道写什么,一直以来对验证码识别比较感兴趣,曾经想着自己处理图形实现识别验证码, 不过感觉对我来说太难了,偶然中再网上发现了Tesseract ...

  6. AI识别 图片识别 微信小程序(手写OCR)

    使用腾讯云手写OCR API的微信小程序 GitHub地址 主要功能:识别图片形式的手写笔记并展示 //appid等作为全局变量定义在了app.js里//使用时需将相应字段添加到app.js文件中gl ...

  7. powerdesigner导入sql生成pdm没有注释_PDM手写签名实现方法

    我们知道文件在PDM中审批完成后,可以通过流程操作将审批人员的姓名填写到对应的栏位,但是常规情况下,填写的都是电脑常规字体的签名:然而,如今越来越多的客户希望签上的是他们的手写签名.本文将介绍如何在P ...

  8. 手写系列之手写LM(Levenberg–Marquardt)算法(基于eigen)

    紧接上次的手写高斯牛顿,今天顺便将LM算法也进行了手写实现,并且自己基于eigen的高斯牛顿进行了对比,可以很明显的看到,LM的算法收敛更快,精度也略胜一筹,这次高博的书不够用了,参考网上伪代码进行实 ...

  9. python验证码识别训练模型_python 基于机器学习识别验证码

    1.背景 验证码自动识别在模拟登陆上使用的较为广泛,一直有耳闻好多人在使用机器学习来识别验证码,最近因为刚好接触这方面的知识,所以特定研究了一番.发现网上已有很多基于machine learning的 ...

  10. ocr智能图文识别 tess4j 图文,验证码识别

    最近写爬虫采集数据,遇到网站登录需要验证码校验,想了想有两种解决办法 1,利用htmlunit,将验证码输入到swing中,并弹出一个输入框,手动输入验证码,这种实现方式,如果网站需要登录一次可以使用 ...

最新文章

  1. 意外收获字节跳动内部资料,Android岗
  2. PMCAFF《产品经理第一课》第三期开始报名!天团导师再次升级,631培训模式升级...
  3. spring 注解上传文件 @RequestParam,FormData上传文件
  4. 跟锦数学190314
  5. @Html.Action()
  6. CodeForces - 1486B Eastern Exhibition(二维中位数)
  7. Dell做RAID配置图文全教程
  8. 用python语言模拟微信红包_python 模拟微信抢红包 基础语法实现demo
  9. linux 解压 视频插件,linux下压缩解压缩命令
  10. 启动Intent之前先检查是否有合适的接收者
  11. cypress离线安装_【拆一个高端货】 美国NI公司 GPIB-USB转接卡 长标题
  12. 「最全」电子元器件图片、名称、符号图形对照(精编请收藏)
  13. smp irq affinity介绍
  14. 交互电子白板有哪些特点?电子白板功能介绍
  15. Ubuntu软件包升级失败的终极修复方法
  16. 大牛博士是如何进行文献检索和阅读的
  17. 2019. 6.14___增加CSDC的博客文章
  18. Mac OS 输入adb命令无效(zsh: command not found: adb)的解决方法
  19. 计算机二级考试mysql内容_计算机二级MySQL考试考什么内容(二)
  20. 浅析未来大数据的发展趋势

热门文章

  1. 第3章 正则表达式1
  2. android 判断服务是否运行
  3. asp.net千奇百怪的日历
  4. Maven - Maven3实战学习笔记(3)使用maven构建Web应用
  5. MySQL-第一篇认识MySQL
  6. 一个域名下多个Vue项目
  7. 02-body标签中相关标签
  8. 7-16 Sort with Swap(0, i)(25 分)
  9. 如何定制 Calico 网络 Policy - 每天5分钟玩转 Docker 容器技术(70)
  10. 使用ScheduledExecutorService实现Timer