OpenCV와 테서랙트를 이용한 간단한 문자인식 프로그램을 만들어 보았다.

 

먼저 OpenCV를 설치한다.

 

pip install opencv-python

pip install opencv-contrib-python

(anaconda는 아래 생략)

pip install numpy

pip install matplotlib

 

or

 

python -m pip install opencv-python

...

 

OpenCV 설치가 끝나면 Tesseract(테서랙트)도 설치해보자

 

github.com/tesseract-ocr/tesseract

 

tesseract-ocr/tesseract

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

github.com

 

테서랙트는 오픈소스 OCR 엔진으로 2005년에 HP에 의해 오픈소스화 되었으며, 2006년 이후로 Google에 의해 개발되고 있다.

 

테서랙는테서랙트의 윈도우 버전은 'Tesseract at UB Mannheim'를 이용하면 된다.

UB Manheim는 만하임 대학 도서관(Mannheim University Library)을 의미하는데, 이곳은 독일 신문의 OCR을 수행하는 곳으로 리눅스 뿐만 아니라 윈도우 버전도 필요했기 때문에 Tesseract installer for Windows를 빌드했다고 한다.

 

최신판 테서랙트 윈도우버젼을 설치하고 나서 파이썬 레퍼를 설치해야한다.

 

파이썬 테서랙트 레퍼는

 

> pip install pytesseract

 

테서랙트 레퍼를 설치하고 바로 실행하면 정상적으로 동작하지 않는다.

 

윈도우 환경변수에 앞에 설치한 테서랙트 실행파일 경로를 Path에 추가해 주거나

 

파이썬 라이브러리에 설치된 테서랙트 폴더안의 tesseract.py에서

 

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

 

와 같이 tesseract_cmd에 실행경로를 직접 지정해주는 방식이 있는데 가급적 환경변수 설정을 통한 방식을 권하고 싶다.

 

import os
import cv2

from pytesseract import image_to_string

os.chdir("D:\workspace\Python\ocr")

file_list = os.listdir(".")
file_list_jpg = [file for file in file_list if file.endswith(".jpg")]

f = open("day2.txt", 'wb')

for img_str in file_list_jpg:
    #print(img_str)
    src = cv2.imread(img_str)
    img = src[60:590, 40:920]
    string_with_datas = image_to_string(img)
    print(string_with_datas)
    f.write(string_with_datas.encode("utf-8"))

f.close()

 

위의 코드는 지정된 디렉토리안의 모든 JPG파일을 검색해서 불필요한 영역을 제거하여 크롭(CROP)한 영상을 가지고 들어있는 문자를 (유니코드)텍스트로 읽어서 하나의 텍스트 파일로 저장하는 코드이다.

 

간단하지만 강력한 결과를 만들어준다.

QT와 같은 UI를 입혀서 문자인식 영역을 지정해주거나 구글번역과 바로 연동하는 프로그램을 구현해보는 것도 좋을 것 같다.

 

기본내용은 아래의 블러그 참조

 

http://m.blog.daum.net/geoscience/1266?np_nil_b=-1

 

테서랙트(Tesseract): 파이썬에서 이미지의 광학 문자 인식(OCR)하기

안녕하세요? 이번 글에서는 이미지에 들어 있는 문자를 읽어 텍스트로 변환해주는 광학 문자 인식(Optical Character Recognition; OCR)을 파이썬에서 적용해 보도록 하겠습니다. 실습에 사용할 이미지는

blog.daum.net

 

Posted by 휘프노스
,