python 단순 인증 코드 인식 실현 과정

1.환경 준비
1.1 pillow 와 pytesseract 설치
python 모듈 라 이브 러 리 는 pillow 와 pytesseract 라 이브 러 리 가 필요 합 니 다.직접 pip install 로 설치 하면 됩 니 다.

pip install pillow
pip install pytesseract 
1.2 Tesseract-OCR.exe 설치
다운로드 주소:ocr 다운로드 주소
최신 안정 버 전 다운로드 권장:
tesseract-ocr-w64-setup-v5.0.0.20190623.exe。
설치 과정 은 매우 간단 합 니 다.다음 단 계 를 클릭 하면 끝 납 니 다.그 사이 에 설치 경 로 를 기본 으로 할 수도 있 고 설치 경 로 를 사용자 정의 할 수도 있 습 니 다.설치 한 후에 설치 경 로 를 환경 변수 에 추가 하면 됩 니 다.제 것 처럼:
내 설치 위치:
在这里插入图片描述
환경 변 수 는 이렇게 추가 합 니 다.
在这里插入图片描述
1.3 pytesseract.py 의 ocr 경 로 를 변경 합 니 다.
우리 pip install pytesseract 이후 python 해석 기 설치 위치 패키지 에서 pytesseract.py 파일 을 찾 을 수 있 습 니 다.다음 과 같 습 니 다.
在这里插入图片描述
열 면 변경:
在这里插入图片描述
이로써 환경 준비 작업 은 큰 성 과 를 거 둔 셈 이다.
2.식별 효과 테스트
ocr 는 기본 으로 설치 되 어 있 습 니 다.처음에 숫자 와 영문 자모 인식 을 지원 할 수 있 습 니 다.그 다음 에
우 리 는 인증 코드 그림 을 준비 합 니 다.
在这里插入图片描述
그림 을 captcha.png 라 고 명명 하여 프로그램 과 같은 디 렉 터 리 에 놓 습 니 다.

import pytesseract
from PIL import Image
image = Image.open("captcha.png")
print(pytesseract.image_to_string(image))
효과:
在这里插入图片描述
우 리 는 다시 중국어 인식 을 시도 해 보 자.
식별 하기 전에 우 리 는 먼저 중국어 확장 언어 팩 을 다운로드 해 야 한다.
언어 팩 주소
필요 한 언어 패 키 지 를 다운로드 하 십시오.다음 그림 과 같 습 니 다.빨간색 상자 안에 중국어 간 체 언어 패 키 지 를 포함 합 니 다.
在这里插入图片描述
다운로드 후 이 가방 을 ocr 프로그램 설치 디 렉 터 리 의 tessdata 폴 더 에 직접 넣 으 면 됩 니 다.
在这里插入图片描述
그림 을 찾 아 테스트 해 보 세 요.
在这里插入图片描述

import pytesseract
from PIL import Image
image = Image.open("00.jpg")
print(pytesseract.image_to_string(image,lang='chi_sim'))
효과:
在这里插入图片描述
때때로 텍스트 식 별 률 이 높 지 않 기 때문에 이미지 식별 전에 먼저 이미지 에 대해 그 레이스 케 일과 이치 화 를 하 는 것 을 권장 한다
코드 예제:

import pytesseract
from PIL import Image
file = r"00.jpg"

#               
image = Image.open(file)
Img = image.convert('L')   #    
#       ,            ,        。threshold           (    255)。
threshold = 180
table = []
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)
photo = Img.point(table, '1')  #     
#        
photo.save('01.jpg')

image = Image.open('01.jpg')
#     ,lang='chi_sim'        ,   English
#         ,      config='--psm 6 --oem 3 -c tessedit_char_whitelist=0123456789'
content = pytesseract.image_to_string(image, lang='chi_sim')
print(content)
3.실전 사례 C 고시 문 망 인증 코드 자동 식별 로그 인 실현

import pytesseract
from PIL import Image
from selenium import webdriver


def save_captcha(path):
    driver = webdriver.Chrome()  #        
    driver.maximize_window()
    driver.implicitly_wait(10)
    driver.get(url=url)
    image = driver.find_element_by_id('imgCode')
    image.screenshot(path)
    return driver


def recognize_captcha(captcha_path):
    captcha = Image.open(captcha_path)  #     
    grap = captcha.convert('L')  #           
    data = grap.load()  #           
    w, h = captcha.size  #        (  ,  )
    #        
    for x in range(w):
        for y in range(h):
            if data[x, y] < 140:
                data[x, y] = 0
            else:
                data[x, y] = 255
    code = pytesseract.image_to_string(grap)  #        
    return code


def login(driver, code):
    flag = True
    email = '[email protected]' #             
    password = 'xxxx'
    try:
        driver.find_element_by_id('email').send_keys(email)
        driver.find_element_by_id('pwd').send_keys(password)
        driver.find_element_by_id('code').send_keys(code)
        driver.implicitly_wait(10)
        driver.find_element_by_id('denglu').click()
    except Exception as ex:
        flag = False
    return flag


if __name__ == '__main__':
    url = 'https://so.gushiwen.org/user/login.aspx?from=http://so.gushiwen.org/user/collect.aspx'
    captcha_path = './captcha.png'
    count = 1
    driver = save_captcha(captcha_path)  #     
    code = recognize_captcha(captcha_path)  #      
    print('      :', code)
    if login(driver, code):
        driver.quit()
효 과 는 다음 과 같다.
在这里插入图片描述
총결산
python 이 간단 한 인증 코드 인식 을 실현 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 python 인증 코드 인식 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기