반응형
반응형

오늘은 테서랙트(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/

 

pytesseract

Python-tesseract is a python wrapper for Google's Tesseract-OCR

pypi.org

한글 텍스트도 정확하게 추출됩니다.

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를 사용해서 이미지를 변경하는 방법을 알아보겠습니다.

감사합니다.

https://believecom.tistory.com/726

 

[python] 파이썬 Tesseract OCR 활용 설치하기

오늘은 파이썬(python)을 활용해서 OCR를 사용하는 방법을 알아보겠습니다. OCR(optical character recognition)은 이미지에 포함된 텍스트 정보를 추출하는 기술입니다. 요즘은 텍스트 정보 추출 기술이 발

believecom.tistory.com

반응형
반응형

오늘은 파이썬(python)을 활용해서 OCR를 사용하는 방법을 알아보겠습니다.

OCR(optical character recognition)은 이미지에 포함된 텍스트 정보를 추출하는 기술입니다.

요즘은 텍스트 정보 추출 기술이 발전되어 AI 기반으로 많이 사용됩니다.

수많은 OCR 제품이 있지만, 무료 사용할 수 있으면서 활용도가 높은 테서랙트(Tesseract)를 사용해서 이미지 텍스트를 추출해보겠습니다.

이번 시간에는 테서랙트(Tesseract)를 설치해서 이미지 텍스트를 추출하는 방법을 알아보겠습니다.

먼저 아래 사이트에서 설치 파일을 다운로드해주세요.

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

 

UB-Mannheim/tesseract

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

github.com

전 Windows 기준으로 v5.0.0 64bit 버전을 다운로드하였습니다.

설치 파일을 더블 클릭해서 실행해주세요.

별도 선택 필요 없이 "Next" 버튼을 클릭하면 바로 설치됩니다.

설치 경로는 기본적으로 "Program Files" 아래 "Tesseract-OCR" 폴더에 설치됩니다.

먼저 이 경로를 복사해주세요.

이제 테서랙트( Tesseract ) 명령어를 사용하기 위해서 시스템에서 환경 변수를 등록해주세요.

복사한 경로를 시스템 환경 변수 "PATH"에 추가해주세요.

정상적으로 추가되면 "tesseract" 명령어로 내용을 확인할 수 있습니다.

이제 OCR을 테스트하기 위해서 영어 이미지를 만들었습니다.

테서랙트(Tesseract) 데이터 부분을 캡처했습니다.

테서랙트(Tesseract) 기본 명령어는 stdout -l를 사용해서 언어를 선택할 수 있습니다.

tesseract [경로] stdout -l [언어]

tesseract d:\en.jpg stdout -l eng

텍스트 추출 결과 영어이라서 그런지 대부분 텍스트를 정상적으로 추출했습니다.

이번에는 한글을 추출하기 위해서 옵션을 "kor"로 변경했습니다.

이미지도 한글이 포함된 이미지를 생성했습니다.

영어와 동일하게 이미지 경로와 언어만 변경했습니다.

그런데 "Failed loading language 'kor' " 오류가 발생하면서 텍스트 추출이 안됩니다.

확인해보면 테서랙트(Tesseract)는 tessdata 폴더에 포함된 언어 정보를 확인해서 텍스트를 추출하는데 'kor' traineddata가 없어서 발생한 문제입니다.

아래 사이트에서 테서랙트(Tesseract)다양한 언어 정보를 확인할 수 있습니다.

https://github.com/tesseract-ocr/tessdata

 

tesseract-ocr/tessdata

Trained models with support for legacy and LSTM OCR engine - tesseract-ocr/tessdata

github.com

아래쪽으로 스크롤하면 "kor.traineddata" 파일을 확인할 수 있습니다.

클릭하고 다운로드해주세요.

테서랙트(Tesseract) "tessdata" 폴더에 다운로드된 kor 파일을 복사합니다.

한글 텍스트를 추출하기 위해서 다시 명령어를 입력하면 정상적으로 한글 텍스트를 추출하는 것을 확인할 수 있습니다.

이번에는 한글과 영어를 한 번에 확인할 수 있는 이미지를 만들었습니다.

명령어는 기존과 동일하지만 언어 부분에 "kor+eng"로 변경했습니다.

tesseract [경로] stdout -l [언어]

tesseract d:\keng.jpg stdout -l kor+eng
tesseract d:\keng.jpg stdout -l kor+eng > keng.txt

정상적으로 한글, 영어 모두 추출되는 것을 확인할 수 있습니다.

한글, 영어를 분리해서 사용할 경우가 가장 추출 내용이 정확합니다.

한글, 영어를 혼합해서 사용할 경우 유실되는 정보가 조금씩 존재합니다. 

별도 텍스트 파일로 저장하고 싶다면 ">" 기호를 사용해서 텍스트 파일을 저장할 수 있습니다.

테서랙트(Tesseract)는 다양한 이미지 정보에 포함된 텍스트 정보를 추출할 수 있는 좋은 모듈입니다.

무료 사용도 가능하고 다양한 언어를 추출할 수 있기 때문에 더욱더 편리합니다.

다음 시간에는 테서랙트(tesseract)를 이용한 파이썬(python) 코드를 알아보겠습니다.

감사합니다.

반응형

+ Recent posts