컴퓨터/Python

Python (10) - pytesseract를 이용하여 이미지 안에 있는 글자를 뽑아보자

달서비 2023. 1. 7. 00:32

가끔 우리가 웹사이트의 이미지를 텍스트로 바꿔야 할 때가 있습니다. 이번에는 Tesseract 엔진을 이용하여 이미지를 텍스트로 바꿔보는 방법에 대하여 알아보겠습니다.

 

Tesseract OCR

Tesseract OCR 로고

우선 OCR이란 Optical Character Recognition의 약자로 직역하자면 광학 문자 인식입니다. 사람 혹은 기계가 종이에 작성한 문자를 이미지화하여 기계가 읽을 수 있는 문자로 변환합니다.

Tesseract엔진은 광학 문자를 인식할 수 있는 엔진으로 파이썬을 이용하여 해당 엔진을 조작하고, 문자 인식을 하려고 합니다. 아래는 깃허브에 나와있는 문서로 참조하는 것을 추천합니다.

https://github.com/madmaze/pytesseract

 

GitHub - madmaze/pytesseract: A Python wrapper for Google Tesseract

A Python wrapper for Google Tesseract. Contribute to madmaze/pytesseract development by creating an account on GitHub.

github.com

 

사용하는 방법

※윈도우 환경으로 사용 방법을 작성하였습니다.

 

1. 아래 링크에서 tenseract를 다운로드합니다.

https://github.com/UB-Mannheim/tesseract/wiki

 

GitHub - UB-Mannheim/tesseract: Tesseract Open Source OCR Engine (main repository)

Tesseract Open Source OCR Engine (main repository) - GitHub - UB-Mannheim/tesseract: Tesseract Open Source OCR Engine (main repository)

github.com

32비트, 64비트 PC에 맞게 설치 다운로드 합니다

제작 본격적으로 사용하기 전에 먼저는 엔진을 설치해줘야 합니다.

 

2. 파이썬에서도 실행할 수 있도록  pip로 설치합니다.

pip install pytesseract

 

3. 테스트 코드를 넣고 작동되는지 확인합니다.

import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract'

temp = pytesseract.image_to_string('img.jpg')
print(temp)

여기서 두 번째 줄은 tesseract 엔진이 있는 경로를 적어야 합니다. 그리고 4번째 줄은 소스코드가 있는 곳에 테스트 이미지를 넣어서 결과값이 나오는 경우 작동이 됩니다.

(좌) 넣은 이미지, (우) 작동된 결과

 

인식률을 올리는 방법

위의 테스트 코드 이미지만 변경하여도 몇 개는 풀 수는 있습니다. 하지만 tesseract엔진 자체의 인식률이 처참할 정도로 낮습니다. 테스트 코드에 사용되었던 이미지는 흰색바탕에 검은색 글씨로 컴퓨터가 쉽게 알아볼 수 있습니다. 하지만 조금만 사진이 달라져도 인식이 안 되는 경우가 있습니다. 해결할 수 있는 다양한 방법이 있으나 가장 간단하게 OpenCV를 이용한 회색조 및 음영처리를 통하여 인식률을 올릴 수 있습니다. 

import pytesseract
import cv2

pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract'

IMG = cv2.imread('img.jpg')
IMG_RGB = cv2.cvtColor(IMG, cv2.COLOR_BGR2RGB) #RGB로 변환
IMG_GRAY = cv2.cvtColor(IMG, cv2.COLOR_RGB2GRAY) #회색조로 변환
RES = pytesseract.image_to_string(IMG)
print(RES)

아니면 인식률이 위의 경우에도 낮다면 학습을 통하여 해결할 수 있습니다. 해당 방법은 다른 블로그 게시글을 링크로 첨부합니다.

https://wandukong.tistory.com/7

 

Tesseract OCR 5.0 Windows용 학습 방법

Tesseract OCR을 처음 학습시킬 때 정보가 충분하지 않아 오랜시간 헤맸던 기억이 있다. 방법을 찾아 학습시켜본 지는 꽤 오래됐지만 누군가에게 도움이 되지 않을까 해서 방법을 글로 정리해보려

wandukong.tistory.com

 

마지막으로

해당 엔진은 selenium처럼 브라우저를 자동화할 때 막히는 부분을 해결할 수 있을 것으로 기대합니다. 여기 중요한 것은 학습을 통하여 인식률을 올리는 것을 기대합니다.