O rastreador Python encontra várias maneiras de lidar com o código de verificação, o código-fonte está no final do artigo

Recentemente, as coisas têm sido bastante. Joguei uma partida na Blue Bridge Cup e ainda estou me preparando para alguns exames de certificação. Os blogs sobre répteis estão suspensos há um tempo. Realmente regredi um pouco sobre mim, mas não é verdade. Na verdade, também estou pensando, no primeiro ano, se vou fazer o exame de admissão na pós-graduação ou se ainda vou aprender a nova tecnologia como esta, ou se vou continuar na estrada , embora não saiba se esta estrada corre bem ou não. A propósito, não consigo apanhar a luz. Durante este período de tempo, demorei mais de um mês. Finalmente passei pelo Django's cerca de uma vez. O resto é operar nos documentos oficiais e em alguns projetos reais. Também pretendo abrir uma coluna para registrar especificamente alguns dos meus tristes caminhos no aprendizado de Django. Aprender ainda é o mesmo. Se você não estudar, você o perderá. É muito inexplicável e realmente estranho. A bolsa de estudos de alguém depende da relação. O vencedor de um determinado projeto mudou apenas temporariamente de nome. . .

Muitas pessoas aprendem python e não sabem por onde começar.

Muitas pessoas aprendem python e depois de dominar a gramática básica, não sabem onde encontrar casos para começar.

Muitas pessoas que fizeram estudos de caso não sabem como aprender conhecimentos mais avançados.

Portanto, para esses três tipos de pessoas, irei fornecer a vocês uma boa plataforma de aprendizado, gratuita para receber tutoriais em vídeo, e-books e o código-fonte do curso! ?? ¤

Grupo QQ: 701698587

 


Independentemente disso, não importa. Este blog encapsula mais duas maneiras excelentes de processar códigos de verificação de imagem, ou seja, o aip do Baidu e um recente reconhecimento trouxa-ocr.
Aqui, mencionarei principalmente o Baidu. Há muitas coisas nele. Também ampliei uma função para identificar fotos pornográficas. Os interessados ​​podem se divertir. Depois de aprender sobre os rastreadores, essas fotos são realmente avassaladoras e existem inúmeros sites. Espero que a operação net-net seja mais vigorosa e o resto não pode ser comparado. Vamos ver a operação real.


Este artigo apresenta o método de processamento do código de verificação no rastreador e encapsula essas funções para nós usarmos, envolvendo o método de chamada do Baidu AIP e o uso da mais recente biblioteca de código aberto biblioteca de reconhecimento de trouxas. Bem-vindo para ler e curtir Coleção!

Outros artigos do blogger, sejam bem-vindos!


índice:

  • Aprenda a chamar a interface aip do Baidu:

  • Amplie a interface de reconhecimento de pornografia do Baidu:

  • Aprenda muggle_ocr para identificar a interface:

  • Código-fonte do pacote:


Aprenda a chamar a interface aip do Baidu:

1. Primeiro, você precisa registrar uma conta:

https://login.bce.baidu.com/

注册完成之后登入

2. Crie o projeto

Encontre o reconhecimento de texto nessas tecnologias e clique para criar um projeto

imagem

 

Após a criação:

imagem

 

O AppID, a chave API e a chave secreta na imagem serão necessários posteriormente.

Em seguida, você pode verificar o documento do site oficial ou usar o código que escrevi diretamente

3. Instale a biblioteca de dependências pip install baidu-aip

Esta é apenas uma interface e requer algumas configurações anteriores.

 def return_ocr_by_baidu(self, test_image):
        """
        ps: 先在__init__  函数中完成你自己的baidu_aip 的一些参数设置

        这次测试使用 高精度版本测试
                    如果速度很慢 可以换回一般版本
                    self.client.basicGeneral(image, options)
                    相关参考网址:
                    https://cloud.baidu.com/doc/OCR/s/3k3h7yeqa
        :param test_image: 待测试的文件名称
        :return:  返回这个验证码的识别效果 如果错误  可以多次调用
        """
        image = self.return_image_content(test_image=self.return_path(test_image))

        # 调用通用文字识别(高精度版)
        # self.client.basicAccurate(image)

        # 如果有可选参数 相关参数可以在上面的网址里面找到
        options = {}
        options["detect_direction"] = "true"
        options["probability"] = "true"

        # 调用
        result = self.client.basicAccurate(image, options)
        result_s = result['words_result'][0]['words']
        # 不打印关闭
        print(result_s)
        if result_s:
            return result_s.strip()
        else:
            raise Exception("The result is None , try it !")

Amplie a interface de reconhecimento de pornografia do Baidu:

Devemos nos divertir escrevendo código, não pode ser tão chato, certo?

A interface de identificação pornográfica está em processo de revisão de conteúdo, basta procurá-la.

Código-fonte do método de chamada:

# -*- coding :  utf-8 -*-
# @Time      :  2020/10/22  17:30
# @author    :  沙漏在下雨
# @Software  :  PyCharm
# @CSDN      :  https://me.csdn.net/qq_45906219

from aip import AipContentCensor
from ocr import MyOrc


class Auditing(MyOrc):
    """
    这是一个调用百度内容审核的aip接口
    主要用来审核一些色情 反恐 恶心 之类的东西
    网址:  https://ai.baidu.com/ai-doc/ANTIPORN/tk3h6xgkn
    """

    def __init__(self):
        # super().__init__()
        APP_ID = '填写你的ID'
        API_KEY = '填写你的KEY'
        SECRET_KEY = '填写你的SECRET_KEY'

        self.client = AipContentCensor(APP_ID, API_KEY, SECRET_KEY)

    def return_path(self, test_image):
        return super().return_path(test_image)

    def return_image_content(self, test_image):
        return super().return_image_content(test_image)

    def return_Content_by_baidu_of_image(self, test_image, mode=0):
        """
        继承ocr中的一些方法, 因为都是放一起的 少些一点代码
        内容审核: 关于图片中是否存在一些非法不良信息
        内容审核还可以实现文本审核 我觉得有点鸡肋  就没一起封装进去
        url: https://ai.baidu.com/ai-doc/ANTIPORN/Wk3h6xg56
        :param test_image: 待测试的图片 可以本地文件 也可以网址
        :param mode:  默认 = 0 表示 识别的本地文件   mode = 1 表示识别的图片网址连接
        :return: 返回识别结果
        """
        if mode == 0:
            filepath = self.return_image_content(self.return_path(test_image=test_image))
        elif mode == 1:
            filepath = test_image
        else:
            raise Exception("The mode is 0 or 1 but your mode is ", mode)
        # 调用色情识别接口
        result = self.client.imageCensorUserDefined(filepath)

        # """ 如果图片是url调用如下 """
        # result = self.client.imageCensorUserDefined('http://www.example.com/image.jpg')
        print(result)
        return result


a = Auditing()
a.return_Content_by_baidu_of_image("test_image/2.jpg", mode=0)

Aprenda muggle_ocr para identificar a interface:

Este pacote tornou-se popular recentemente, é muito simples de usar, não há muitas outras funções

  1. Instalar pip instalar muggle-ocr Este download é um pouco lento, é melhor usar o hotspot móvel. Atualmente o site espelho (Tsinghua / Ali) não foi atualizado para este pacote porque este pacote é o último modelo de ocr 12

  2. Interface de chamada

 def return_ocr_by_muggle(self, test_image, mode=1):
        """
            调用这个函数使用 muggle_ocr 来进行识别
            :param  test_image  待测试的文件名称 最好绝对路径
            :param  模型 mode = 0  即 ModelType.OCR 表示识别普通印刷文本
                  当 mode = 1 默认  即 ModelType.Captcha 表示识别4-6位简单英输验证码

            官方网站: https://pypi.org/project/muggle-ocr/
            :return: 返回这个验证码的识别结果 如果错误 可以多次调用
        """
        # 确定识别物品
        if mode == 1:
            sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.Captcha)
        elif mode == 0:
            sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR)
        else:
            raise Exception("The mode is 0 or 1 , but your mode  == ", mode)

        filepath = self.return_path(test_image=test_image)

        with open(filepath, 'rb') as fr:
            captcha_bytes = fr.read()
            result = sdk.predict(image_bytes=captcha_bytes)
            # 不打印关闭
            print(result)
            return result.strip()

Código-fonte do pacote:

# -*- coding :  utf-8 -*-
# @Time      :  2020/10/22  14:12
# @author    :  沙漏在下雨
# @Software  :  PyCharm
# @CSDN      :  https://me.csdn.net/qq_45906219

import muggle_ocr
import os
from aip import AipOcr

"""
    PS: 这个作用主要是作了一个封装 把2个常用的图片/验证码识别方式合在一起 怎么用 取决于自己
    
    接口1: muggle_ocr 
          pip install muggle-ocr 这个下载有点慢 最好使用手机热点
          目前镜像网站(清华/阿里)  还没有更新到这个包 因为这个包是最新的一个ocr模型
          
    接口2: baidu-aip
          pip install baidu-aip
          这个知道的人应该很多很多, 但是我觉得还是muggle 这个新包猛的一比
          调用方式 可以参考官网文档: https://cloud.baidu.com/doc/OCR/index.html
          或者使用我如下的方式  都是ok的
    :param image_path  待识别的图片路径  如果目录很深 推荐使用绝对路径
    
"""


class MyOrc:
    def __init__(self):
        # 设置一些必要信息 使用自己百度aip的内容
        APP_ID = '你的ID'
        API_KEY = '你的KEY'
        SECRET_KEY = '你的SECRET_KEY'

        self.client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

    def return_path(self, test_image):

        """:return abs image_path"""
        # 确定路径
        if os.path.isabs(test_image):
            filepath = test_image
        else:
            filepath = os.path.abspath(test_image)
        return filepath

    def return_image_content(self, test_image):
        """:return the image content """
        with open(test_image, 'rb') as fr:
            return fr.read()

    def return_ocr_by_baidu(self, test_image):
        """
        ps: 先在__init__  函数中完成你自己的baidu_aip 的一些参数设置

        这次测试使用 高精度版本测试
                    如果速度很慢 可以换回一般版本
                    self.client.basicGeneral(image, options)
                    相关参考网址:
                    https://cloud.baidu.com/doc/OCR/s/3k3h7yeqa
        :param test_image: 待测试的文件名称
        :return:  返回这个验证码的识别效果 如果错误  可以多次调用
        """
        image = self.return_image_content(test_image=self.return_path(test_image))

        # 调用通用文字识别(高精度版)
        # self.client.basicAccurate(image)

        # 如果有可选参数 相关参数可以在上面的网址里面找到
        options = {}
        options["detect_direction"] = "true"
        options["probability"] = "true"

        # 调用
        result = self.client.basicAccurate(image, options)
        result_s = result['words_result'][0]['words']
        # 不打印关闭
        print(result_s)
        if result_s:
            return result_s.strip()
        else:
            raise Exception("The result is None , try it !")

    def return_ocr_by_muggle(self, test_image, mode=1):
        """
            调用这个函数使用 muggle_ocr 来进行识别
            :param  test_image  待测试的文件名称 最好绝对路径
            :param  模型 mode = 0  即 ModelType.OCR 表示识别普通印刷文本
                  当 mode = 1 默认  即 ModelType.Captcha 表示识别4-6位简单英输验证码

            官方网站: https://pypi.org/project/muggle-ocr/
            :return: 返回这个验证码的识别结果 如果错误 可以多次调用
        """
        # 确定识别物品
        if mode == 1:
            sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.Captcha)
        elif mode == 0:
            sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR)
        else:
            raise Exception("The mode is 0 or 1 , but your mode  == ", mode)

        filepath = self.return_path(test_image=test_image)

        with open(filepath, 'rb') as fr:
            captcha_bytes = fr.read()
            result = sdk.predict(image_bytes=captcha_bytes)
            # 不打印关闭
            print(result)
            return result.strip()


# a = MyOrc()

# a.return_ocr_by_baidu(test_image='test_image/digit_img_1.png')

Acho que você gosta

Origin blog.csdn.net/Python_kele/article/details/115014983
Recomendado
Clasificación