본문 바로가기

Python/DeepLearning

가상환경에서 tesseract 실행하기

 자꾸 MARVEL의 Tesseract가 생각나지만 tesseract는 구글이 개발한 OCR Engine이다. 프로젝트 때문에 사용해야 하는데 python 환경에서 사용하려면 다음과 같은 라이브러리를 설치해야한다.

import pytesseract

짧은 코드를 작성하여 실행해본다.

from PIL import Image
import pytesseract
import argparse
import cv2
import os

ap = argparse.ArgumentParser()
ap.add_argument('-i', '--image', required=True, help="path to input image to be OCR'd")
ap.add_argument('-p', '--preprocess', type=str, default='thresh', help="type of preprocessing to be done")
args = vars(ap.parse_args())

image = cv2.imread(args['image'])
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

if args['preprocess'] == 'thresh':
    gray = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
elif args['preprocess'] == 'blur':
    gray = cv2.medianBlur(gray, 3)

filename = '{}.png'.format(os.getpid())
cv2.imwrite(filename, gray)

text = pytesseract.image_to_string(Image.open(filename))
os.remove(filename)
print(text)

cv2.imshow('Image', image)
cv2.imshow('Output', gray)
cv2.waitKey(0)

하지만 아래와 같은 에러가 뜨면서 제대로 진행되지 않는다.

pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your path

python에서 실행하려면 곱게 tesseract를 컴퓨터에 설치 이후 path에 넣어주어야 한다. 하지만 가상 환경에서는 제대로 실행되지 않는 모습을 보인다. path를 내 컴퓨터가 아닌 가상 환경으로 잡아주기 때문이다. 이 때에는 직접 라이브러리를 수정한다.

# CHANGE THIS IF TESSERACT IS NOT IN YOUR PATH, OR IS NAMED DIFFERENTLY
tesseract_cmd = "#실제적인 주소/tesseract.exe"
#pytesseract.py

pytesseract.py를 열어 35번째 줄을 확인하면 tesseract 라고 적혀있다. 이를 실제 환경 주소로 바꿔준다. 이후 실행하면 제대로 실행되는 것을 알 수 있다.