티스토리 뷰

※ 본문에 티스토리 기술 문제로 이미지를 로드 할 수 없게 되었는데 읽는데 큰 지장은 없을 겁니다


이미지에서 문자를 추출하는 기술은 광학 문자 인식(Optical character recognition; OCR)이라는 이름으로 불린다. 이미 많은 OCR 기술이 오픈소스로 등록되어 있는데 여기서는 tesseract-ocr을 사용해서 이미지에 있는 문자를 추출해 보도록 하자. 


tesseract는 구글에서 지원하는 프로젝트이고 인식률이 OCR 기술 중 굉장히 높은 편에 속한다고 한다.


우선 tesseract-ocr을 다운로드 받고 설치해야 하는데 과정은 아래와 같다. (wiki를 참고하면 더욱 자세하게 확인할 수 있다)


필요한 패키지를 설치한다.

$ sudo apt-get install autoconf automake libtool
$ sudo apt-get install autoconf-archive
$ sudo apt-get install pkg-config
$ sudo apt-get install libpng12-dev
$ sudo apt-get install libjpeg8-dev
$ sudo apt-get install libtiff5-dev
$ sudo apt-get install zlib1g-dev


그리고 추가로 libleptonica를 설치한다.

$ sudo apt-get install libleptonica-dev


이제 본격적으로 tesseract-ocr을 사용하기 위해 GitHub에서 소스를 다운로드 받아 컴파일 하도록 하자. 

$ 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


혹시 configure 과정에서 버전에 대한 에러가 출력된다면 이전에 포스팅 된 내용을 확인하도록 하자. 이제 데이터만 얻으면 모든 과정이 끝났다고 할 수 있다. 여기서 데이터란, 언어를 해석할 수 있도록 도와주는 datafile 인데 아래 경로에서 다운로드 받을 수 있다.

https://github.com/tesseract-ocr/tesseract/wiki/Data-Files


한글 해석을 위한 koreng 정도 받으면 되고, 다운로드 받은 파일은 설치 과정에서 별 다른 옵션을 주지 않은 이상 /usr/local/share/tessdata/ 경로에 두면 된다.


이제 터미널에서 한글 이미지를 테스트 해보도록 한다. 실행 명령은 아래와 같다.

$ tesseract 실시간탑텐.png outputbase -l kor


N포털의 실시간 검색어를 캡쳐한 "실시간탑텐.png" 라는 파일을 kor로 해석하라는 의미이다. 이미지 내용은 아래와 같다.



테스트를 진행한 결과는 상당히 실망스럽게도 아래와 같았다. (tesseract  를 실행하면 default 로 떨어지는 확장자가 txt 이다.)

oops@oops:test$ cat outputbase.txt 

실 시 간 급상승


0


9


룬 재 위 1 번 가

겸 덕 시 60 픈 역정


정 겨 욘


과 이 브 를 스

흐 녀


혁 의 시부


빅 지크


애 타 는 로 면 스


10 한 쿡 사 녁 겅 시 흄


207061010874 띠 재기


080100.3


 



oops@oops:test$


이번에는 영어로 테스트해 보기로 하고, 영어 데이터를 구했다. 가장 흔히 구할수 있는 New York times 에서 발췌한 데이터를 사용했다. 사용된 이미지를 먼저 살펴보자.


결과는 아래와 같다.

oops@oops:test$ tesseract 뉴욕타임즈.png outputbase -l eng

Info in bmfCreate: Generating pixa of bitmap fonts from string

Tesseract Open Source OCR Engine v4.00.00alpha-378-ge18a802 with Leptonica

Warning. Invalid resolution 0 dpi. Using 70 instead.



oops@oops:test$ cat outputbase.txt 

6hr New flork aims


NEWS

World


u.s.


Po‘mcs


N.V.


Business

Tech


Science

Heann


Spam

Educanon

Ohnuanes

Today‘s Paper

Canecnons


OPINION


Today‘s Omman

ourEd Calumnm

Edmona‘s

Conmbutmg wmers

ourEd Camrrlmors

Omnnnamr


Leners


Sunday Revrew

Tamng Note


Room for Debate

Pubhc Edmr


Video Omman


ARTS

Today‘s Ans


An & Desrgn


Books


Dance


Mawes


Music


N.v.c. Evem Gmde

Telewsmn


Theater


Video Am


uvmn

Automobiles

Crossword


Fond


Educanon


Fasruan & 5M6:

Heann


Jobs


Magazrne


N.v.c. Evem Gmde

Rea‘ Estate


T Magazme


Travel


Weddrngs &

Celebranons


LIanGs a MORE

classmeds


Tools & Semces

Tunes Topics


Pubhc Edmr


N.v.c. Evem Gmde

aloe:


Mummedra

anagravhy


Video


NYT Stare


Tunes Journeys

Subscribe


Manage My Aocoum

Cance‘ Subscrlmnn


Bow Name Page »


sulscnll:

a Home I: wery

a D" gihlsubscriph'ons<="" span="">

e 1inres Insider


5 Crossword


rm Nm‘mls

Arms


Gm Suhxnlflmns

I‘m-name Suhacl‘lflmns

[mm rm


Mamie Afln‘utmns

Rem“ Edman


oops@oops:test$ 


확실히 영어에 대한 인식이 높다는 것을 확인할 수 있었다. 영어 이미지는 여러 가지 활용 방안이 있을 수 있겠지만 한글은 그렇지 못하겠다. 이에 대해서는 인식률을 높일 수 있는 방법에 대해서 다시 살펴봐야겠다.


또한 옵션에 보면 OCR Engine modes가 여러개 있는데 각각으로 돌려봤을 때 큰 차이를 느끼지 못했다. 아니 동일한 결과가 출력되더라. 기타 다른 train data가 있어야 하는 것인지, 아니면 다른 의미인지 조금 더 공부해봐야겠다.


OCR Engine modes:

  0    Original Tesseract only.

  1    Neural nets LSTM only.

  2    Tesseract + LSTM.

  3    Default, based on what is available.


tesseract-ocrApache License를 따른다는 것을 알아두도록 하자.



댓글
  • 프로필사진 KY 언어 데이터 부분 다운 받는것 좀 상세히 알려주실수있나요??? ㅠㅠ 지금 그쪽부분에서 너무 막혀서요 ㅠㅠㅠ 2017.05.11 00:47 신고
  • 프로필사진 BlogIcon Jaeyeon Baek 1) 위에 명시된 링크 들어가셔서 Ctrl+F 입력 후 "kor"을 검색해 보세요. 여러개 검색 될 텐데 데이터 파일의 버전 별로 나열된 것이니 맨 위에 찾아진 것을 다운로드 받으시면 됩니다.

    2) 다운로드 받으신 파일(xxx.traineddata)을 /usr/local/share/tessdata/ 하위에 위치 시킵니다.

    3) 이제 다운로드 받은 언어를 인자로 tesseract 를 실행시켜 봅니다.

    도움이 되셨기를 ...
    2017.05.11 09:29 신고
  • 프로필사진 xodla tesseract abc.png outputbase -l kor
    라고 치면

    Tesseract Open Source OCR Engine v4.00.00alpha with Leptonica
    Error in fopenReadStream: file not found
    Error in findFileFormat: image file not found
    Error during processing.

    이렇게 오류가 뜹니다...
    어떻게 해야하죠?ㅠㅠㅠ
    2017.05.31 09:18 신고
  • 프로필사진 BlogIcon Jaeyeon Baek abc.png가 정말 이미지 파일이 맞는지 확인하고, path 문제일 수 있으니 abc.png를 절대경로로 줘보세요. 2017.05.31 23:33 신고
  • 프로필사진 시저 Tesseract Open Source OCR Engine v7afa05a with Leptonica
    Warning. Invalid resolution 0 dpi. Using 300 instead.
    이건 어떤 뜻이죠?
    어떻게 해결해야할지 잘 모르겟어요
    파일은 .png를 사용했어요
    2017.08.16 09:55 신고
  • 프로필사진 BlogIcon Jaeyeon Baek 오류 메시지를 봐서는 정상적인 이미지 파일인지 먼저 확인이 필요할 것 같습니다. 2017.08.16 15:34 신고
  • 프로필사진 jse 안녕하세요! 친절한 설명 감사드립니다.
    제가 여러 방법으로 설치하다가 3.04 버전을 깔았는데 지우는 방법을 모르겠습니다 ㅠ
    무시하고 4.0 버전 깔려고 해도 계속 3.04 버전으로 인식되네요. 방법이 없을까요?
    2017.10.08 12:44 신고
  • 프로필사진 BlogIcon Jaeyeon Baek make install 하셨으면 설치된 경로를 통으로 삭제하면 될 것 같습니다. 아마도 /usr/local/ 어딘가에 설치가 되었을 것 같네요. find 로 찾아서 삭제하시면 되겠습니다. 2017.10.08 16:31 신고
  • 프로필사진 Lhw 우분투에서만 돌아가나요? 데비안으론 돌아가지도 않나요? 2017.10.10 10:08 신고
  • 프로필사진 BlogIcon Jaeyeon Baek 딱히 상관 없을겁니다. 어차피 컴파일해서 사용하는거니까요. :-) 2017.10.10 10:11 신고
  • 프로필사진 Lhw 그렇다면 가르쳐주신 그대로 데비안에서 써보면 되겠군요. 감사합니다 2017.10.10 19:41 신고
  • 프로필사진 BlogIcon Jaeyeon Baek 라이브러리 의존성 때문에 혹시 안되면 공유해주세요. 같이 고민해보죠. :-) 2017.10.10 19:43 신고
  • 프로필사진 Lhw 데비안에서 하는 방법은 간단했습니다.
    비글본블랙이라는 보드를 쓰는데
    인터넷 연결 후,
    sudo apt-get install tesseract-ocr를 치기만하면 저절로 패키지가 다운이 됩니다.
    실행방법은 이미지 저장 디렉토리에 들어간 후,
    tesseract scan 파일이름.확장자 output
    입니다.
    2017.10.16 10:09 신고
  • 프로필사진 BlogIcon Jaeyeon Baek 패키지 설치 형태로 하셨군요. :-) 공유 감사합니다. 2017.10.16 10:13 신고
  • 프로필사진 Song libleptonica가 무슨일을 하는지 알 수 있을까요? 2017.10.16 10:06 신고
  • 프로필사진 BlogIcon Jaeyeon Baek 이미지 프로세싱하는 라이브러리입니다.
    https://packages.debian.org/sid/libleptonica-dev
    2017.10.16 10:12 신고
댓글쓰기 폼