본문으로 바로가기

파이썬을 이용하여 이미지에서 텍스트 추출하기


1. 개요

1.1 목적

  • 이미지에서 텍스트를 추출한다.

1.2 도구

  • 언어 : 파이썬 v3.8 (내 PC에 설치되어 있어서)

  • 라이브러리 : OpenCV, pytesseract (내 PC가 64비트이므로 가능한 64비트 모듈을 이용)


2. Tesseract를 이용한 텍스트 추출 (OCR)

2.1 Tesseract 소개

 

tesseract-ocr/tesseract

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

github.com

  • Tesseract는 텍스트 인식 (OCR)을 위한 오픈소스로 아파치 2.0 라이선스를 다른다.
  • 리눅스, 맥, 윈도우 등 다양한 플랫폼을 지원한다.

2.2 Tesseract 설치

  • Tesseract의 윈도우 버전은 Cygwin, MYS2 등을 이용할 수 있으나, 빠르게 진행하기 위하여 Winodws 설치 버전을 이용한다.
  • 최신 기능과 데이터를 사용해 보기 위하여, 5.0 알파 버전 64비트를 이용해 보려 했으나,
    '한글 훈련 데이터'가 v4.0을 기준으로 준비된 것으로 판단하여, 4.0 버전을 이용하기로 한다.
  • 훈련 데이터 관련 사항은 '훈련 데이터 파일'에서 확인할 수 있다.
  • 'Uninstall 시 설치된 폴더 모두가 삭제되므로 새로운 폴더를 만들어 설치'하라고 권고한다.
  • 설치 파일 다운로드 경로 : https://github.com/UB-Mannheim/tesseract/wiki

 

 

UB-Mannheim/tesseract

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

github.com

<설치옵션 : Additional Script Data에서 'Hangul scdript', Additional language data에서 'Korean'을 선택>

  • 필요할 경우 PATH에 등록하여 tesseract를 어떤 디렉터리에서도 사용할 수 있도록 구성한다.

<환경 변수의 PATH에 등록>

  • 이제 명령창(CMD)에서 tesseract를 실행하며, 설치와 실행이 잘 되는 것을 확인한다.

<명령창에서 tesseract 실행 - 만일, 잘 안되면 PATH 설정을 살펴본다.>

2.3 Tesseract 사용해 보기

  • tessertact --help-extra 옵션으로 자세한 도움말을 확인한다.

<tesseract의 상세 도움말>

  • tesseract --list-lang 옵션으로 지원하는 언어를 확인한다. (설치 옵션에서 hangul을 선택했다)

<tesseract의 지원 언어 - 만일 한글 지원이 없으며, 앞서 설명한 설치옵션을 확인한다.>

  • 테스트를 위한 이미지를 준비해 본다.

<내 명함 - 한글, 영문, 숫자 등 다양한 정보가 포함되어 있다>

  • 크기와 모양이 다양하게 배치되어 있으니, 명령 옵션으로 --psm 4 (Assume a single column of text of variable sizes)를 이용한다. 참고로, 한글 출력을 정확히 표시하기 위하여 코드 페이지를 변경한 수 명령을 실행한다.
  • 코드 페이지 변경: chcp 65001 (UNICODE 이용)
  • 텍스트 인식 : tesseract -c preserve_interword_spaces=1 image.jpg stdout -l kor+eng --psm 4 

<텍스트 인식결과 : 제법 괜챦다>

  • 간단한 예제이지만 잘 동작한다.

3. Python으로 Tesseract 라이브러리 이용하기

3.1 Python-tesseract 라이브러리 설치하기

  • 파이썬에서 Tesseract 라이브러리를 사용하기 위하여, Python-tesseract를 설치한다. 
  • GPL v3를 따르는 라이브러리 이므로, Commercial 한 제품에 사용할 수 없다. Tesseract가 아파치 2.0 라이선스를 따르는데, Wrapper class가 GPL v3인 것이 특이하다. 필요할 경우 Tesseract를 직접 이용하도록 재구성하는 것이 좋겠다.
  • 홈페이지에 사용법 등이 자세히 설명되어 있어서, 쉽게 이용할 수 있다.
  • https://github.com/madmaze/pytesseract
 

madmaze/pytesseract

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

github.com

  • 파이선의 패키지 관리 도구인 pip를 이용하여 설치한다.
    'pip install pytesseract'

<pip를 이용한 pytessert 설치 - 다른 강의를 준비하고 있는 탓에 노란색 경고창은 해결하지 않는다.>

3.2 Python-tesseract 라이브러리 예제

  • Pyton-tesseract의 사용법은 홈페이지에 잘 나와 았으므로, 추가 설명을 생략하고 바로 간단한 에제를 만들어 본다.
  • 앞서 명함을 인식한 에제를 파이썬으로 작성한다. (textExtract.py)
import pytesseract

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

print(pytesseract.image_to_string('C:\Temp\image.jpg',lang='kor+eng', config='-c preserve_interword_spaces=1 --psm 4'))
  • python textExtract.py로 실행하여 결과를 확인한다.

<파이썬으로 tesseract 라이브러리 이용하기>

 


여기까지 해서, 텍스트 인식 (OCR)을 위한 대표적인 오픈소스인 Tesseract를 Python과 함께 빠르게 살펴보았다.

라이브러리를 사용하는 것은 (무척) 쉽다고 볼 수 있는데,
다양한 입력 이미지를 어떻게 좋은 품질로 처리할 수 있느냐~ 하는 것이 관건이 될 듯하다.