오늘은 테서랙트(Tesseract)를 활용한 파이썬(python) OCR 분석을 알아보겠습니다.
파이썬(python)에서 테서랙트(Tesseract)를 사용하기 위해서 pytesseract 패키지를 설치합니다.
또한 이미지 및 open cv를 사용하기 위해서 추가 패키지를 설치합니다.
패키지 설치는 pip 명령어를 사용하거나, 파이참에서 패키지를 바로 설치할 수 있습니다.
pip install pillow
pip install pytesseract
pip install opencv-python
정상적으로 패키지가 설치되면 import를 사용해서 패키지를 로드할 수 있습니다.
지난 시간에 사용한 영문 이미지를 동일하게 OCR을 적용하겠습니다.
먼저 tesseract_cmd에 테서랙트(Tesseract) 경로를 선언해주세요.
Image 클래스를 사용해서 영어 이미지를 로드합니다.
마지막으로 image_to_string 함수를 사용해서 영어 문자를 추출합니다.
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract'
img = Image.open(r'd:\en.jpg')
print(pytesseract.image_to_string(img))
tesseract_cmd 경로가 틀릴 경우 경로를 찾을 수 없다는 오류를 확인할 수 있습니다.
정확하게 테서랙트(Tesseract)가 설치된 경로를 입력해주세요.
실행 결과 출력 창에 정상적으로 영어 텍스트 추출 정보를 확인할 수 있습니다.
한글 텍스트를 추출하기 위해서는 lang를 사용해서 옵션을 추가합니다.
img2 = Image.open(r'd:\kor.jpg')
print(pytesseract.image_to_string(img2, lang='kor'))
pytesseract는 다양한 옵션을 사용해서 테서랙트(Tesseract)를 제어할 수 있습니다.
https://pypi.org/project/pytesseract/
한글 텍스트도 정확하게 추출됩니다.
OCR은 다양한 이미지 정보를 사용하기 때문에 눈으로 이미지를 확인하거나, 이미지를 변경할 수 있어야 합니다.
파이썬(python)에서는 opencv를 사용해서 이미지를 출력하거나, 이미지 프로세싱을 적용할 수 있습니다.
이미지를 확인하기 위해서 cv2 클래스를 사용해서 이미지를 출력할 수 있습니다.
imread 함수는 이미지를 로드해서 객체에 저장할 수 있습니다.
또한 다양한 옵션을 사용해서 이미지 로드 시점에 기본 색상 변경이 가능합니다.
cv2.IMREAD_UNCHANGED | 원본 이미지 사용 |
cv2.IMREAD_GRAYSCALE | 1개 채널 그레이스케일 사용 |
cv2.IMREAD_COLOR | 3개 채널, BGR 이미지 사용 |
cv2.IMREAD_ANYDEPTH | 선택 이미지에 따라 정밀도를 16/32비트, 8비트로 적용 |
cv2.IMREAD_ANYCOLOR | 3개 채널, 색상 이미지 사용 |
cv2.IMREAD_REDUCED_GRAYSCALE_2 | 1개 채널, 1/2 크기, 그레이스케일 적용 |
cv2.IMREAD_REDUCED_GRAYSCALE_4 | 1개 채널, 1/4 크기, 그레이스케일 적용 |
cv2.IMREAD_REDUCED_GRAYSCALE_8 | 1개 채널, 1/8 크기, 그레이스케일 적용 |
cv2.IMREAD_REDUCED_COLOR_2 | 3개 채널, 1/2크기, BGR 이미지 사용 |
cv2.IMREAD_REDUCED_COLOR_4 | 3개 채널, 1/4크기, BGR 이미지 사용 |
cv2.IMREAD_REDUCED_COLOR_8 | 3개 채널, 1/8크기, BGR 이미지 사용 |
imshow 함수를 사용해서 이미지를 모니터 화면에 출력하고 waitKey 함수를 사용해서 키 입력할 때까지 무한 대기합니다.
실행 결과 로드된 이미지가 화면에 출력됩니다.
opencv는 다양한 이미지를 변환할 수 있어 OCR 텍스트 추출 시 인식률을 높일 수 있습니다.
파이썬(python)은 테서랙트(Tesseract) 래퍼 클래스(Wrapper Class) pytesseract와 opencv를 사용해서 다양한 이미지 텍스트 추출을 쉽게 진행할 수 있어 매우 편리합니다
다음 시간에는 opencv를 사용해서 이미지를 변경하는 방법을 알아보겠습니다.
감사합니다.
'IT 나라 > 파이썬(python)' 카테고리의 다른 글
[python] 파이썬 엑셀을 활용한 로또 회차 정리하기 (0) | 2021.06.18 |
---|---|
[python] 파이썬 웹 크롤링 (0) | 2021.06.11 |
[python] 파이썬 Tesseract OCR 활용 설치하기 (0) | 2021.05.24 |
[python] 파이썬 배열 및 리스트 (0) | 2021.04.28 |
[python] 파이썬 문자열 (0) | 2021.04.17 |