python爬虫学习笔记 3.9 (了解参考:训练Tesseract)

参考阅读:训练Tesseract

要使用 Tesseract 的功能,比如后面的示例中训练程序识别字母,要先在系统中设置一 个新的环境变量 $TESSDATA_PREFIX,让 Tesseract 知道训练的数据文件存储在哪里,然后搞一份tessdata数据文件,放到Tesseract目录下。

  • 在大多数 Linux 系统和 Mac OS X 系统上,你可以这么设置: $export TESSDATA_PREFIX=/usr/local/share/Tesseract

  • 在 Windows 系统上也类似,你可以通过下面这行命令设置环境变量: #setx TESSDATA_PREFIX C:\Program Files\Tesseract OCR\Tesseract

大多数其他的验证码都是比较简单的。例如,流行的 PHP 内容管理系统 Drupal 有一个著名的验证码模块 https://www.drupal.org/project/captcha,可以生成不同难度的验证码。

举个例子:

那么与其他验证码相比,为什么这个验证码更容易被人类和机器读懂呢?

  • 字母没有相互叠加在一起,在水平方向上也没有彼此交叉。也就是说,可以在每一个字 母外面画一个方框,而不会重叠在一起。

  • 图片没有背景色、线条或其他对 OCR 程序产生干扰的噪点。

  • 虽然不能因一个图片下定论,但是这个验证码用的字体种类很少,而且用的是 sans-serif 字体(像“4”和“M”)和一种手写形式的字体(像“m”“C”和“3”)。

  • 白色背景色与深色字母之间的对比度很高。
    这个验证码只做了一点点改变,就让 OCR 程序很难识别。

  • 字母和数据都使用了,这会增加待搜索字符的数量。

  • 字母随机的倾斜程度会迷惑 OCR 软件,但是人类还是很容易识别的。

  • 那个比较陌生的手写字体很有挑战性,在“C”和“3”里面还有额外的线条。

  • 另外这个非常小的小写“m”,计算机需要进行额外的训练才能识别。
    用下面的代码运行 Tesseract 识别图片:

tesseract captchaExample.png output

我们得到的结果 output.txt 是: 4N\,,,C<3

创建样本库训练Tesseract

要训练 Tesseract 识别一种文字,无论是晦涩难懂的字体还是验证码,你都需要向 Tesseract 提供每个字符不同形式的样本。

首先要收集大量的验证码样本,样本的数量和复杂程度,会决定训练的效果。第二步是准确地告诉 Tesseract 一张图片中的每个字符是什么,以及每个字符的具体位置。

这里需要创建一些矩形定位文件(box file),一个验证码图片生成一个矩形定位文件,也可以通过jTessBoxEditor软件来修改矩形的定位。

一个图片的矩形定位文件如下所示:

  4  15 26 33 55 0M  38 13 67 45 0m  79 15 101 26 0C  111 33 136 60 03  147 17 176 45 0

第一列符号是图片中的每个字符,后面的 4 个数字分别是包围这个字符的最小矩形的坐标 (图片左下角是原点 (0,0),4 个数字分别对应每个字符的左下角 x 坐标、左下角 y 坐标、右上角 x 坐标和右上角 y 坐标),最后一个数字“0”表示图片样本的编号。

矩形定位文件必须保存在一个 .box 后缀的文本文件中,(例如 4MmC3.box)。

博客园的一篇不错的训练教程:http://www.cnblogs.com/mjorcen/p/3800739.html?utm_source=tuicool&utm_medium=referral

前面的内容只是对 Tesseract 库的字体训练和识别能力的一个简略概述。如果你对 Tesseract 的其他训练方法感兴趣,甚至打算建立自己的验证码训练文件库,推荐阅读 Tesseract 官方文档:https://github.com/tesseract-ocr/tesseract/wiki
,加油!

python爬虫学习笔记 3.9 (了解参考:训练Tesseract)相关推荐

  1. Python爬虫学习笔记 -- 爬取糗事百科

    Python爬虫学习笔记 -- 爬取糗事百科 代码存放地址: https://github.com/xyls2011/python/tree/master/qiushibaike 爬取网址:https ...

  2. python爬虫学习笔记3.2-urllib和request练习

    python爬虫学习笔记3.2-urllib和request练习 一.urllib练习 1.百度贴吧案例 需求 分析 手动测试查询流程 观察页面 分析特殊部分 https://tieba.baidu. ...

  3. python爬虫学习笔记 1.9 (Handler处理器 和 自定义Opener)

    python爬虫学习笔记 1.1(通用爬虫和聚焦爬虫) python爬虫学习笔记 1.2 ( HTTP和HTTPS ) python爬虫学习笔记 1.3 str和bytes的区别 python爬虫学习 ...

  4. python爬虫学习笔记2模拟登录与数据库

    前言 为了加入学校里面一个技术小组,我接受了写一个爬取学校网站通知公告的任务.这个任务比以前写的爬虫更难的地方在于,需要模拟登录才能获得页面,以及将得到的数据存入数据库. 本文按照日期来记录我完成任务 ...

  5. python爬虫学习笔记一:网络爬虫入门

    参考书目 <python网络爬虫从入门到实践>唐松 第一章 网络爬虫入门 1.1 robots协议 举例:查看京东的robots协议 京东robots协议地址 User-agent: * ...

  6. Python爬虫学习笔记总结(一)

    〇. python 基础 先放上python 3 的官方文档:https://docs.python.org/3/ (看文档是个好习惯) 关于python 3 基础语法方面的东西,网上有很多,大家可以 ...

  7. 一入爬虫深似海,总结python爬虫学习笔记!

    正文 〇. python 基础 先放上python 3 的官方文档:https://docs.python.org/3/ (看文档是个好习惯) 关于python 3 基础语法方面的东西,网上有很多,大 ...

  8. 一入爬虫深似海,总结python爬虫学习笔记! 1

    正文 〇. python 基础 先放上python 3 的官方文档:https://docs.python.org/3/ (看文档是个好习惯) 关于python 3 基础语法方面的东西,网上有很多,大 ...

  9. Python爬虫学习笔记:概念、知识和简单应用

    Python爬虫:概念.知识和简单应用 什么是爬虫? 使用的开发工具 一个简单的爬虫实例 Web请求过程分析 HTTP协议 请求头中的重要内容 响应头中的重要内容 请求方式 requests 安装 G ...

最新文章

  1. 手把手Fiddler掌握
  2. mediumtext_mediumtext数据类型 | 学步园
  3. HTTP Continuation or non-HTTP traffic
  4. vue.js源码学习分享(一)
  5. java比python难_python java JAVA比python难多少?
  6. exe解包和重新打包_pyinstaller打包的exe太大?你需要嵌入式python玄学 前提篇
  7. maya中英文切换插件_老司机都在用的30款maya常用插件
  8. python 螺旋数组_LeetCode54,螺旋矩阵,一题学会一个重要技巧
  9. java计算器简单吗,java简单计算器
  10. 将十进制数转为N进制的方法
  11. Swift使用CoreLocation,你必须要看这一篇
  12. C#中的深度学习:预处理硬币检测数据集
  13. pip更新后怎么还是旧版本_微信号不能修改第二次怎么办?微信更新后还是不能修改微信号怎么办?...
  14. cam350怎么看顶层_CAM350软件怎么查看gerber文件 cam350导出gerber教程
  15. Qt实现窗口跳转(类似于看图软件中下一张和上一张)
  16. 奇葩报错之返回值为 -1073741515 (0xc0000135) ‘未找到依赖 dll‘
  17. 回首过去,抚心自问,是什么“毁了”你的大学生活?
  18. 高级查询(mysql)
  19. Fightting for your youth
  20. SimpleDateFormat的概述

热门文章

  1. Linux OS7 常用
  2. torch.repeat()
  3. 解决问题:Consider defining a bean of type ‘com.xxx.mapper.xxxMapper‘ in your configuration.
  4. 官方老爹之痛:为什么苹果能收到推送,而安卓不行?
  5. 微信支付及支付宝支付开发指南
  6. 转载知乎大神设置普通路由器支持IPV6
  7. 【输出一个静态“心形”图案、一个跳动的“心”——使用C++、C语言来实现】
  8. 《调和级数》python
  9. vuex中mutation和action的详细区别
  10. ipencil 无法与iPad配对