图形验证码内容识别——pytesseract

  • 一、目的
  • 二、实现方式
  • 三、环境准备
  • 四、代码实现
  • 五、拓展

一、目的

我们工作中会遇到一些需要把图片中的文字识别出来使用的例子,比如:图形验证码、提取图片中的文章等

如果工作量比较小或者不需要重复执行的话人工就可以啦,但是恰恰一些场景是需要我们实现自动化识别的

这就很烦,急需一个来实现此功能的方法,我们常用的是OCR识别,但是怎么识别?

二、实现方式

本文主要是通过python的pytesseract库来实现图片中文字的识别,

实际是通过pytesseract调用tesseract的OCR来进行识别图片中的文案内容,然后把识别出的内容进行打印等操作

三、环境准备

  • pytesseract库

    • 安装:pip install pytesseract【因为要调用pytesseract库所以需要提前安装】
  • tesseract

    • 安装:https://blog.csdn.net/Alexa_/article/details/121192132

    • 语言包讲述 :在安装时记得选择语言包,我们常用的是英文、中文(默认是英文):eng、chi_sim(可以在安装包路径\tessdata下查看是.traineddata文件,缺少的话也可以单独下载:https://developer.aliyun.com/article/832266)

    • 设置pytesseract.py调用OCR路径: 【安装好pytesseract之后调用会报错原因是没有指定OCR的路径】
      修改文件:pytesseract库所在文件夹的pytesseract.py文件(没设置路径报错文件点击跳转可以快速进入)

四、代码实现

import pytesseractdef images_to_string(num):# 打开本地图片,或者网络获取也可以name = '验证码\\'+ str(num) +'.png'img1 = Image.open(name)# 获取图片的长宽用于复杂背景图片文字的定位提取w, h = img1.sizeprint('Original image size: %sx%s' % (w, h))# 因为是PNG图片,像素不是直接以RGB保存的,PNG的每个像素里还有透明度img1rbg = img1.convert('RGB')# 读取全部的像素数据src_strlist = img1rbg.load()# 获取主干颜色用于提取出确定颜色的文字,防止背景干扰# 可以打开图片然后画图工具标一下就能获取到想要颜色的坐标data = src_strlist[119, 26]print(data)# 双层循环开始替换全部的像素点颜色确保只保留符合我们要求的文字颜色for x in range(0, w):for y in range(0, h):# 判断当前点颜色是否等于主干颜色co = src_strlist[x, y]if co[0] < 30 and co[1] <30 :src_strlist[x, y] = (0, 0, 0)else:src_strlist[x, y] = (255, 255, 255)# 输出处理过的图片,用于查看nume01 = '验证码\\处理\\'+str(num)+ '.png'img1rbg.save(nume01)# 直接调用内存里的PIL image对象进行图片识别,这里lang是声明识别文字使用的语言包,默认是英文,chi_sim代表中文text = pytesseract.image_to_string(img1rbg,lang='chi_sim')# 打印结果print(text)# 保存 识别出的文字到文本with open('验证码\\11.txt','ab') as fier:fier.write('\n'.encode())fier.write(('这是第几张图片'+str(num)).encode())fier.write('\n'.encode())fier.write(text.encode())# 调用函数,提取本地15张图片中的文字到TXT文件
for num in range(15):images_to_string(num)

五、拓展

遗留问题:对于规整的文案识别清晰度很高,但是对于一些崎岖的文字/数字识别很容易出问题。

图形验证码文字识别——pytesseract相关推荐

  1. Class 18 - 1 图形验证码的识别

    一.图形验证码的识别 先将验证码的图片保存到本. 打开开发者工具,找到验证码元素.验证码元素是一张图片,src 属性是 CheckCode.aspx.打开链接 http://my.cnki.net/e ...

  2. 传统图形验证码文字获取,字体工整

    黑白图片文字获取,字体必须工整 from PIL import Imageimport pytesseractimage = Image.open('./images/tesseracttest.jp ...

  3. Python脚本破解图形验证码(tesserocr和pytesseract)

    在学习之前,我们先了解OCR.tesseract.tesserocr.pytesseract和opencv这几个跟图片处理有关的库. OCR(Optical Character Recognition ...

  4. 爬虫从入门到精通(15) | 使用Python-OCR识别库对图形验证码进行识别

    文章目录 一.tesseract破解验证码 1.下载安装tesseract 2.python安装tesseract模块及其配置 3.demo测试 二.muggle_ocr破解和识别验证码 1.介绍 2 ...

  5. 三十四、使用pytesser3 和pillow完成图形验证码的识别

    @Author: Runsen 文章目录 灰度化 二值化 降噪 灰度化 像素点是最小的图片单元,一张图片由很多像素点构成,一个像素点的颜色是由RGB三个值来表现的,所以一个像素点对应三个颜色向量矩阵, ...

  6. 对登录接口的简单图形验证码进行识别 20221004

    Python黑客编程原理与实战--作业(二) 1/编程题 \1. 语言限定为python3 环境准备,使用虚拟python3环境 pip3 install virtualenv virtualenv ...

  7. 网络爬虫笔记—图形验证码识别

    网络爬虫笔记-图形验证码识别 <兄弟们,本文章开启了关注后阅读.大家如不想关注,可直接微信搜索"宏蜘蛛"或文章标题,查看文章.> 1.什么是图形验证码 像知网注册界面的 ...

  8. 第八部分 验证码的识别(极验验证码)

    前言: 验证码是众多网站采取的反爬措施.验证码的花样也很多,主要有下面这几种类验证码: 图形验证码:数字.英文字母.混淆曲线组合成的验证码. 行为验证码:识别文字,点击与文字相符的图片验证码. 交互式 ...

  9. 验证码的识别(极验验证码)

    本文介绍了几种常见的验证码类型以及它们的识别方法,包括图形验证码.极验滑动验证码.点触验证码和微博宫格验证码等.其中,针对图形验证码的识别方法是使用OCR技术,并且需要安装tesserocr库.我们可 ...

  10. [Python爬虫] 5-爬虫进阶(多线程爬虫/动态网页抓取/图形验证码识别)

    # I.多线程爬虫 # 1)概念:多线程是为了同步完成多项任务,通过提高资源使用效率来提高系统的效率 # 线程:火车的车厢,进程:火车头 # # 2)threading模块:专门提供用来做多线程编程的 ...

最新文章

  1. Android Studio 打开后无故爆红后解决办法
  2. Android混淆代码
  3. 有事情不能第一时间给父母说
  4. [ 转载 ] [经典排序算法][集锦]
  5. WinCE Boot方式及 Bootloader架构概述
  6. 在MVC 6 .NET核心应用程序中添加种子数据
  7. SpringBoot 2 快速整合 RabbitMQ
  8. Total capture: A 3D Deformation Model for tracking faces, hands and bodies
  9. lex 词法分析 linux,Lex词法分析器
  10. 使用BaseMap绘制地图它不香么
  11. 整型和字符串相互转换
  12. R语言使用cph函数和rcs函数构建限制性立方样条cox回归模型、使用rms包的Predict函数计算指定连续变量在不同分组变量下和风险比HR值的关系、使用ggplot2可视化变量与风险值HR的关系
  13. 用MATLAB编写限幅滤波程序,双二阶滤波器之MATLAB设计及C语言实现
  14. 看完之后终于明白了,要用5G网络必须要换成5G手机吗?
  15. 2023年Android现代开发
  16. 概率论与数理统计(3):二维随机变量及其分布
  17. HCIP-H12-223单选题库
  18. 高通音频驱动录音流程(五)
  19. softmax与交叉墒层的实现原理以及梯度计算
  20. 用python批量插入数据到数据库中

热门文章

  1. 直播小程序服务器配置,小程序直播obs推流设备直播设置教程
  2. 开源IT监控系统对比
  3. 硕思闪客精灵v2021如何用Flash制作动画短片流程分享
  4. rup 裁剪_建筑企业信息系统RUP裁剪模型及其应用研究
  5. WTL入门(五) 自定义控件
  6. php 模拟登录qq空间,PHP模拟QQ登录的方法
  7. mysql数据库可以放pdb文件吗_pdb数据库文件的搜索结果-阿里云开发者社区
  8. 《JavaScript设计模式》初次笔记——wsdchong
  9. python spearman相关系数_Pearson、Spearman秩相关系数、kendall等级相关系数 (附python实现)...
  10. 备份VMWare ESXi虚拟机