Артефакт! Используйте Python, чтобы легко идентифицировать коды подтверждения
Артефакт! Используйте Python, чтобы легко идентифицировать коды подтверждения

Предисловие

В процессе нашего автоматического тестирования мы неизбежно сталкиваемся с проверочными кодами при входе в систему. Часто мы можем только запросить у разработчиков универсальные проверочные коды или временно отключить функцию проверочного кода, но иногда мы должны спросить, может ли проверочный код генерироваться нормально, так что на данный момент все, что нам нужно сделать, это Введите код подтверждения, но код подтверждения генерируется случайным образом и не каждый раз один и тот же, поэтому нам все равно нужно его идентифицировать и ввести. У скрипта нет глаз, и его можно идентифицировать только по коду, поэтому в этой статье он будет представлен. Как использовать Python для простой идентификации числовых капч.

Установите библиотеки Python и программные среды.

Распознавание кода проверки требует использования некоторых библиотек Python и программных сред. Их этапы установки описаны ниже.

  1. Установите Тессеракт OCR

Это механизм оптического распознавания символов с открытым исходным кодом.,Используется для текстового содержимого в Определить код подтверждения.,Способен распознавать текст на более чем 70 языках.,и предоставить разработчикам простые в использованииAPI。Скачать и установить можно по ссылке ниже.:https://github.com/tesseract-ocr/tesseract。существоватьWindowsЕго можно скачать в системеexeфайл для установки。

Примечание:TesseractПосле завершения установки вам необходимоtesseract.exeДобавьте путь к файлу в переменную системной среды.,В противном случае его нельзя будет вызвать в сценариях Python.

  1. Необходимые библиотеки Python

Необходимо использовать идентификацию кода подтверждения.PythonБиблиотека включает в себя:pillow(PIL)pytesseractиopencv-python。pillowдляPythonПоставляется со стандартной библиотекой,Другие библиотеки можно установить автоматически с помощью команды pip:

Язык кода:python
кодКоличество запусков:0
копировать
pip install pytesseract
pip install opencv-python

Распознавание простых числовых кодов проверки

  1. Подготовьте изображение кода подтверждения

Во-первых, нам нужно подготовить несколько изображений проверочного кода. Вы можете найти изображения кода подтверждения в Интернете и загрузить их или использовать программу-сканер Python для сканирования кода подтверждения целевого веб-сайта. Здесь мы сначала вручную загружаем простое изображение цифрового кода проверки и сохраняем его как «test.jpg».

  1. Загрузить изображение кода подтверждения

Мы можем использовать библиотеку Pillow (библиотека изображений Python) для загрузки изображения кода проверки. Библиотека Pillow может читать и обрабатывать различные категории форматов изображений, таких как jpg, png, bmp и т. д. Код выглядит следующим образом:

Язык кода:python
кодКоличество запусков:0
копировать
from PIL import Image
img = Image.open('test.jpg')
img.show()
  1. Определить код подтверждения

использоватьpytesseractБиблиотека,Мы легко можем определить цифры на картинке.。pytesseractБиблиотеказависит отTesseract Механизм OCR может обрабатывать проверочные коды различной сложности, такие как цифры, буквы, китайские иероглифы, наклон, деформация и т. д. Код выглядит следующим образом:

Язык кода:python
кодКоличество запусков:0
копировать
import pytesseract
text = pytesseract.image_to_string(Image.open('test.jpg'), lang='eng')
print(text)

этот абзацкодзначит использоватьpytesseractБиблиотека Преобразование строк в изображениядляхарактер。langПараметры могут указывать тип распознаваемого языка.,здесь мыиспользовать Понятноeng,Указывает английский. Если код подтверждения состоит из китайских иероглифов,настраиватьдляchi_simВот и все。

Распознавание буквенно-цифровых кодов проверки

Если код проверки содержит как цифры, так и буквы, необходимо изменить метод распознавания. Ниже представлен простой метод обработки, который заключается в увеличении скорости распознавания за счет обработки бинаризации и шумоподавления.

Бинаризация

Бинаризация – это преобразование всех пикселей изображения в черно-белое. Для изображений кода проверки,Мы можем преобразовать его в черно-белое изображение в оттенках серого.,Для облегчения последующей обработки. код следующий:

Язык кода:python
кодКоличество запусков:0
копировать
import cv2
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
retval, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
cv2.imshow('Image', threshold)
cv2.waitKey(0)
cv2.destroyAllWindows()

В этом абзаце используется библиотека OpenCV для считывания изображения в изображение в оттенках серого.,И провести Бинаризацию. в,127 это порог,Чем меньше значение,Чем больше черных деталей,Белой части меньше. После запуска вы можете получить бинаризированное изображение.

Обработка шумоподавления

После бинаризации,На изображении все еще присутствует шум и отвлекающие линии. Если с этими шумами не бороться,Повлияет на последующее распознавание символов,Поэтому необходимо провести Обработку шумоподавления.,Удалите шум и отвлекающие линии с изображений. код следующий:

Язык кода:python
кодКоличество запусков:0
копировать
import cv2
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
retval, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
blur = cv2.GaussianBlur(threshold,(5,5),0)
cv2.imshow('Image', blur)
cv2.waitKey(0)
cv2.destroyAllWindows()

Этот код использует функцию фильтра Гаусса для сглаживания изображения и устранения шума и мешающих линий. Среди них (5,5) указывает размер ядра. Чем больше значение, тем очевиднее эффект сглаживания. После запуска вы сможете получить обработанную картинку.

Определить код подтверждения

Для кодов проверки, содержащих смесь цифр и букв, нам необходимо идентифицировать каждый символ. Метод сегментации символов можно использовать для сегментации изображения кода проверки на односимвольное изображение, а затем выполнения распознавания символов. Код выглядит следующим образом:

Язык кода:python
кодКоличество запусков:0
копировать
import pytesseract
import cv2
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
retval, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
blur = cv2.GaussianBlur(threshold, (5,5), 0)
contours, hierarchy = cv2.findContours(blur, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
count = 0
for contour in contours:
    (x,y,w,h) = cv2.boundingRect(contour)
    if w > 10 and h > 10:
        roi = blur[y:y+h, x:x+w]
        cv2.imwrite(str(count)+'.jpg', roi)
        text = pytesseract.image_to_string(roi, lang='eng')
        print(text)
        count += 1
cv2.imshow('Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

В этом абзаце сначала происходит бинаризация изображения и Обработка. шумоподавления,ОднаконазадиспользоватьfindContoursФункция находит и сегментирует контур края каждого символа.。СноваиспользоватьboundingRect函数得到每个характер的位置иразмер,ииспользоватьimage_to_stringФункция выполняет распознавание символов для каждого символа。бегатькодназад,Вы можете видеть, что результатом вывода является каждый сегментированный символ и результат его распознавания.

Подвести итог

В этой статье объясняется, как использовать Python и связанные библиотеки для распознавания числовых кодов проверки. С помощью этого метода мы можем реализовать автоматическое распознавание кодов проверки и использовать их для автоматического тестирования, сканирования или других сценариев, требующих обработки кода проверки. В практических приложениях метод распознавания может быть дополнительно оптимизирован и скорректирован в соответствии с конкретными потребностями для получения лучших результатов распознавания.

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода