참고용 링크
EasyOCR관련 멘토님 문의
영어와 한국어를 동시에 인식할 수 있는 무료 OCR 개발 서비스
GPU 사용이 필수적이다.
⇒ Google Colab 사용
문제점
Colab은 GPU로 런타임을 진행할 수 있다.
하지만, 9기가 데이터셋을 직접 드라이브로 이동시킬 때 용량문제로 인해 옮겨지지 않았다.
결과적으로, 드라이브에 있는 데이터를 mount해서 작동시키기 때문에 local에서 매번 옮기는 부담 및 번거러움이 있다.
∴ Colab에서는 이 경우보다 가벼운 상황일 때 적용하는 것이 좋다.
!pip install easyocr
⇒ Colab에서 진행할 때 !를 쓰면 cmd 명령어 효과를 낼 수 있다.
실제 easyOCR을 적용시킨 결과이다.
import easyocr
import numpy as np
from PIL import ImageFont, ImageDraw, Image
import cv2
import random
import matplotlib.pyplot as plt
reader = easyocr.Reader(['ko', 'en'])
result = reader.readtext("/content/drive/MyDrive/Nengcipe/OCR/Goods/data1.jpg")
img = cv2.imread("/content/drive/MyDrive/Nengcipe/OCR/Goods/data1.jpg")
img = Image.fromarray(img)
font = ImageFont.truetype("/content/drive/MyDrive/Nengcipe/OCR/fonts/HMKMRHD.TTF",25)
draw = ImageDraw.Draw(img)
np.random.seed(42)
COLORS = np.random.randint(0, 255, size=(255, 3),dtype="uint8")
for i in result :
x = i[0][0][0]
y = i[0][0][1]
w = i[0][1][0] - i[0][0][0]
h = i[0][2][1] - i[0][1][1]
color_idx = random.randint(0,255)
color = [int(c) for c in COLORS[color_idx]]
draw.rectangle(((x, y), (x+w, y+h)), outline=tuple(color), width=2)
draw.text((int((x + x + w) / 2) , y-2),str(i[1]), font=font, fill=tuple(color),)
plt.imshow(img)
plt.show()
결과
코드 문제점
opencv를 활용하여 easyOCR를 사용하면, 영어 이외의 언어는 ????로 보이게 된다. (인코딩 문제x)
코드 해결점
Pillow를 이용해 텍스트를 그릴 때 언어 관계없이 결과를 확인할 수 있다.
주의점
모든 루트는 colab 즉, drive 저장된 img 루트로 작성해야한다.
⚡
OCR 인식의 정확도를 높이기 위해 contour 인식이 필요하다.