한글 OCR with opencv, pytesseract - 인식률 높이기

yun·2023년 9월 6일
0

OCR

목록 보기
2/2

Contour

  • 같은 값을 가진 곳을 연결한 선
  • 이미지의 외곽선을 검출하기 위해 사용

실습

# contour를 찾아 크기가 작은 순으로 정렬
cnts = cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
cnts = sorted(cnts, key=cv2.contourArea, reverse=True)

photo_cnt = None

# 정렬된 contour를 반복문으로 수행하며 윤곽 추출
for c in cnts:
    peri = cv2.arcLength(c, True)
    approx = cv2.approxPolyDP(c, 0.02 * peri, True)

    print(len(approx))  # 5, 3, 11, 16

    # 전체이미지를 가져올 거니까
    if len(approx) == 5:
        photo_cnt = approx
        break

# 만약 추출한 윤곽이 없을 경우 오류
if photo_cnt is None:
    raise Exception(("Could not find receipt outline."))

참고한 예시에서는 문서나 영수증을 스캔해서 4각형 윤곽을 가져왔는데,
실습한 이미지는 인식해야 하는 부분이 5각형이다.

opencv drawContours 함수 살펴보기

  • InputOutputArray: image
    • 보정하려는 이미지
  • InputArrayOfArrays: contours
    • 모든 컨투어 입력값. 각 컨투어가 포인트 벡터로 저장된다.
  • int: coutourIdx
    • 그려야 하는 윤곽 지정. 음수이면 모든 윤곽을 그린다.
  • const Scalar &: color
    - 윤곽 색상
  • int: thickness
    • 윤곽선 두께. 음수로 작성하면 윤곽 내부를 채운다.

난관

four_point_transform을 실행하려 했으나,
size가 10이므로 (4,2) 형태로 reshape에 실패한다..

참고문헌

0개의 댓글

관련 채용 정보