가끔 우리가 웹사이트의 이미지를 텍스트로 바꿔야 할 때가 있습니다. 이번에는 Tesseract 엔진을 이용하여 이미지를 텍스트로 바꿔보는 방법에 대하여 알아보겠습니다.
Tesseract OCR
우선 OCR이란 Optical Character Recognition의 약자로 직역하자면 광학 문자 인식입니다. 사람 혹은 기계가 종이에 작성한 문자를 이미지화하여 기계가 읽을 수 있는 문자로 변환합니다.
Tesseract엔진은 광학 문자를 인식할 수 있는 엔진으로 파이썬을 이용하여 해당 엔진을 조작하고, 문자 인식을 하려고 합니다. 아래는 깃허브에 나와있는 문서로 참조하는 것을 추천합니다.
https://github.com/madmaze/pytesseract
사용하는 방법
※윈도우 환경으로 사용 방법을 작성하였습니다.
1. 아래 링크에서 tenseract를 다운로드합니다.
https://github.com/UB-Mannheim/tesseract/wiki
제작 본격적으로 사용하기 전에 먼저는 엔진을 설치해줘야 합니다.
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
마지막으로
해당 엔진은 selenium처럼 브라우저를 자동화할 때 막히는 부분을 해결할 수 있을 것으로 기대합니다. 여기 중요한 것은 학습을 통하여 인식률을 올리는 것을 기대합니다.
'컴퓨터 > Python' 카테고리의 다른 글
Python (12) - 재귀함수를 이용하여 팩토리얼, 하노이탑을 풀어보자 (0) | 2023.01.14 |
---|---|
Python (11) - 스택(Stack)과 큐(Queue) 구현하기 (0) | 2023.01.09 |
Python (9) - BeautifulSoup를 이용하여 디시인사이드에 웹 크롤링을 해보자 (4) | 2023.01.03 |
Python (8) - Base64 방식을 이용한 이미지 인코딩, 디코딩 (0) | 2022.12.15 |
Python (7) - 튜플(tuple)을 알아보자 {vs 리스트(list)} (0) | 2022.04.08 |