• web网站验证码自动识别


    验证码自动识别

    在很多WEB网站登录的时候,都需要输入验证码,Python提供了一些库(例如常用的OCR库)来识别和使用在线图片中的文字。

    将图像翻译成文字一般被称为光学文字识别(Optical Character Recognition, OCR)。可以实现OCR的底层库并不多,目前很多库都是使用共同的几个底层 OCR 库,或者是在上面 进行定制。

    1.1   ORC库概述

    在读取和处理图像、图像相关的机器学习以及创建图像等任务中,Python 一直都是非常出色的语言。虽然有很多库可以进行图像处理,但在这里我们只重点介绍:Tesseract

    1.2   Tesseract

    Tesseract 是一个 OCR 库,目前由 Google 赞助(Google 也是一家以 OCR 和机器学习技术闻名于世的公司)。Tesseract 是目前公认最优秀、最精确的开源 OCR 系统。 除了极高的精确度,Tesseract 也具有很高的灵活性。它可以通过训练识别出任何字体,也可以识别出任何 Unicode 字符。

    1.3   tesseract-ocr4.0安装

    tesseract-ocr4.0安装步骤如下:

    1.软件下载。

    软件下载网址:https://github.com/tesseract-ocr/tesseract/wiki/4.0-with-LSTM#400-alpha-for-windows

     

    选择4.0.0-alpha for Windows下面 Windows Installer made with MinGW-w64 from UB Mannheim,点击UB Mannheim 进入另一网页。

     

    进入得网址为 https://github.com/UB-Mannheim/tesseract/wiki

     

    点击tesseract-ocr-w64-setup-v4.0.0-beta.1.20180608.exe,下载4.0版本的软件。

    备注:Window系统的版本不一样下载对应的版本。

     

    2. 双击安装软件,安装过程按照下面的图片指示进行。

    注意:选择安装语言包,包含英文(默认安装)、中文、数学公式等,可以根据需要自己下载。

     

    安装完后打开软件安装的目录。

     

    备注:

    如果不是做英文的图文识别,还需要下载其他语言的识别包https://github.com/tesseract-ocr/tesseract/wiki/Data-Files。

    简体字识别包:https://raw.githubusercontent.com/tesseract-ocr/tessdata/4.00/chi_sim.traineddata

    1.4   tesseract-ocr 的环境变量配置

    安装完成之后,只能在软件所在的目录中才能够使用该软件,为了能将该软件在cmd下任意目录中调用,需要把 C:Tesseract-OCR essdata 配置到系统环境变量中。

    我的计算机->右键属性打开界面->点击高级系统设置->在打开的系统属性界面,点击"环境变量"->在环境变量界面选择"系统变量"中选中path,然后点下面的编辑,打开编辑环境变量界面,把 C:Tesseract-OCR 添加到变量中,点"确定"。

     

    配置完成,打开命令终端,输入:tesseract -v,可以看到版本信息。

     

    如果出现报错,估计是环境变量没配置好。

    到这里,我们就算安装完成了,但是,我们的系统还是无法识别中文的,我们要去下载简体汉字、繁体汉字语言包(上面提供了下载地址),下载好之后放到安装目录的tessconfigs目录下即可。

    注意:因为没有配置全局变量,无法跨盘执行数据转换,这里我们在环境变量那增加一个配置信息。

    在系统变量下面点击“新建”,变量名TESSDATA_PREFIX,变量值 C:Tesseract-OCR essdata,然后点击确定,之后界面依次点击确定,完成设置。

     

    1.5   tesseract-ocr 的使用

    tesseract-ocr没有窗口界面,只能通过命令调用,调用需要 cmd 或 powershell。

    Cmd 打开可以通过,开始->Windows系统->命令提示符或者按快捷键 win+r 输入cmd 后回车调用。

    1.先制作2张图片。T_jpg1 和 T_png1。

    2.在cmd命令行里面输入:

    格式: tesseract 图片名称 生成的结果文件的名称  字库

    例子:

    tesseract C:imageT_jpg1.jpg C:imageT_jpg.txt -l chi_sim

    然后回车。

    【T_jpg1】是 C:image目录下的T_jpg1图片。

    【T_jpg.txt】是指定结果输出到C:imageT_jpg.txt文本文件中。

    -l是指定使用的包。

    【chi_sim】是中文识别包。

    回车后,稍等运行结果,运行完成后,在目录C:image中看到T_jpg.txt文件,打开如图。

     

    1.6   安装pytesseract

    如果需要在Python上识别图片,需要安装Python版本的pytesseract库,安装pytesseract库之前,需要先 Pillow 库,使用命令:pip install Pillow。

     

    接着再安装 pip install pytesseract,安装成功。

     

    如果不安装Pillow库,就会报如下错误。

     

    1.7   处理规范文字案例

    新建一个test.png图片,保存在当前程序目录下。

     

    例子:

    import pytesseract

    from PIL import Image

    #如果不修改pytesseract.py文件,可以在程序中指定tesseract_cmd的运行文件

    #tesseract_cmd = 'C:/Tesseract-OCR/tesseract.exe'

    image = Image.open('test.png')

    text = pytesseract.image_to_string(image)

    print(text)

    报错:

     

    需要修改 C:Python35Libsite-packagespytesseract下的 pytesseract.py 文件。

     

    修改pytesseract.py文件里的tesseract_cmd 值。

     

    tesseract_cmd = 'C:Tesseract-OCR esseract.exe'

     

    修改完之后,运行程序,如下:

     

    1.8   识别简易的登录验证码

    大多数网站生成的验证码图片都具有以下属性:

    1.它们是服务器端的程序动态生成的图片。验证码图片的 src 属性可能和普通图片不太一 样,比如 <img src="WebForm.aspx?id=8AP85CQKE9TJ">,但是可以和其他图片一样进行下载和处理。

    2.图片的答案存储在服务器端的数据库里。

    3.很多验证码都有时间限制,如果你太长时间没解决就会失效。

    4.常用的处理方法就是,首先把验证码图片下载到硬盘里,清理干净,然后用 Tesseract 处理图片,最后返回符合网站要求的识别结果。

    例子:登录验证码图片

     

    程序:

    import pytesseract

    from PIL import Image

    #如果不修改pytesseract.py文件,可以在程序中指定tesseract_cmd的运行文件

    #tesseract_cmd = 'C:/Tesseract-OCR/tesseract.exe'

    image = Image.open('yzm1.png')

    text = pytesseract.image_to_string(image)

    print(text)

     

    运行结果:

     

    通过例子,可以看出,识别是有误差的,这就需要机器的自我学习,需要我们训练Tesseract。

     -------------------------

    个人今日头条账号: 听海8   (上面上传了很多相关学习的视频以及我书里的文章,大家想看视频,可以关注我的今日头条)

     

  • 相关阅读:
    zimg
    ffmpeg P016 P010 YUV444P16LE 的打印的像素值
    zimg 使用
    P010LE P016LE YUV420P10LE
    如鹏网学习笔记(八)CSS
    对dui界面 组件 hook的通杀方案
    Python 中str 与 bytes 数据结构转换
    Tensorflow 老版本的安装
    Java string和各种格式互转 string转int int转string
    电脑黑屏
  • 原文地址:https://www.cnblogs.com/tinghai8/p/9219724.html
Copyright © 2020-2023  润新知