이번 글에서는 이미지에서 문자를 추출하는 코드를 작성해 보았습니다. 이미지의 경우 쉽게 테스트하기 위해서 메모장에 글을 쓰고 이미지로 저장하였습니다. 이미지 추출 시 Naver Clover의 API와 Tesseract 사이에서 고민하였지만 Clover의 경우 자주 사용할 시 추가 금액이 발생하기 때문에 Tesseract으로 간단히 진행하였습니다. 한글의 경우 Clover가 더 성능이 우수하기에 Tesseract로 진행 시 인식률이 떨어질 가능성이 높으니 참고하시길 바랍니다.
⭐ 코드가 사용된 환경은 Windows와 jupyter notebook입니다.
OpenCV(Open Source Computer Vision)
영상 처리에 사용하는 오픈 소스 라이브러리입니다. 카메라로 찍어서 할 수 있는 모든 일을 처리할 수 있습니다. 이번 글에서는 이미지를 읽어서 흑백으로 변환시키는데 사용됩니다.
Pyplot
Matplotlib를 MATALAB처럼 작동하게 만드는 모음입니다. 이번 글에서는 흑백으로 변환한 이미지를 확인하는데 사용됩니다.
👀 Matplotlib : python 프로그래밍 언어 및 수학적 확장 NumPy 라이브러리를 활용한 플로팅 라이브러리
👀 글자 추출을 위해 흑백으로 이미지를 변환하는 이유
이미지 흑백 처리는 Grayscale로 이미지 전처리에 가장 기본이 되는 작업입니다. 디지털에서 이미지를 표현할 때 (pixelⅹpixel ⅹchannel)의 포맷으로 사용하는데 여기서 channel이 색상입니다. 기본 3개의 채널(빨강, 파랑, 초록)을 흑백 (채널 1개) 으로 변환하여 256단계의 명암만 표시하게 됩니다. 그 후에 binary나 blurring 등의 작업을 진행합니다.
Pytesseract
python용 OCR(광학 문자 인식) 도구입니다. 이미지에 포함된 글자를 인식합니다. 이번 글에서는 흑백으로 변환한 이미지에서 글자를 추출하는 데 사용됩니다.
OpenCV, Pyplot, Pytesseract 설치하기
!pip install opencv-python
!pip install matplotlib
!pip install pytesseract
❗ Windows에서 설치 후 Tesseract is not installed or it's not in your path 오류가 발생할 경우
1. 사이트에 접속하여 Windows용 실행 파일을 설치합니다.
2. 설치 시 Addtional language data(download)에서 Korean을 선택합니다.
3. 설치 경로를 복사하거나 기억해둡니다.
4. 환경변수 PATH에 설치경로를 추가하거나 python작업 시 아래의 코드를 추가합니다.
👀 이 글에서는 코드를 추가하였습니다.
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
코드
# 필요한 라이브러리 추가
import cv2
from matplotlib import pyplot as plt
import pytesseract
# pytesseract 사용을 위한 코드 추가
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
# 사용할 이미지 위치 주소 변수에 저장
image = r"정확한 이미지 경로"
# 이미지 파일 읽기
img = cv2.imread(image)
# 글자 추출 전처리를 위해 흑백으로 변환
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 흑백 처리한 이미지 확인
plt.imshow(gray)
plt.show()
# 한글과 영문 추출을 위한 config 내용 변수에 저장
config = ('-l kor+eng --oem 3 --psm 11')
# 이미지에서 글자 추출
output = pytesseract.image_to_string(gray, config=config)
# 추출한 글자 확인
print(output)
'프로그램 개발 > Python' 카테고리의 다른 글
[python] 금과 달러의 상관관계(FinanceDataReader, Pyplot, Pandas) (2) | 2024.01.18 |
---|---|
[python] 유튜브 커뮤니티 글 가져오기(Selenium) (1) | 2024.01.02 |
[Notion/python] notion-client rich text (0) | 2023.01.26 |
[python] 미국 국채 금리 확인하기(yfinance) (0) | 2023.01.11 |
[python] 미국 증시 3대 지수 확인하기(yfinance) (0) | 2023.01.10 |