Tesseract OCR 학습하기
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에서 참고하면 된다.