본문 바로가기

머신러닝/OCR

EasyOCR 사용 방법

https://wandukong.tistory.com/8

 

EasyOCR 소개

오늘은 유명한 OCR 프레임워크인 EasyOCR에 대해 소개해보려고 합니다. 깃허브 : https://github.com/JaidedAI/EasyOCR GitHub - JaidedAI/EasyOCR: Ready-to-use OCR with 80+ supported languages and all popu..

wandukong.tistory.com

이전 포스팅에서 EasyOCR를 소개했었는데요, 오늘은 이어서 EasyOCR을 사용하는 방법을 설명하려 합니다.


(1) anaconda 가상 환경 만들기

anaconda 가상 환경을 만들어줍시다.

conda create -n "easyocr" python=3.7 -y
conda activate easyocr

(2) EasyOCR 설치

아래 명령어로 easyocr을 설치합니다.

pip install easyocr

 


(3) 기본 사용 방법

실험에 사용할 이미지를 준비해줍니다. 저는 easyocr 레포지토리의 예시 이미지를 사용했습니다.

 

import easyocr

reader = easyocr.Reader(['en']) # 'en': 영어로 설정
result = reader.readtext('ex.png') 
print(result)

사용하고 싶은 언어로 reader를 만들고 readtext 함수를 사용하면 간단하게 end-to-end ocr 을 실험해 볼 수 있습니다.

print 결과입니다. Detection 박스 좌표, Recognition 결과, Confidence를 차례대로 보여주는 것을 알 수 있습니다.

참고로 easyocr의 영어 성능은 꽤 좋은 편이지만, 한글 성능은 영어에 비하면 좋은 편은 아닌 것 같습니다. (제피셜,,)

한글을 실험해보고 싶다면, 아래와 같이 'en' -> 'ko'로 바꿔주시면 됩니다.

reader = easyocr.Reader(['ko']) # 'ko': 한글로 설정

+ 01/16 기준 opencv error

참고: https://github.com/opencv/opencv-python/issues/602

craft_utils.py", line 31, in getDetBoxes_core nLabels, labels, stats, centroids = cv2.connectedComponentsWithStats(text_score_comb.astype(np.uint8), connectivity=4)
cv2.error: Unknown C++ exception from OpenCV code

 

위와 같은 opencv의 connectedComponentsWithStats 함수에서 에러가 발생하는데

opencv 4.5.5.62 버전에서 위와 같은 에러가 발생한다고 합니다.

기존 opencv를 uninstall 하고 4.5.4.60 버전으로 설치하면 해결됩니다.

pip install opencv-python==4.5.4.60

(4) 다양한 기능

1. cpu/gpu 사용

Reader 내부

Reader클래스의 내부를 보면 gpu=True가 default 값입니다.

참고로 gpu를 사용했을 때 easyocr 속도가 훨씬 빠릅니다.

cpu만을 사용하고 싶다면 이렇게 설정해주시면 됩니다.

reader = easyocr.Reader(['en'], gpu=False)

단, gpu를 True로 설정해놓아도 pytorch를 cpu버전으로 설치했다면 cpu만을 사용하게 됩니다.

 

2. detection 과 recognition을 분리해서 사용

위에서 사용해 보았던 readtext 함수는 detection + recognition 을 한 번에 실행합니다.

easyocr에서는 detection과 recognition을 따로 할 수 있도록 분리되어 있는데요,

import easyocr

reader = easyocr.Reader(['en'])
result = reader.detect('ex.png') # detect 함수 사용
print(result)

이렇게 readtext 함수를 detect로 바꿔주면 detect만 따로 실험해 볼 수 있습니다.

 

 

아까랑은 다르게 Bounding Box 정보만 출력되는 것을 볼 수 있습니다.

recognition도 마찬가지로 recognize 함수로 따로 실험해볼 수 있습니다.

 

3. 다양한 parameter 사용

readtext 함수

readtext 함수의 내부만 들여다 봐도 이렇게나 많은 parameter가 존재합니다.

사용자가 원하는 대로 값을 설정해서 사용하면 됩니다.

 

저는 그 중에서도 rotation_info 에 대해 조금 소개를 드리려고 합니다.

왜냐하면 제가 만든 기능이기 때문입니다 우하하,,

당시 EasyOCR update 내용

바로.. 회전된 문자열에 대해서도 인식이 가능하도록 하는 기능입니다.

기존 EasyOCR에서 회전된 문자열을 인식할 수 없는 것에 대해 issue가 자주 있었어서 해결해보았습니다.

 

최근 업데이트 내용을 확인해보니 이 기능이 더 개선되었더라구요.

자세한 내용은 최근 업데이트 내용을 확인해보시면 좋을 것 같습니다 ㅎㅎ

 

 

이 글이 EasyOCR을 사용해보려는 누군가에게 도움이 되었길 바랍니다!☺️

다음에는 EasyOCR을 학습하는 방법도 포스팅하겠습니다.

반응형

'머신러닝 > OCR' 카테고리의 다른 글

[논문 리뷰] SynthTIGER 리뷰  (0) 2022.03.18
pytesseract 사용방법  (0) 2021.11.04
EasyOCR 소개  (0) 2021.10.10
Tesseract OCR 5.0 Windows용 학습 방법  (23) 2021.08.26
Tesseract OCR  (0) 2021.05.08