最近、物事はかなり大変です。私はブルーブリッジカップ大会に参加しましたが、まだいくつかの証明書試験の準備をしていました。爬虫類に関するブログはしばらく保留されていました。私は自分自身について少し後退しましたが、そうではありません。ああ、実は私自身、3年生の時に、大学院入学試験を受けるのか、それともこのような新技術をまだ学んでいるのか、それともクローラーロードを続けるのか、順調かどうかはわかりませんが、考えていました。ちなみに、光がつかめません。この間、夜は一ヶ月以上かかりました。ようやくジャンゴをほぼ一回通過しました。残りは公式文書と実際のプロジェクトを操作することです。また、Djangoを学ぶ上での私の悲しい道のいくつかを具体的に記録するために、コラムを開く予定です。学習は同じです。勉強しないと、それを失うことになります。それは非常に説明がつかず、本当に奇妙です。誰かの奨学金は関係によって異なります。特定のプロジェクトの勝者は、ゼロ時間に名前を変更しただけです。。。
これに関係なく、問題ではありません。このブログには、画像検証コードを処理する2つの優れた方法、つまりBaiduのaipと最近人気のある認識muggle-ocrがカプセル化されています。
ここでは、主にBaiduについて説明します。そこにはたくさんのことがあります。ポルノ写真を識別する機能も拡張しました。興味のある人は楽しむことができます。クローラーを学んだ後、これらの写真は本当に圧倒され、無数のウェブサイトがあります。ネットネットの運用がもっと活発になり、残りは比較されないことを願っています。実際の運用を見てみましょう。
この記事では、クローラーでの検証コードの処理方法を紹介し、これらの関数をカプセル化して使用します。これには、Baidu AIPの呼び出し方法と、最新のオープンソースライブラリのマグル認識ライブラリの使用が含まれます。コレクション!
目次:
Baiduのaipインターフェイスを呼び出す方法を学びます。
1.まず、アカウントを登録する必要があります。
https://login.bce.baidu.com/
注册完成之后登入
2.プロジェクトを作成します
これらのテクノロジーでテキスト認識を見つけ、クリックしてプロジェクトを作成します
作成後:
写真のAppID、APIキー、シークレットキーは後で必要になります。
次に、公式ウェブサイトのドキュメントを確認するか、私が直接書いたコードを使用することができます
3.依存関係ライブラリpipinstallbaidu-aipをインストールします
これは単なるインターフェースであり、いくつかの以前の設定が必要です。
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 !")
Baiduのポルノ認識インターフェイスを拡張します。
コードを書くのは楽しいはずですが、それほど退屈なことではありませんよね?
ポルノ識別インターフェースはコンテンツレビュープロセスにあります。探してください。
呼び出しメソッドのソースコード:
# -*- 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)
muggle_ocr認識インターフェースを学ぶ:
このパッケージは最近人気があり、使い方はとても簡単で、他の機能はあまりありません
-
Pip install muggle-ocr
这个下载有点慢 最好使用手机热点 目前镜像网站(清华/阿里) 还没有更新到这个包 因为这个包是最新的一个ocr模型
-
通話インターフェース
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()
パッケージのソースコード:
# -*- 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')
この記事では、クローラーでの検証コードの処理方法を紹介し、これらの関数をカプセル化して使用できるようにします。これには、Baidu AIPの呼び出し方法と、最新のオープンソースライブラリのマグル認識ライブラリの使用が含まれます。コレクション!