--프로그래밍--/OCR

Tesseract OCR 학습하기

Prog_K 2016. 3. 11. 13:08

Tesseract OCR의 강점을 주관적인 입장에서 정리해보면 학습기능이 제공된다는 점이다.


손글씨같은 폰트가 일정하지 않은 글씨를 학습하여 OCR의 인식률을 향상시킬 수 있는점이 너무 마음에 든다.


그래서 3.02버전에서 학습하는 방법을 나열해 보고자 한다.


총 10가지의 단계로 나누어진다.


트레이닝을 시키기 위해서 지켜야 할 하나의 규칙이 있다.


<lang>.<font>.exp<num>.tif <- Tesseract 엔진에서 tif 그림파일을 이용하여 학습을 할 수 있게끔 되어있다.


<lang> = 학습을 마치고 불러올때 사용하는 문자열

<font> = 본인이 만들 폰트이름을 선언

<num> = 여러개의 그림파일에서 생성되는 BOX 파일을 이용하여 학습을 진행할 때 분류할 수 있는 숫자


ex) customeng.testfont.exp0.tif


위와 같이 파일 이름을 지정해준 후, 학습을 시작하면 되겠다.


1. 학습을 하기 위해서는 박스를 만들어서 그림내의 글자에 대해서 인식하여 불러와야 한다.

- tesseract.exe customeng.testfont.exp0.tif customeng.testfont.exp0 batch.nochop makebox

다음 명령을 수행하면, customeng.testfont.exp0.box 라는 파일이 생성된다. 이 파일을 이용하여 문자를 학습하면 된다.


Tesseract OCR 에서 box파일을 손쉽게 수정 및 저장할 수 있게 GUI기반 어플리케이션을 만들어서 제공하고 있다.


개인적으로 CowBoxer, jTessBoxEditor-0.7을 추전해주고 싶다.


링크 :

https://code.google.com/p/cowboxer/

http://sourceforge.net/projects/vietocr/files/jTessBoxEditor/

에서 다운받을 수 있다.


CowBoxer을 이용하여 Box파일을 불러오면 다음과 같이 정보들이 나열된다.



Boxing된 글자들이 아래와 같이 나열된다. 빨간색 사각형은 현재 가르키고 있는 박스의 이미지와 Character을 나타낸다. 이정보를 수정할 수 있다.


2. 수정된 Box파일을 이용하여 학습을 진행한다.

tesseract.exe customeng.testfont.exp0.tif customeng.testfont.exp0 nobatch box.train

customeng.testfont.exp0.tr 파일과 customeng.testfont.exp0.txt 파일이 생성된다.


3. unicharset_extractor.exe customeng.testfont.exp0.box - unicharset파일이 생성됨

4. 글자의 속성을 추가해준다.

font_properties 파일을 생성한다. (확장자가 없으며, BOM이 포함되어 있으면 안된다.)

BOM은 인터넷에서 알아서 찾아서 공부해보시길..


ex) <fontname> <italic> <bold> <fixed> <serif> <fraktur>

testfont 0 0 0 0 0


5. 클러스터링

mftraining.exe -F font_properties -U unicharset -O <lang>.unicharset <lang>.<fontname>.exp<num>.tr


ex) mftraining.exe -F font_properties -U unicharset -O customeng.unicharset customeng.testfont.exp0.tr


cntraining.exe customeng.testfont.exp0.tr


6. 파일 이름 변경

unicharset -> customeng.unicharset

normproto -> customeng.normproto

pffmtable -> customeng.pffmtable

inttemp -> customeng.inttemp


7. 학습파일로 만들어준다.

combine_tessdata.exe customeng. (* 명령어 마지막에 .을 꼭 붙여준다.)

customeng.traineddata가 생성된다. 학습된 커스텀 파일을 이용하여 OCR을 수행하면 된다.



자세한 내용은 https://code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3에서 참고하면 된다.

 

출처 : http://kyubuem.tistory.com/53