한우경매낙찰 유튜브 영상의 이미지에서 특정 문자 가져와서 저장하기
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
import time
from PIL import Image #이미지정확도필요없을때
from PIL import ImageGrab #이미지정확도필요할 때
import pyautogui
import easyocr
def extract_numbers_from_image(image):
reader = easyocr.Reader(['en']) # 언어 설정을 필요에 따라 조정하세요 (예: 'ko' 또는 'en')
results = reader.readtext(image)
extracted_text = ""
for (bbox, text, prob) in results:
extracted_text += text + " "
return extracted_text.strip()
# 이후 코드는 이전과 동일합니다.
# Chrome 드라이버 경로를 설정합니다.
driver_path = 'e:/python/py_code/chromedriver.exe' # 여기서 '/path/to/chromedriver'를 실제 드라이버 경로로 변경하세요.
# ChromeDriver의 Service 객체를 생성합니다.
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless') # 필요한 경우, 브라우저를 화면에 표시하지 않고 실행할 수 있습니다.
chrome_options.add_argument('--start-maximized')
# 자동 플레이 활성화
prefs = {"profile.default_content_setting_values.autoplay": 1}
chrome_options.add_experimental_option("prefs", prefs)
# 크롬 서비스 객체를 생성합니다.
chrome_service = webdriver.chrome.service.Service(executable_path=driver_path)
# 크롬 웹 드라이버를 시작합니다.
driver = webdriver.Chrome(service=chrome_service)
# 동적 페이지의 URL을 엽니다.
url = 'https://www.youtube.com/watch?v=AZHK3AFE6Hg'
driver.get(url)
# 페이지가 로드될 때까지 잠시 대기합니다. (필요에 따라 대기 시간을 조정하세요)
driver.implicitly_wait(10)
# 찾고자 하는 이미지 파일 경로 설정
tar_nack = r'C:\Users\Administrator\chuck\3.png' # '낙찰금액' 대상 이미지 파일 경로로 변경하세요.
tar_youc = r'C:\Users\Administrator\chuck\4.png' # '유찰되었습니다' 한글 사용시 인식안됨.
extracted_text_list1 = [] #번호저장
extracted_text_list2 = [] #금액저장
def s_img(tar_img,per):
# 대상 이미지 로드
screenshot = ImageGrab.grab()
target_image = Image.open(tar_img)
# 화면 캡처 및 전체 화면 이미지 가져오기
screenshot = pyautogui.screenshot()
# 이미지 매칭 수행
location = pyautogui.locateOnScreen(tar_img, confidence=per)
print('정보 출력', location)
if location:
# 이미지 일치 위치 출력
print("이미지 일치 위치:", location)
# 이미지 일치 위치를 변수에 할당
left, top, width, height = location
print("left:", left)
print("top:", top)
print("width:", width)
print("height:", height)
# 화면 캡처
screenshot1 = capture_screen(x = 125, y = 370, width = 210, height = 110)
# 이미지 보정
screenshot1 = screenshot1.convert('L') # 그레이스케일로 변환
screenshot1 = screenshot1.filter(ImageFilter.SHARPEN) # 선명도 향상
screenshot1 = ImageEnhance.Contrast(screenshot1).enhance(2.0) # 대비 향상 (필요에 따라 조절)
screenshot1.save('img1.png')
#screenshot1.show() # 캡처된 이미지 표시 (테스트용)
screenshot2 = capture_screen(x = 125, y = 610, width = 210, height = 90)
screenshot2 = screenshot2.convert('L') # 그레이스케일로 변환
screenshot2 = screenshot2.filter(ImageFilter.SHARPEN) # 선명도 향상
screenshot2 = ImageEnhance.Contrast(screenshot2).enhance(2.0) # 대비 향상 (필요에 따라 조절)
screenshot2.save('img2.png')
#screenshot2.show() # 캡처된 이미지 표시 (테스트용)
time.sleep(2)
extracted_text = extract_numbers_from_image('img1.png')
extracted_text_list1.append(extracted_text)
print("easyOCR로 추출된 숫자:", extracted_text)
print(extracted_text_list1)
extracted_text = extract_numbers_from_image('img2.png')
extracted_text_list2.append(extracted_text)
print("easyOCR로 추출된 숫자:", extracted_text)
print(extracted_text_list2)
#위의 코드는 특정 화면 좌표 (x, y)에서 시작하여 너비 width와 높이 height의 영역을 화면 캡처한 후, 추출된 이미지에서 텍스트를 추출합니다. 이 코드를 실행하면 해당 좌표에서 숫자를 추출할 수 있을 것입니다.
#참고로, pytesseract를 사용하면 이미지의 텍스트 추출 정확도는 이미지 품질 및 글꼴에 따라 다를 수 있습니다. 때로는 이미지 전처리를 통해 정확성을 높일 수도 있습니다.
time.sleep(1)
from PIL import ImageGrab, Image
import pytesseract
from PIL import Image, ImageEnhance, ImageFilter, ImageDraw
# 화면 캡처 함수
def capture_screen(x, y, width, height):
screenshot = ImageGrab.grab(bbox=(x, y, x + width, y + height))
return screenshot
while True:
s_img(tar_nack,per=0.9)
s_img(tar_youc,per=0.9)
print('타임슬립10초')
time.sleep(60)
# 웹 드라이버를 종료합니다.
driver.quit()