Selenium+dddocr résout facilement la reconnaissance automatique du code de vérification Web

Aujourd'hui, je voudrais vous recommander un artefact de reconnaissance de code de vérification : dddocr.

1. Introduction

dddocr est une bibliothèque OCR (Optical Character Recognition, reconnaissance optique de caractères) basée sur l'apprentissage profond, utilisée pour reconnaître du texte dans des images. Il peut reconnaître différents types de texte, notamment les caractères imprimés, l'écriture manuscrite, les tableaux, les codes-barres, etc. La bibliothèque dddocr utilise des modèles avancés tels que les réseaux de neurones à convolution profonde (CNN) et les réseaux de neurones récurrents (RNN), qui offrent une précision et une stabilité élevées.

Le développement et l'application de la reconnaissance de texte peuvent être facilement réalisés à l'aide de la bibliothèque dddocr. Il fournit une interface API simple et facile à utiliser qui peut recevoir des images en entrée et renvoyer des résultats de reconnaissance. Les utilisateurs doivent simplement transmettre l'image à reconnaître dans l'interface API de la bibliothèque dddocr pour obtenir les informations textuelles reconnues. Dans le même temps, la bibliothèque dddocr prend également en charge le traitement par lots de plusieurs images, fournissant des fonctions de traitement multithread et distribué, qui peuvent améliorer la vitesse et l'efficacité de la reconnaissance.

La bibliothèque dddocr peut être largement utilisée dans divers scénarios, tels que la numérisation de documents, la récupération d'images, la bureautique automatisée, etc. Il peut aider les utilisateurs à extraire rapidement et précisément des informations textuelles à partir d’images pour faciliter le traitement et l’analyse ultérieurs. Dans les applications pratiques, la bibliothèque dddocr a été largement utilisée dans les domaines financier, médical, logistique et autres, et a obtenu de bons résultats.

2. Utilisation de base

Installer:pip install dddocr

La bibliothèque dddocr peut être utilisée pour prendre en charge l'identification de différents types de codes de vérification.

Exemple 1 : reconnaissance du code de vérification des lettres anglaises

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)

Exemple 2 : identification par code de vérification numérique

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)

Exemple 3 : Reconnaissance de codes de vérification mixtes

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)

Exemple 4 : Reconnaissance du code de vérification glissante

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)

Exemple 5 : reconnaissance du code de vérification chinois

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)

Dans l'exemple ci-dessus, image_path est le chemin de l'image du code de vérification à reconnaître, et différents types de codes de vérification sont identifiés en appelant différentes fonctions de reconnaissance. Chaque exemple crée une instance de dddocr puis appelle la méthode correspondante pour identification. Le résultat de la reconnaissance sera renvoyé sous forme de chaîne. Dans les applications réelles, l'ajustement des paramètres et la formation du modèle peuvent devoir être effectués en fonction de circonstances spécifiques pour améliorer la précision de la reconnaissance.

3. code de vérification d'identification de connexion automatisée selenium+dddrc

Lorsque vous utilisez Selenium et dddocr pour la connexion automatique, vous pouvez identifier le code de vérification en suivant les étapes suivantes :

  1. Installez les bibliothèques Selenium et dddocr :

  pip install selenium
  pip install dddocr
  1. Importez les bibliothèques et modules nécessaires :

   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. Créez une instance de dddocr :

  ocr = dddocr.DddOcr()
  1. Utilisez Selenium pour ouvrir la page de connexion et trouver l'élément d'image du code de vérification :

   driver = webdriver.Chrome()
   driver.get('https://example.com/login')
   captcha_image = driver.find_element(By.ID, 'captcha-image')
  1. Obtenez l'attribut src de l'image du code de vérification, puis téléchargez-le et enregistrez-le localement :

  captcha_image_src = captcha_image.get_attribute('src')
  driver.get_screenshot_as_file('screenshot.png')
  1. Utilisez dddocr pour identifier le code de vérification :

   result = ocr.classification('screenshot.png', model_type='mixed')
   captcha_code = result[0]['text']
  1. Recherchez la zone de saisie du code de vérification sur la page de connexion et entrez le code de vérification reconnu :

   captcha_input = driver.find_element(By.ID, 'captcha-input')
   captcha_input.send_keys(captcha_code)
  1. Entrez les informations de connexion supplémentaires et soumettez le formulaire :

   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()

Exemple de code complet :

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()

Dans l'exemple de code ci-dessus, il est supposé que l'ID de l'élément d'image du code de vérification sur la page de connexion est « captcha-image », l'ID de la zone de saisie du code de vérification est « captcha-input », l'ID du nom d'utilisateur saisi La boîte est « saisie du nom d'utilisateur » et la saisie du mot de passe. L'identifiant de la boîte est « saisie du mot de passe » et l'identifiant du bouton de connexion est « bouton de soumission ». En fonction de la situation réelle, ces valeurs d'identifiant doivent être remplacées par les identifiants réels des éléments de page.

Remarque : L'exemple ci-dessus s'applique uniquement lorsque l'image du code de vérification est directement intégrée dans la page sous la forme d'une balise img.

4. Comment identifier le code de vérification chargé via la requête Ajax

Si le code de vérification est chargé via une requête Ajax, vous pouvez identifier le code de vérification en suivant ces étapes :

  1. Utilisez Selenium pour ouvrir la page de connexion et attendez que l'image du code de vérification se charge :

   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. Exécutez le code JavaScript pour obtenir l'encodage base64 de l'image du code de vérification :

   captcha_image_base64 = driver.execute_script("return arguments[0].toDataURL('image/png').substring(21);", captcha_image)
  1. Décodez l'encodage base64 en images et enregistrez-les localement :

   with open('captcha.png', 'wb') as f:
       f.write(base64.b64decode(captcha_image_base64))
  1. Utilisez dddocr pour identifier le code de vérification :

  result = ocr.classification('captcha.png', model_type='mixed')
  captcha_code = result[0]['text']
  1. Recherchez la zone de saisie du code de vérification sur la page de connexion et entrez le code de vérification reconnu :

   captcha_input = driver.find_element(By.ID, 'captcha-input')
   captcha_input.send_keys(captcha_code)
  1. Entrez les informations de connexion supplémentaires et soumettez le formulaire :

   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()

Exemple de code complet :

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()

Dans l'exemple de code ci-dessus, il est supposé que l'ID de l'élément d'image du code de vérification sur la page de connexion est « captcha-image », l'ID de la zone de saisie du code de vérification est « captcha-input », l'ID du nom d'utilisateur saisi La boîte est « saisie du nom d'utilisateur » et la saisie du mot de passe. L'identifiant de la boîte est « saisie du mot de passe » et l'identifiant du bouton de connexion est « bouton de soumission ». En fonction de la situation réelle, ces valeurs d'identifiant doivent être remplacées par les identifiants réels des éléments de page.

Remarque : L'exemple ci-dessus s'applique uniquement au cas où l'image du code de vérification est chargée via une requête Ajax et le codage base64 est renvoyé. Si l'image du code de vérification est chargée via d'autres méthodes ou si des données dans d'autres formats (tels que l'URL de l'image) sont renvoyées, vous devez la gérer en conséquence en fonction de la situation spécifique.

Enfin : le didacticiel vidéo complet sur les tests de logiciels ci-dessous a été compilé et mis en ligne. Les amis qui en ont besoin peuvent l'obtenir eux-mêmes [garanti 100 % gratuit]

Document d'entretien sur les tests logiciels

"Nous devons étudier pour trouver un emploi bien rémunéré. Les questions d'entretien suivantes proviennent des derniers documents d'entretien de sociétés Internet de premier plan telles que Alibaba, Tencent, Byte, etc., et certains patrons de Byte ont donné des réponses faisant autorité. Après avoir terminé cela Je crois que tout le monde peut trouver un emploi satisfaisant sur la base des informations recueillies lors de l'entretien.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_50829653/article/details/132830667
conseillé
Classement