热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

图形验证码的识别

利用OCR技术识别图形验证码安装tesserocrtesserocrGitHub:https:github.comsirfztesserocrtesserocrPyPI:https

利用OCR技术识别图形验证码

安装tesserocr

  • tesserocr GitHub:https://github.com/sirfz/tesserocr
  • tesserocr PyPI:https://pypi.python.org/pypi/tesserocr
  • tesseract 下载地址: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

识别测试

import tesserocr
from PIL import Image

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

也可以直接将图片文件转为字符串

import tesserocr
print(tesserocr.file_to_text("image.png"))

验证码处理

利用Image对象的convert()方法参数传入L,即可将图片转化为灰度图像

image = image.convert("L")
image.show()

传入1可将图片进行二值化处理

image = image.convert("1")
image.show()

先将原图转为灰度图像,然后再制定二值化阀值。变量 threshold 代表二值化阈值,阈值设置为 80。

image = image.convert('L')
threshold = 80
table = []
for i in range(256):
    if i 

原来验证码中的线条已经去除,整个验证码变得黑白分明。这时重新识别验证码

import tesserocr
from PIL import Image

image = Image.open('code2.jpg')

image = image.convert('L')
threshold = 127
table = []
for i in range(256):
    if i 

利用专业打码平台识别验证码

日常爬虫工作中,会遇到目标网站有图片验证码的反爬机制,除了手工配置识别图片外,为了提高效率,可以通过专业的打码平台来验证图片。这里用阿里云平台作为例子:

在阿里云市场有很多专业打码商品

https://market.aliyun.com/products/?keywords=%E5%9B%BE%E7%89%87%E8%AF%86%E5%88%AB%E9%AA%8C%E8%AF%81%E7%A0%81

选购成功后,记下你的AppCode

接下来开发代码逻辑:

import urllib.request
import ssl

#修改API说明修改接口地址
url = 'https://imgurlocr.market.alicloudapi.com/urlimages'
method = 'POST'
appcode = '你的AppCode'
querys = ''
bodys = {}


bodys['image'] = '''https://fegine-drug.oss-cn-shanghai.aliyuncs.com/image/urlimage.png'''
post_data = urllib.parse.urlencode(bodys).encode(encoding='UTF8')
request = urllib.request.Request(url, post_data)
#根据API的要求,定义相对应的Content-Type
request.add_header('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')
request.add_header('Authorization', 'APPCODE ' + appcode)
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
respOnse= urllib.request.urlopen(request, cOntext=ctx)

cOntent= response.read()
if (content):
    print(content.decode('UTF-8'))

返回结果:

{
  "code": "1",
  "msg": "查询成功",
  "result_num": 1,
  "result": [
    {
      "words": "给我跪下唱征服"
    }
  ]
}

图形验证码的识别


推荐阅读
  • Activity跳转动画 无缝衔接
    Activity跳转动画 无缝衔接 ... [详细]
  • 本文探讨了SQLAlchemy ORM框架中如何利用外键和关系(relationship)来建立表间联系,简化复杂的查询操作。通过示例代码详细解释了relationship的定义、使用方法及其与外键的相互作用。 ... [详细]
  • 深入解析Android Activity生命周期
    本文详细探讨了Android中Activity的生命周期,通过实例代码和详细的步骤说明,帮助开发者更好地理解和掌握Activity各个阶段的行为。 ... [详细]
  • 帝国cms各数据表有什么用
    CMS教程|帝国CMS帝国cmsCMS教程-帝国CMS精易编程助手源码,ubuntu桥接设置,500错误是tomcat吗,爬虫c原理,php会话包括什么,营销seo关键词优化一般多 ... [详细]
  • 本文详细探讨了在 Xamarin.Forms 中使用 AbsoluteLayout 进行精确布局的方法,以及如何利用 Device.StartTimer 实现定时任务。通过具体的代码示例,帮助开发者更好地理解和应用这些功能。 ... [详细]
  • UVA 401 - 镜像回文字符串
    本题探讨了如何判断一个字符串是否为普通回文、镜像回文或两者都不是。通过特定的字符映射表来实现字符串的镜像转换,并根据转换后的结果进行分类。 ... [详细]
  • 本文探讨了如何在Symfony框架中正确设置日期时间字段的格式,以满足特定的显示需求。 ... [详细]
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • SQLite是一种轻量级的关系型数据库管理系统,尽管体积小巧,却能支持高达2TB的数据库容量,每个数据库以单个文件形式存储。本文将详细介绍SQLite在Android开发中的应用,包括其数据存储机制、事务处理方式及数据类型的动态特性。 ... [详细]
  • 本文探讨了Web API 2中特性的路由机制,特别是如何利用它来构建RESTful风格的URI。文章不仅介绍了基本的特性路由使用方法,还详细说明了如何通过特性路由进行API版本控制、HTTP方法的指定、路由前缀的应用以及路由约束的设置。 ... [详细]
  • 深入探讨Web服务器与动态语言的交互机制:CGI、FastCGI与PHP-FPM
    本文详细解析了Web服务器(如Apache、Nginx等)与动态语言(如PHP)之间通过CGI、FastCGI及PHP-FPM进行交互的具体过程,旨在帮助开发者更好地理解这些技术背后的原理。 ... [详细]
  • 正文♦时间复杂度:\(\mathcal{O}(n)\)思维题,不需要建树。设数组\(a\)记录每一个节点是否尊重它的父节点,数组\(b\)记录是否有节点尊重它,特别的,叶子节点必然 ... [详细]
  • 本文详细介绍了PHP中的回调函数及其多种实现方式,包括函数字符串、匿名函数、类静态方法和类方法。同时,探讨了闭包的概念及其在PHP中的应用,通过实例展示了如何利用闭包访问外部变量。 ... [详细]
  • 本文详细介绍了在Mac操作系统中使用Python连接MySQL数据库的方法,包括常见的错误处理及解决方案。 ... [详细]
  • 本文详细介绍了一种实现PopupWindow全屏显示且能有效隐藏虚拟按键的技术方案,适用于Android开发。此方法经过实际测试,表现良好,兼容性优秀。 ... [详细]
author-avatar
angel2502899287_238
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有