Selenium+dddocr は Web 認証コードの自動認識を簡単に解決します。

みなさん、こんにちは。シャオ ハオです。今日は、検証コード認識アーティファクトをお勧めしますdddocr

1 はじめに

dddocr は、深層学習に基づく OCR (光学文字認識、光学式文字認識) ライブラリであり、画像内のテキストを認識するために使用されます。印刷物、手書き、表、バーコードなど、さまざまな種類のテキストを認識できます。dddocr ライブラリは、ディープ畳み込みニューラル ネットワーク (CNN) やリカレント ニューラル ネットワーク (RNN) など、高い精度と安定性を備えた高度なモデルを使用します。

テキスト認識の開発と適用は、dddocr ライブラリを使用して簡単に実行できます。画像を入力として受け取り、認識結果を返すことができる、シンプルで使いやすい API インターフェイスを提供します。ユーザーは、認識される画像を dddocr ライブラリの API インターフェイスに渡すだけで、認識されたテキスト情報を取得できます。同時に、dddocr ライブラリは複数の画像のバッチ処理もサポートしており、マルチスレッドおよび分散処理機能を提供し、認識速度と効率を向上させることができます。

dddocr ライブラリは、文書のデジタル化、画像検索、オフィスの自動化など、さまざまなシナリオで広く使用できます。これにより、ユーザーは画像からテキスト情報を迅速かつ正確に抽出し、その後の処理と分析を容易にすることができます。実際のアプリケーションでは、dddocr ライブラリは金融、医療、物流などの分野で広く使用され、良好な成果を上げています。

2. 基本的な使い方

インストール:pip install dddocr

dddocr ライブラリを使用すると、さまざまな種類の検証コードの識別をサポートできます。

例 1: 英字検証コード認識

import dddocr

def recognize_letter_captcha(image_path):
    ocr = dddocr.DddOcr()
    result = ocr.classification(image_path, model_type='letter')
    return result

image_path = 'letter_captcha.png'
result = recognize_letter_captcha(image_path)
print(result)

例 2: デジタル検証コードの識別

import dddocr

def recognize_number_captcha(image_path):
    ocr = dddocr.DddOcr()
    result = ocr.classification(image_path, model_type='number')
    return result

image_path = 'number_captcha.png'
result = recognize_number_captcha(image_path)
print(result)

例 3: 混合検証コード認識

import dddocr

def recognize_mixed_captcha(image_path):
    ocr = dddocr.DddOcr()
    result = ocr.classification(image_path, model_type='mixed')
    return result

image_path = 'mixed_captcha.png'
result = recognize_mixed_captcha(image_path)
print(result)

例 4: スライド検証コード認識

import dddocr

def recognize_slide_captcha(image_path):
    ocr = dddocr.DddOcr()
    result = ocr.slide_captcha(image_path)
    return result

image_path = 'slide_captcha.png'
result = recognize_slide_captcha(image_path)
print(result)

例 5: 中国語の認証コードの認識

import dddocr

def recognize_chinese_captcha(image_path):
    ocr = dddocr.DddOcr()
    result = ocr.classification(image_path, model_type='chinese')
    return result

image_path = 'chinese_captcha.png'
result = recognize_chinese_captcha(image_path)
print(result)

上記の例では、image_path は認識される検証コード画像のパスであり、異なる種類の検証コードは異なる認識関数を呼び出すことによって識別されます。各例では、dddocr のインスタンスを作成し、識別のために対応するメソッドを呼び出します。認識結果は文字列形式で返されます。実際のアプリケーションでは、認識精度を向上させるために、特定の状況に応じてパラメーターの調整とモデルのトレーニングを実行する必要がある場合があります。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

3. Selenium+dddorc 自動ログイン識別確認コード

自動ログインに Selenium と dddocr を使用する場合、次の手順で検証コードを識別できます。

  1. Selenium および dddocr ライブラリをインストールします。
  pip install selenium
  pip install dddocr
  1. 必要なライブラリとモジュールをインポートします。
   from selenium import webdriver
   from selenium.webdriver.common.by import By
   from selenium.webdriver.support.ui import WebDriverWait
   from selenium.webdriver.support import expected_conditions as EC
   import dddocr
  1. dddocr のインスタンスを作成します。
  ocr = dddocr.DddOcr()
  1. Selenium を使用してログイン ページを開き、検証コードの画像要​​素を見つけます。
   driver = webdriver.Chrome()
   driver.get('https://example.com/login')
   captcha_image = driver.find_element(By.ID, 'captcha-image')
  1. 検証コード イメージの src 属性を取得し、ダウンロードしてローカルに保存します。
  captcha_image_src = captcha_image.get_attribute('src')
  driver.get_screenshot_as_file('screenshot.png')
  1. dddocr を使用して検証コードを特定します。
   result = ocr.classification('screenshot.png', model_type='mixed')
   captcha_code = result[0]['text']
  1. ログイン ページで確認コード入力ボックスを見つけて、認識された確認コードを入力します。
   captcha_input = driver.find_element(By.ID, 'captcha-input')
   captcha_input.send_keys(captcha_code)
  1. 追加のログイン情報を入力し、フォームを送信します。
   username_input = driver.find_element(By.ID, 'username-input')
   password_input = driver.find_element(By.ID, 'password-input')
   username_input.send_keys('your_username')
   password_input.send_keys('your_password')
   submit_button = driver.find_element(By.ID, 'submit-button')
   submit_button.click()

完全なコード例:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import dddocr

ocr = dddocr.DddOcr()

driver = webdriver.Chrome()
driver.get('https://example.com/login')

captcha_image = driver.find_element(By.ID, 'captcha-image')
captcha_image_src = captcha_image.get_attribute('src')
driver.get_screenshot_as_file('screenshot.png')

result = ocr.classification('screenshot.png', model_type='mixed')
captcha_code = result[0]['text']

captcha_input = driver.find_element(By.ID, 'captcha-input')
captcha_input.send_keys(captcha_code)

username_input = driver.find_element(By.ID, 'username-input')
password_input = driver.find_element(By.ID, 'password-input')
username_input.send_keys('your_username')
password_input.send_keys('your_password')

submit_button = driver.find_element(By.ID, 'submit-button')
submit_button.click()

上記のコード例では、ログインページの認証コード画像要素のIDが「captcha-image」、認証コード入力ボックスのIDが「captcha-input」、入力されたユーザー名のIDが「captcha-input」であると仮定しています。ボックスは「username-input」、パスワードは入力です。 ボックスの ID は「password-input」、ログイン ボタンの ID は「submit-button」です。実際の状況に応じて、これらの ID 値を実際のページ要素 ID に置き換える必要があります。

注: 上記の例は、検証コードの画像が img タグの形式でページに直接埋め込まれている場合にのみ適用されます。

4. Ajaxリクエストを通じてロードされた検証コードを識別する方法

検証コードが Ajax リクエスト経由で読み込まれた場合は、次の手順に従って検証コードを識別できます。

  1. Selenium を使用してログイン ページを開き、検証コード イメージが読み込まれるまで待ちます。
   driver = webdriver.Chrome()
   driver.get('https://example.com/login')

   wait = WebDriverWait(driver, 10)
   captcha_image = wait.until(EC.presence_of_element_located((By.ID, 'captcha-image')))
  1. JavaScript コードを実行して、検証コード イメージの Base64 エンコードを取得します。
   captcha_image_base64 = driver.execute_script("return arguments[0].toDataURL('image/png').substring(21);", captcha_image)
  1. Base64 エンコードを画像にデコードし、ローカルに保存します。
   with open('captcha.png', 'wb') as f:
       f.write(base64.b64decode(captcha_image_base64))
  1. dddocr を使用して検証コードを特定します。
  result = ocr.classification('captcha.png', model_type='mixed')
  captcha_code = result[0]['text']
  1. ログイン ページで確認コード入力ボックスを見つけて、認識された確認コードを入力します。
   captcha_input = driver.find_element(By.ID, 'captcha-input')
   captcha_input.send_keys(captcha_code)
  1. 追加のログイン情報を入力し、フォームを送信します。
   username_input = driver.find_element(By.ID, 'username-input')
   password_input = driver.find_element(By.ID, 'password-input')
   username_input.send_keys('your_username')
   password_input.send_keys('your_password')

   submit_button = driver.find_element(By.ID, 'submit-button')
   submit_button.click()

完全なコード例:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import dddocr
import base64

ocr = dddocr.DddOcr()

driver = webdriver.Chrome()
driver.get('https://example.com/login')

wait = WebDriverWait(driver, 10)
captcha_image = wait.until(EC.presence_of_element_located((By.ID, 'captcha-image')))

captcha_image_base64 = driver.execute_script("return arguments[0].toDataURL('image/png').substring(21);", captcha_image)

with open('captcha.png', 'wb') as f:
    f.write(base64.b64decode(captcha_image_base64))

result = ocr.classification('captcha.png', model_type='mixed')
captcha_code = result[0]['text']

captcha_input = driver.find_element(By.ID, 'captcha-input')
captcha_input.send_keys(captcha_code)

username_input = driver.find_element(By.ID, 'username-input')
password_input = driver.find_element(By.ID, 'password-input')
username_input.send_keys('your_username')
password_input.send_keys('your_password')

submit_button = driver.find_element(By.ID, 'submit-button')
submit_button.click()

上記のコード例では、ログインページの認証コード画像要素のIDが「captcha-image」、認証コード入力ボックスのIDが「captcha-input」、入力されたユーザー名のIDが「captcha-input」であると仮定しています。ボックスは「username-input」、パスワードは入力です。 ボックスの ID は「password-input」、ログイン ボタンの ID は「submit-button」です。実際の状況に応じて、これらの ID 値を実際のページ要素 ID に置き換える必要があります。

注: 上記の例は、検証コード イメージが Ajax リクエストを通じてロードされ、base64 エンコードが返される場合にのみ適用されます。認証コード画像が他の方法で読み込まれた場合や、他の形式のデータ(画像のURLなど)が返された場合は、状況に応じて適切に対処する必要があります。

最後に、私の記事をよく読んでくださった皆様に感謝申し上げます。ファンの増加と注目度を見ると、常に一定の礼儀が存在します。それほど価値のあるものではありませんが、使用できる場合は直接受け取ることができます!

ソフトウェアテスト面接文書

私たちは高給の仕事を見つけるために勉強しなければなりません。以下の面接の質問は、アリババ、テンセント、バイトなどの一流インターネット企業の最新の面接資料からのものであり、バイトの上司の中には権威ある回答をしている人もいます。 set 面接情報に基づいて、誰もが満足のいく仕事を見つけることができると思います。
 

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/jiangjunsss/article/details/132833989