brunch

You can make anything
by writing

C.S.Lewis

by 이형도 Jul 27. 2017

[개인 프로젝트] 한글 문자 인식기 만들기 #1

프로젝트 소개 및 개발 환경 구성

1. 개요

출퇴근하면서 책을 읽는데 보통 도서관에서 책을 빌려서 읽다 보면 메모하는데 불편함이 있다. 다른 사람과 함께 사용하는 책이기 때문에 라이너나 펜으로 메모를 할 수도 없고 밑줄을 칠수도 없다. 그래서 사진으로 찍고 갈무리하고 싶은 내용에 밑줄을 친 후 자동으로 텍스트로 변환해주는 프로그램이 있으면 좋겠다고 생각했다. 기왕이면 직접 구현해 보면 재미있을 것 같아 이것저것 찾아보다 tesseract를 알게 되었고, 만들어 가는 과정을 글로 남기고자 한다.



2. 개발 환경

맥을 사용하기 때문에 맥 기준으로 개발 환경을 구축했지만 윈도우 환경에서도 어렵지 않게 개발 환경을 구축할 수 있을 것이다


2.1 설치

https://github.com/tesseract-ocr/tesseract/wiki 공식 저장소 위키에 가면 설치 방법이 나온다. 생각보다 간단하고 쉽다.


brew install tesseract


홈브루를 이용해서 설치하고 나면 한글 데이터 파일을 준비해야 한다. 기본 설치에는 영어만 설치가 되며 한글 데이터 파일은 별도로 준비해야 한다.

가장 최근 설치 버전은 3.05.01이다.(2017년 7월 27일 기준) 설치 버전에 따라 사용할 수 있는 데이터 버전이 다르다.


https://github.com/tesseract-ocr/tessdata/tree/3.04.00에서 kor.traineddata를 다운로드한다.

4.0 버전의 데이터도 올라와 있는데 이는 데이터 파일을 훈련하는 알고리즘이 바뀐 것 같고 데이터 형식도 일부 바뀐 것 같다. 4.0 데이터 파일을 tesseract 3.05.01 버전에서 사용하면 프로그램이 에러를 발생한다.

다운로드한 데이터 파일은 /usr/local/Cellar/tesseract/3.05.01/share/tessdata/ 에 kor.traineddata로 복사한다.


2.2 설치 확인

자 이제 기본적인 설치는 완료했다. 이제 제대로 설치가 됐는지 실험해보자.

다음 명령을 실행한다. 실행 폴더에 하위 폴더로 images 폴더가 있고 images 폴더에 test_korean_clean.png 파일이 있다고 가정한다.


> tesseract ./images/test_korean_clean.png ./out_kor --oem 0 -l kor


위 명령어는 test_korean_clean.png 파일을 읽어서 문자를 인식하고 결과를 명령 실행 폴더에 out_kor.txt 파일로 생성한다. 문자를 인식할 때 사용하는 OCR 엔진은 Original Tesseract only를 사용한다.(--oem 0) 인식해야 하는 언어는 한글(-l kor)이다.

실험에는 아래 이미지를 사용했고 인식 결과는 다음과 같다.

한글 인식 실험 이미지
한글 인식 실험 결과

외부 환경에서 촬영한 영상의 결과가 예상보다 좋지 않아서 화면 캡처한 영상을 사용했음에도 불구하고 기대보다 낮은 성능을 보였다.


tesseract 엔진을 아직 들여다보지 않았기 때문에 구체적인 분석은 현재 불가능하지만 엔진에서 사용하는 테스트 데이터의 폰트가 맞지 않는 게 아닐까 한다.


다음 글에서는 테스트 데이터를 만드는 방법을 이야기하려고 해요. 테스트 데이터를 만들어 보고 생성한 테스트 데이터로 실험을 해 볼 생각입니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari