이번 포스팅은 OCR 성능 높이기 위한 접근방식 정리 내용입니다.
살펴볼 테스트 이미지는 아래와 같습니다.
제 지갑속에 박혀있던 영수증입니다.
슬쩍 보아하면 코스트코 코리아, 중랑구 등등
육안으로는 어렵지 않게 알아 볼 수 있는 글씨 이지만,
사람은 어떤 단어를 볼 때,
전의 글자와 다음 글자를 통해 단어를 판단하는
유추 기능이 자동 탑재되어 있다는 것을 고려해야 합니다.
그래서 컴퓨터로 이미지 속 문자 추출을 제대로 하려면,
이미지 속 보이는 문자의 퀄리티가 좋아야 합니다.
아무튼,
easyOCR 라이브러리 활용 코드 구성은
import cv2
import easyocr as ocr
img = cv2.imread('test.jpg')
reader = ocr.Reader(['ko', 'en'], gpu = False)
text = reader.readtext(img, detail = 0)
print(text)
이와 같고,
파이썬 코드 구성은 굉장히 단순한 것을 확인할 수 있습니다.
위의 이미지를 가지고 출력물을 확인해보면,
[':예4-위', '{어트;트', '감환사밥기도(<기엽응*', '(주)', '고스트코', '코리 아', '상봉 손', '107-81-63829', '대 표자: 조민 수', '충항 주', "망우로'", '936', '7)1899-9900)', '회원', '번호: 000000000063', '11', '판 매', '이 0 ^ 이메리가노', '577445', '2', '1000', '2,0))', '1', '(-신6-총상 품수', ':', '2)', '200)', '맨 시', '시', '1,813', '부', '7 어', '182', '합', '겨', '2,00)', '든', '10,00~', '현금( 소득공제) : 010***1234', '승신 ! 호; 122986911', '[벼]', '승민 끝 백', '2000', '현 금근 수증', '문의', '8126', '산문', '8,00~']
육안으로 확인했을 때의 흐릿한 부분은 상대적으로 잘 나오지 않는 것을 확인할 수 있습니다.
그래서 이미지 전처리 작업 후에 접근을 해보려 합니다.
적용 해볼 것들은 다음과 같습니다.
- 이진화를 통한 대비 극대화
- 노이즈 제거
- Edge 검출
- 모폴로지 연산 적용
- 기울기 보정(미정)
이렇게 해보고도 안되면
기존 easyOCR 모델에 추가 학습을 하는 방향도 생각 중 입니다.
각각의 디테일한 적용 이유는 출력 결과와 함께
추가 포스팅 쭉 하도록 하겠습니다.
감사합니당 ~ 🦾