티스토리 뷰
※ 본문에 티스토리 기술 문제로 이미지를 로드 할 수 없게 되었는데 읽는데 큰 지장은 없을 겁니다
이미지에서 문자를 추출하는 기술은 광학 문자 인식(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
한글 해석을 위한 kor과 eng 정도 받으면 되고, 다운로드 받은 파일은 설치 과정에서 별 다른 옵션을 주지 않은 이상 /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
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-ocr은 Apache License를 따른다는 것을 알아두도록 하자.
'개발 > Linux' 카테고리의 다른 글
glibc의 iconv를 아시나요? (2) | 2017.05.18 |
---|---|
message queue 최대 길이 (0) | 2017.04.25 |
(ubuntu) tesseract-ocr 을 사용하기 위해 leptonica를 설치하자 (4) | 2017.04.18 |
(CentOS) chkconfig 이해하기 (2) | 2017.04.18 |
(CentOS) 데몬의 coredump 얻기 (0) | 2017.04.17 |
- Total
- Today
- Yesterday