# Python3 爬虫学习笔记 C12

TRHX

2019-09-05

Python3 学习笔记 / 爬虫学习

字数统计:

827字

阅读时长≈

4分

> Python3 爬虫学习笔记第十二章 —— 【验证码对抗系列 — 图形验证码】

# 【12.1】关于普通图形验证码

普通图形验证码一般由四位纯数字、纯字母或者字母数字组合构成，是最常见的验证码，也是最简单的验证码，利用 tesserocr 或者 pytesseract 库即可识别此类验证码，前提是已经安装好 Tesseract-OCR 软件

<fancybox>
</fancybox>

# 【12.2】tesserocr 库识别验证码

简单示例：

    1
    2
    3
    4
    5
    6

    import tesserocr
    from PIL import Image

    image = Image.open('code.png')
    result = tesserocr.image_to_text(image)
    print(result)

新建一个 Image 对象，调用 tesserocr 的 `image_to_text()` 方法，传入 Image 对象即可完成识别，另一种方法：

    1
    2

    import tesserocr
    print(tesserocr.file_to_text('code.png'))

# 【12.3】pytesseract 库识别验证码

简单示例：

    1
    2
    3
    4
    5
    6
    7

    import pytesseract
    from PIL import Image

    img = Image.open('code.png')
    img = img.convert('RGB')
    img.show()
    print(pytesseract.image_to_string(img))

pytesseract 的各种方法：

- get_tesseract_version：返回 Tesseract 的版本信息；
- image_to_string：将图像上的 Tesseract OCR 运行结果返回到字符串；
- image_to_boxes：返回包含已识别字符及其框边界的结果；
- image_to_data：返回包含框边界，置信度和其他信息的结果。需要 Tesseract 3.05+；
- image_to_osd：返回包含有关方向和脚本检测的信息的结果。

有关参数：

`image_to_data(image, lang='', config='', nice=0, output_type=Output.STRING)`

- image：图像对象；
- lang：Tesseract 语言代码字符串；
- config：任何其他配置为字符串，例如：config=’–psm 6’；
- nice：修改 Tesseract 运行的处理器优先级。Windows不支持。尼斯调整了类似 unix 的流程的优点；
- output_type：类属性，指定输出的类型，默认为string。

lang 参数，常见语言代码如下：

- chi_sim：简体中文
- chi_tra：繁体中文
- eng：英文
- rus：俄罗斯语
- fra：法语
- deu：德语
- jpn：日语

# 【12.4】验证码处理

利用 Image 对象的 `convert()` 方法传入不同参数可以对验证码做一些额外的处理，如转灰度、二值化等操作，经过处理过后的验证码会更加容易被识别，识别准确度更高，各种参数及含义：

- 1：1位像素，黑白，每字节一个像素存储；
- L：8位像素，黑白；
- P：8位像素，使用调色板映射到任何其他模式；
- RGB：3x8位像素，真彩色；
- RGBA：4x8位像素，带透明度掩模的真彩色；
- CMYK：4x8位像素，分色；
- YCbCr：3x8位像素，彩色视频格式；
- I：32位有符号整数像素；
- F：32位浮点像素。

示例：

    1
    2
    3
    4
    5
    6
    7
    8

    import pytesseract
    from PIL import Image

    image = Image.open('code.png')
    image = image.convert('L')
    image.show()
    result = pytesseract.image_to_string(image)
    print(result)

Image 对象的 `convert()` 方法参数传入 L，即可将图片转化为灰度图像，转换前后对比：

<fancybox>
</fancybox>

    1
    2
    3
    4
    5
    6
    7
    8

    import pytesseract
    from PIL import Image

    image = Image.open('code.png')
    image = image.convert('1')
    image.show()
    result = pytesseract.image_to_string(image)
    print(result)

Image 对象的 `convert()` 方法参数传入 1，即可将图片进行二值化处理，处理前后对比：

<fancybox>
</fancybox>

# 【12.5】tesserocr 与 pytesserocr 相关资料

- tesserocr GitHub：https://github.com/sirfz/tesserocr

- tesserocr PyPI：https://pypi.python.org/pypi/tesserocr

- pytesserocr GitHub：https://github.com/madmaze/pytesseract

- pytesserocr PyPI：https://pypi.org/project/pytesseract/

- Tesseract-OCR 下载地址：http://digi.bib.uni-mannheim.de/tesseract

- tesseract GitHub：https://github.com/tesseract-ocr/tesseract

- tesseract 语言包：https://github.com/tesseract-ocr/tessdata

- tesseract 文档：https://github.com/tesseract-ocr/tesseract/wiki/Documentation

您的喜欢是作者写作最大的动力！❤️

- PayPal
- AliPay
- WeChatPay
- QQPay

Donate

最后更新于 2019年9月24日

爬虫

图形验证码

###### 上一页

#### Python3 爬虫学习笔记 C13

###### 爬虫 滑动验证码

###### 下一页

#### Python3 爬虫学习笔记 C11

###### 爬虫 MongoDB

#### 评论

## ๑۩ﺴ TRHX ﺴ۩๑

本文目录
欢迎光临

Hexo QQ 交流群 Telegram 交流群

CSDN 内容合伙人

文章分类

- BLOG
  (4)
- CDN
  (1)
- Hexo
  (9)
- Java
  (1)
- Linux
  (2)
- Markdown
  (2)
- Python 数据分析
  (27)
- Matplotlib
  (11)
- NumPy
  (6)
- Pandas
  (10)
- Python3 学习笔记
  (41)
- 基础学习
  (9)
- 学习经验
  (4)
- 爬虫学习
  (18)
- 爬虫实战
  (10)
- VPS
  (1)
- WEB前端
  (2)
- 图床
  (1)

热门标签
12306 3D图 58同城 Ajax BLOG Beautiful Soup CDN Coding Pages DataFrame Deepin Elicpse GitHub Pages Github Github Pages GroupBy HTTPS Hexo ICP备案 IO操作 Index JDBC JS 预加载 LaTeX Markdown Material X Matplotlib MongoDB MySQL NumPy PEP8 Pandas PicGo Pygame Python Redis SEO SQL Server 2012 SSR Selenium Series Ubuntu User-Agent VMware VPS XPath if语句 input()函数 instant.page jsDelivr lxml matplotibrc pyspider requests spfk urllib while循环 主题个性化 代理 位运算 公安备案 函数 函数应用 分割 切片 列表 判断函数 前程无忧 变量 合并数据集 哔哩哔哩 图例 图床 图形验证码 垃圾 备份 子图 字典 字符串函数 安居客 层级索引 年终总结 广播 异常 技巧 拼接 排序 排序函数 操作列表 散点图 数学函数 数据分裂 数据可视化 数据合并 数据替换 数据类型 数据读写 数据重塑 数组 文件 文件储存 无界面浏览器 时间序列 映射 条件函数 条形图 极区图 极坐标图 柱状图 模块 正则表达式 滑动验证码 点触验证码 爬虫 猫眼电影 瓜子二手车 画布 直方图 矩阵 等值线图 等高线图 算术函数 算术运算 类 索引 线性代数 线性图 统计函数 统计描述 统计计算 继承 编辑器 缺失值 网格 肺炎疫情 虎扑论坛 补丁 豆瓣电影 迭代 雷达图 饼状图
最近在听