Tesseract, OpenCV 설치

2017-04-25 00:00:00
ocr tesseract python opencv 한글

소스코드로 부터 OpenCV와 Tesseract를 최신 버전으로 빌드하는 과정입니다.

코딩으로 인한 오류나 버그가 잘못된 설치로 발생하지 않도록 제대로 설치해야 합니다. 최신 버전으로 빌드 할 때는 어떤 모듈과 의존성이 연관되는지 알고 있는 것이 시간을 절약하는 지름길이라 생각됩니다.

다음 포스팅에 한글 OCR을 학습 시키기 위해 Tesseract Training 모듈까지 빌드합니다.

Dependencies

AWS EC2 Ubuntu 16.04에서 테스트하였습니다.

Package Update, Upgrade

설치 할 때 최신 패키지를 유지하는 것은 필수입니다.

최근에 이를 진행하지 않을 경우 libgtk2.0-dev의 URL을 찾을 수 없다는 에러 메시지가 나타났었습니다.

sudo apt update
sudo apt upgrade

Python Tools

python-pip을 통해 여러 의존성 모듈이 함께 설치됩니다.

sudo apt install python-pip python-dev python-numpy python-Imaging

이렇게 설치된 pip 버전은 보통 8.1.1 버전입니다. 아래 명령을 통해 9.0.1로 업그레이드 합니다.

sudo -H pip install --upgrade pip

Compiler

각 홈페이지 메뉴얼에서는 OpenCV는 cmake, Tesseract는 autotool을 사용하여 컴파일합니다.

# Opencv compile
sudo apt install cmake libatlas-base-dev

# Tesseract compile
sudo apt install autoconf automake libtool autoconf-archive

# Compile interface
sudo apt install pkg-config

GTK 2.0

GTK는 GUI 인터페이스를 위한 멀티플랫폼 도구입니다.

sudo apt install libgtk2.0-dev

Image Extension

png, jpeg, tiff 등의 이미지를 프로세싱하기 위한 확장입니다.

sudo apt install libpng12-dev libjpeg8-dev libwebp-dev libtiff5-dev zlib1g-dev

OpenCV math Optimization(Optional)

cmake를 통해 선택할 수 있는 옵션이며 수학적인 계산을 최적화 해주는 도구입니다.

sudo apt install libeigen3-dev

Image convert, processing

Tesseract의 경우 이미지를 mv로 확장자만 변경할 경우 DPI가 손실되어 이미지로 부터 글자를 인식할 수 없습니다. imagemagick 라이브러리는 이미지 컨버팅과 동시에 DPI를 조절할 수 있게 해줍니다.

# image convert, processing
sudo apt install imagemagick graphicsmagick

Tesseract Training

Tesseract 학습을 위한 라이브러리이며 이 중 하나라도 설치되지 않으면 Tesseract를 build 할 때 make training을 통한 트레이닝 도구를 빌드할 수 없습니다.

sudo apt install libicu-dev libpango1.0-dev libcairo2-dev

OpenCV Build

git clone https://github.com/Itseez/opencv.git
cd opencv
mkdir build
cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D WITH_EIGEN=ON ..

make -j4
sudo make install
sudo ldconfig

Leptonica Build

Leptonica는 이미지 프로세싱 및 분석을 위한 도구입니다. Tesseract와 Ubuntu 버전에 따라 요구하는 Leptonica의 버전이 다를 수 있습니다.

Tesseract Leptonica Ubuntu
4.00 1.74.0 Must build from source
3.04 1.71 Ubuntu 16.04
3.03 1.70 Ubuntu 14.04
3.02 1.69 Ubuntu 12.04
3.01 1.67
git clone https://github.com/DanBloomberg/leptonica.git
cd leptonica
./autobuild
./configure
make -j4
sudo make install
sudo ldconfig

Tesseract Build

학습을 위한 기본 데이터들을 별도의 Repository로 제공합니다.

unicharset 파일 등을 생성하기 위해 필요합니다.

git clone https://github.com/tesseract-ocr/langdata.git

Ubuntu 버전 및 Laptonica 버전에 따라 오류가 발생할 수 있습니다.

./configure에서 오류가 발생할 경우 설치 문서를 참고하시기 바랍니다.

git clone --depth 1 https://github.com/tesseract-ocr/tesseract.git
cd tesseract
./autogen.sh
./configure --enable-debug
LDFLAGS="-L/usr/local/lib" CFLAGS="-I/usr/local/include" make
sudo make install
sudo ldconfig

설치 완료 후 학습 도구를 추가로 컴파일합니다.

make training
sudo make training-install

마지막으로 Python에서 Tesseract-ocr을 사용하기 위해 제공되는 언어 데이터와 pytesseract를 설치합니다.

sudo apt install tesseract-ocr-eng tesseract-ocr-kor
sudo -H pip install pytesseract

Version Check

클론한 레퍼지토리 및 설치된 버전을 확인하는 방법입니다.

OpenCV

# Python OpenCV
import cv2
cv2.__version__

Tesseract

# Tesseract
tesseract --version

# Tesseract repo
cd ~/tesseract
git log

Leptonica

# Leptonica repo
cd ~/leptonica
git describe

Hello World

설치가 완료되었습니다. 간단한 예제를 작성해 보겠습니다.

import os
import cv2
import Image
import pytesseract

os.environ['TESSDATA_PREFIX'] = '/usr/share/tesseract-ocr'

def cv2Threshold(path):
    img = cv2.imread(path)
    dest = 'result.png'

    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

    cv2.imwrite(dest, thr)
    print(pytesseract.image_to_string(Image.open(dest)))

    return dest

if __name__ == '__main__':
    cv2Threshold('test.png')
hello.py