python 스 크 립 트 인증 코드 인식

최근 에 인증번호 인식 을 괴 롭 히 고 있 습 니 다.최종 스 크 립 트 의 인 식 률 은 92%안팎 이 고 9000 장의 인증 코드 는 약 8 천 3400 장 정 도 를 식별 할 수 있다.그래,사실은 인증번호 가 너무 간단 해.다음은 식별 할 인증 코드 입 니 다.

저 는 주로 Python 의 PIL 라 이브 러 리 를 사용 합 니 다.
우선 이치 화 처 리 를 진행 하 다.그림 속 의 노 이 즈 색상 이 비교적 옅 기 때문에 한도 값 을 설정 하여 직접 걸 러 낼 수 있다.여기 서 제 가 설정 한 한도 값 은 150 이 고 픽 셀 이 150 이상 인 할당 값 은 1 이 며 작은 할당 은 0 입 니 다.

def set_table(a):
  table = []     
  for i in range(256):
    if i < a:
      table.append(0)
    else:
      table.append(1)
  return table

img = Image.open("D:/python/    /A"+str(i)+".jpg")
pix = img.load()

#          
img1 = img.convert('L')

#   150,   1,          
img2 = img1.point(set_table(150),'1') 
처 리 된 그림 은 다음 과 같다.

한도 값 에 따라 발생 하 는 다른 효과:

다음은 그림 을 분할 합 니 다.그림 의 모든 픽 셀 점 을 옮 겨 다 니 며 픽 셀 이 0 인 점 의 개수(jd)를 계산 합 니 다.인접 한 두 열 에 대해 서 는 그 중의 한 열 jd=0 이 고 다른 열 jd!=0.이 열 은 인증 코드 의 문자 경계 라 고 볼 수 있 고 이 를 통 해 인증 코드 를 분할 할 수 있 습 니 다.이렇게 분할 하면 비교적 좋 은 효 과 를 얻 을 수 있 고 분할 한 후에 얻 은 문자 그림 은 거의 템 플 릿 과 똑 같 을 수 있다.

(Width,Height) = img2.size
pix2 = img2.load()
x0 = []
y0 = []

for x in range(1,Width):
  jd = 0
  # print x
  for y in range(1,Height):
    # print y
    if pix2[x,y] == 0:
      jd+=1
  y0.append(jd)
  if jd > 0:
    x0.append(x)

#             ,           
for a in range(1,Width):
  if (y0[a] != 0)&(y0[a+1] != 0):
    sta1 = a+1
    break
분할 이 완 료 된 후에 식별 에 대해 현재 몇 가지 방법 이 있다.그림 의 모든 픽 셀 점 을 옮 겨 다 니 며 픽 셀 값 을 가 져 오고 문자열 을 가 져 올 수 있 습 니 다.이 문자열 을 템 플 릿 의 문자열 과 비교 하여 한 명 거리 나 편집 거리(즉 두 문자열 의 차이 점)를 계산 할 수 있 습 니 다.Python-Levenshtein 라 이브 러 리 로 구현 할 수 있 습 니 다.
내 가 채택 한 것 은 비교적 특징 적 인 벡터 로 식별 한 것 이다.먼저 4 개의 세로 특징 벡터 를 설정 하여 0,2,4,6 열 에 있 는 픽 셀 값 이 0 인 점 의 개 수 를 계산 하고 템 플 릿 과 비교 하 며 한도 값 보다 작 으 면 이 문자 가 템 플 릿 과 같다 고 생각 합 니 다.식별 율 을 높이 기 위해 수직 특징 벡터 를 통 해 식별 에 성공 하지 못 하면 수평 특징 벡터 를 도입 하여 계속 식별 하고 원 리 는 수직 특징 벡터 와 같다.
또 국 지적 특징 을 통 해 식별 할 수 있다.이것 은 회전 방 해 를 넣 은 인증 코드 에 좋 은 효과 가 있다.내 가 쓴 스 크 립 트 의 식별 율 이 이미 요구 에 도 달 했 기 때문에 이것 을 사용 하지 않 았 다.
마지막 결 과 는 이렇다.

최종 적 으로 템 플 릿 라 이브 러 리 가 25 개 밖 에 없 는 상황 에서 식별 율 은 92%안팎(총 1 만 6 천 장의 인증 코드 를 테스트 했다)이다.좋아,인증번호 가 너무 간단 하 다 고 할 수 밖 에 없어.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기