にアクセスすると、まず番号のcaptchaが出てきます。
これは画像認識で突破しましたが、次にアルファベットで読みづらそうなcaptchaが出てきます。
画像認識は複雑で無理でした。
音声認識は、スピーカーから流れる音をマイクで拾って音声を読み取って入力しても、
正確にアルファベットを聞き取ることができないようです。
どなたかお力を貸していただけないでしょうか。
python
1rom selenium import webdriver 2from selenium.webdriver.common.keys import Keys 3from bs4 import BeautifulSoup 4import requests 5import pandas as pd 6import csv 7import time 8import urllib.parse 9import re 10import numpy as np 11from selenium.webdriver.common.by import By 12from selenium.webdriver.common.action_chains import ActionChains 13from selenium.webdriver.chrome.options import Options 14from selenium.common.exceptions import NoSuchElementException 15from selenium.common.exceptions import ElementNotInteractableException 16from PIL import Image, ImageTk, ImageGrab 17import pytesseract 18import cv2 19import matplotlib.pyplot as plt 20from PIL import Image 21import speech_recognition as sr 22from selenium.webdriver.support.ui import WebDriverWait 23from selenium.webdriver.support import expected_conditions as EC 24import sounddevice as sd 25 26 27 28browser = webdriver.Chrome() 29browser.maximize_window() 30url= "https://www.uen.gov.sg/" 31browser.get(url) 32 33 34# full screen 35#ImageGrab.grab().save("PIL_capture.png") 36# 指定した領域内をクリッピング 37ImageGrab.grab(bbox=(700, 800, 1150, 1050)).save("PIL_capture_clip.png") 38#bbox=(左, 上, 右, 下) 39img = Image.open("PIL_capture_clip.png") 40#img.show() # 画像表示 41time.sleep(1) 42 43num = pytesseract.image_to_string(img, config = "--psm 7 nobatch digits") 44 45print(num) 46time.sleep(3) 47WebDriverWait(browser,15).until(EC.presence_of_element_located((By.XPATH, "//*[@id='input1']"))) 48userNameField = browser.find_element_by_xpath("//*[@id='input1']") 49userNameField.send_keys(int(num)) 50 51WebDriverWait(browser,15).until(EC.presence_of_element_located((By.XPATH, "//*[@id='Button1']"))) 52submitButton = browser.find_element_by_xpath("//*[@id='Button1']") 53submitButton.click() 54 55time.sleep(0.5) 56 57WebDriverWait(browser,15).until(EC.presence_of_element_located((By.XPATH, "//*[@id='pt1:r1:0:r1:0:cb21']"))) 58submitButton = browser.find_element_by_xpath("//*[@id='pt1:r1:0:r1:0:cb21']") 59submitButton.click() 60 61#0 Built-in Microphone, Core Audio (2 in, 0 out) 62#1 Built-in Output, Core Audio (0 in, 2 out) 63 64r = sr.Recognizer() 65mic = sr.Microphone() 66 67with mic as source: 68 r.adjust_for_ambient_noise(source) 69 audio = r.listen(source) 70 71#print(r.recognize_google(audio,language = 'eg-US')) 72 73audio = r.recognize_google(audio, language='eg-US') 74 75#print(type(audio)) 76 77code = browser.find_element_by_xpath("//*[@id='pt1:r1:0:r1:0:it1::content']") 78code.send_keys(audio) 79print(audio) 80 81time.sleep(4) 82submitButton = browser.find_element_by_xpath("//*[@id='pt1:r1:0:cb11::icon']") 83submitButton.click() 84
拝見しましたが、最初の数字の Captcha ならプログラムでも簡単でしょうけど、2番目のやつはプログラムでは無理だと思いますよ。
パターンによっては人間でも判読がしづらいです。
やはりそうですよね。。ありがとうございます。
ただ、音声認識もあるので、何か方法がないかと思っておりますが。。厳しいでしょうか。
音声のほうを聞きましたが、こちらであれば、音声認識でいけそうな気もします。
ただ私は音声認識は専門ではないので、具体的なやり方は申し上げられないです。
少なくとも画像認識では簡単なパターンがたまたま出てくるとかでなければ、非常に難しいだろうということは言えます。
アドバイスいただきましてありがとうございました。
音声の方向から調べてみます
あなたの回答
tips
プレビュー