파이썬 테서렉트(tesseract) 설치 및 사용후기!

목차

    2019. 8. 15. 09:34

    테서렉트-패키지-로고
    테서렉트-패키지

    파이썬에는 좋은 패키지가 많습니다. 그래서 필요한 작업이 있을 때 이미 개발된 패키지가 있는지 찾아보게 됩니다. OCR관련된 패키지도 파이썬에 많이 있습니다. 구글에서 개발한 테서렉트는 한글 인식이 뛰어나고 해서 알려져 있습니다. 파이썬 테서렉트(tesseract) 설치 및 사용후기를 다뤄보았습니다.

     

     

    이전 포스팅에서는 클라우드의 API를 이용해서 문자를 인식하는 작업을 해 보았습니다. 하지만 이보다 성능이 우수하다고 알려진 테서렉트를 이용해 보기로 했습니다.

     

    1. 테서렉트 패키지 찾기

    파이썬 라이브러리를 찾아보기 위해서는 pypi(The Python Package Index) 사이트를 찾게 됩니다. 여기서 tesseract로 검색하면 생각보다 많은 라이브러리가 검색되는 것을 알 수 있습니다.

     

    이 중에 내용을 보고 py-tesseract를 설치하였습니다. py-tesseract는 테서렉트를 래핑 한 패키지입니다. 테서렉트가 별도로 설치되어 있어야만 사용할 수 있는 라이브러리인데요. py-tesseract를 설치하고 라이브러리를 import 하였더니, 테서렉트가 설치되어 있지 않다고 에러가 납니다.

     

     

    대부분의 라이브러리가 그렇습니다. 테서텍트를 별도로 설치하기 위해 테서렉트 깃허브 페이지 https://github.com/tesseract-ocr/tesseract  방문했습니다. 

     

    테서렉트는 C, C++로 개발되었고 중간에 'Install Tesseract via pre-built binary package'를 클릭하면 설치방법을 알 수 있습니다. 리눅스, MacOS, 윈도 별로 설치방법이 다릅니다. 저는 Mac을 사용하므로 이에 대한 설치 방법을 알아보겠습니다. 맥에서 테서렉트를 사용하기 위해서 homebrew를 이용합니다. homebrew는 패키지 관리 시스템 중의 하나입니다. 테서렉트를 설치하면 기본으로 언어가 영어가 설치됩니다. 한국어를 사용하기 위해서는 tesseract-lang도 설치해야 합니다.

     

    > brew install tesseract 
    > brew install tesseract-lang

     

    설치하고 나서 아래와 같은 이미지의 글자를 인식해보았습니다. pytesseract를 사용하면 아래와 같이 코드를 입력하면 되지만 무슨 이유인지 값이 나오지 않습니다. 인식을 못한 것인가 생각했지만 그렇지는 않았습니다.

     

    항목-글씨
    항목-글씨

     

    > print(pytesseract.image_to_string(Image.open('./image/tesseract_test.png'), lang='kor'))

     

    테서렉트가 설치되면 그냥 터미널(윈도우는 명령프롬프트)에서 실행할 수 있습니다. 터미널에서 tesseract를 입력하면 아래와 같이 실행 결과를 볼 수 있습니다.

    > tesseract

    Usage:
      tesseract --help | --help-extra | --version
      tesseract --list-langs
      tesseract imagename outputbase [options...] [configfile...]

    OCR options:
      -l LANG[+LANG]        Specify language(s) used for OCR.

    NOTE: These options must occur before any configfile.

    Single options:
      --help                Show this help message.
      --help-extra          Show extra help for advanced users.
      --version             Show version information.
      --list-langs          List available languages for tesseract engine.aa

     

    이미지 주소와 원하는 언어, output파일을 파라미터를 아래와 같이 입력하면 됩니다.

    tesseract [이미지 주소] [아웃풋파일] -l kor

    예시) tesseract test.png output_test -l kor

     

    예시와 같이 실행하니 output_test.txt라는 파일로 아래와 같이 결과가 떨어집니다.




    <0x0c>

     

    터미널에서 실행이 잘 됩니다. 파이썬에서 터미널 명령어 실행이 가능합니다. 아래와 같이 subprocess 라이브러리를 이용해서 파이썬에서 실행해 보았습니다. 텍스트 파일이 잘 생성됩니다.

    > import subprocess
    > subprocess.call("tesseract test.png output_test -l kor", shell=True)

     

    아마 인식하면서 중간에 빈 공간도 인식하는 듯합니다. 한글이 잘 인식되었으니 공백을 삭제하고 정리해 주었습니다.

    > f = open("./output/test.txt")
    > text_list = f.readlines()
    > word = "".join(text_list)

    > word_1 = word.replace('\n', '')
    > word_1 = word_1.replace(' ', '')

     

    > print(word_1)

     

    [Output]: 항목

     

    더 긴 글이나 문자도 인식이 잘 되는지는 다음에 포스팅하겠습니다. 짧은 단어라도 인식이 잘 되니 생각보다 재미있네요.

     

    이미지를 편집하고 전처리하기 위해서는 테서렉트 외에 다른 패키지가 필요합니다. 이미지 전처리를 위해 많이 사용하는 open-cv를 파이썬에서 설치하는 방법이 궁금하다면, 이전 포스팅을 참조해 보시기 바랍니다.


    파이썬에서 테서렉트(tesseract)를 설치하고 사용해 보았습니다. 사실 파이썬에서 했다기보다 그냥 테서렉트를 설치하고 사용했네요. 그래도 파이썬에서 테서렉트를 이용하고자 하는 사람들에게 도움이 되었으면 좋겠습니다.