본문 바로가기

Development/OCR

Tesseract OCR 4.x 모델 학습하기 (1)

728x90
반응형

Tesseract에서 제공하는 API를 통해 OCR 기능을 이용할 때 사용되는 기본 학습모델이 아닌 사용자가 직접 학습시키고자 하는 데이터를 준비해 학습하고 원하는 성능의 모델을 만들어 사용할 수 있는지를 확인해 보고자 본 작업을 진행하게 됐다.

 

이 포스트의 모든 내용은 Tesseract에서 제공하는 아래 두 메뉴얼을 참고했다.

 

tesseract-ocr.github.io/tessdoc/

 

Tesseract User Manual

Tesseract documentation

tesseract-ocr.github.io

 

tesseract-ocr.github.io/tessdoc/tess4/TrainingTesseract-4.00.html

 

How to use the tools provided to train Tesseract 4.00

Tesseract documentation

tesseract-ocr.github.io

 


 

0. 시작하기 전에

Tesseract OCR에 사용할 네트워크의 학습에는 다음과 같이 세 가지 방법이 있다.

 

  • 미세조정 (Fine tune): 기존의 학습된 네트워크 (Pre-trained Network)로 시작하여 특정 추가 데이터로 학습하는 방법
  • 네트워크 최상위 계층을 잘라내고 새 데이터를 사용하여 최상위 계층을 학습하는 방법
  • 처음부터 다시 학습 (Retrain from scratch): 학습데이터가 충분히 많은 경우 사용하는 방법. 단, 제대로 된 학습이 아니라면 정확히 동작하지 않거나 과적합된 네트워크가 될 소지가 있다.

일반적으로, 충분한 학습데이터를 확보하기 어렵고 네트워크의 복잡한 구조를 모두 이해하기 어려운 사용자에게는 미세조정을 추천한다. 따라서 이 포스팅에서는 미세조정을 통한 학습 방법을 소개해 보겠다.

 

또한, Tesseract 학습에는 다음 두 가지 방법으로 학습데이터를 구축해 학습에 사용할 수 있다.

 

  • 원하는 폰트파일을 이용해 자동으로 학습데이터 생성
  • 이미지와 레이블링된 정답 데이터를 쌍으로 해서 학습데이터 생성

이 포스트에서는 첫 번째 방법으로 진행한다. (두 번째 방법은 학습에 필요한 충분한 양의 데이터를 구축하는데 소요되는 시간과 리소스가 많이 필요하기 때문이다)

 

 

1. 설치

모든 과정은 Ubuntu 20.04에서 진행했다.

 

1.1 관련 라이브러리 설치

개발에 필요한 환경을 준비한다.

 

# 소스코드 빌드 관련 패키지 설치
$ sudo apt install automake
$ sudo apt install libtool
$ sudo apt install autoconf

# 개발 관련 라이브러리 설치
$ sudo apt install curl
$ sudo apt install openjdk-11-jdk

 

java 라이브러리 설치는 다음 포스트를 참고해도 좋다.

 

2021.05.04 - [Development/Tip and Tech] - Ubuntu 20.04 에 JAVA 설치하기

 

Ubuntu 20.04 에 JAVA 설치하기

Ubuntu 20.04 환경에 Java를 설치하고자 한다. 직접 설치파일을 다운로드받아 설치할 수도 있지만, 여기서는 터미널 환경에서 설치하는 방법으로 진행했다. 1. 설치 $ sudo apt-get update $ sudo apt-get upgrade.

davelogs.tistory.com

 

1.2 Tesseract-OCR 4.x 설치

학습을 진행할 위치에 GitHub에서 관련 소스코드를 내려 받는다.

 

# 작업할 경로로 이동 후 tesseract 메인 소스코드 다운로드
# 최신 배포버전 4.1.1 다운로드 및 압축해제 (git을 통한 최근 코드가 아님)
$ wget wget https://github.com/tesseract-ocr/tesseract/archive/refs/tags/4.1.1.tar.gz
$ tar xvf 4.1.1.tar.gz

# 작업할 경로로 이동 후 관련 소스코드 다운로드
$ git clone https://github.com/tesseract-ocr/tessdata_best.git
$ git clone https://github.com/tesseract-ocr/langdata.git

 

내려받은 각각의 프로젝트의 용도는 대략 다음과 같다.

 

  • tesseract: 학습을 포함한 대부분의 명령 구문을 사용할 메인 프로젝트
  • langdata: 학습에 필요한 언어별 설정 프로젝트
  • tessdata_best: tesseract에서 제공하는 모델 중 가장 좋은 성능을 보이는 모델 프로젝트
    • legacy 모델이나 기타 다른 모델이 필요한 경우 'tessdata' 프로젝트 사용

 

내려받은 소스코드는 다음과 같은 구조로 정리했다.

 

- ~ (root)

  - tesseract (tesseract 4.1.1)

  - tessdata_best

  - langdata

 

대부분의 실행 과정은 tesseract (tesseract 4.1.1) 디렉토리에서 진행하게 될 것이다.

 

728x90

 

1.3 소스코드 빌드 환경 구축 및 결과 확인

이어서 내려받은 소스코드를 빌드하기 위한 환경을 구축한다.

 

# tesseract 프로젝트 루트에서 진행
$ cd tesseract
$ ./autogen.sh

 

./autogen 실행 결과

 

이제, 개발환경 설정이 제대로 됐는지 확인한다.

 

# 소스코드 빌드 환경 구축 결과 확인
$ ./configure

 

소스코드 빌드 결과 확인

 

참고로, GUI 데스크탑 환경이 아닌 terminal 또는 docker를 이용해 개발하는 환경에서는 다음과 같은 설정을 해줘야 정상적으로 동작하는 것을 확인할 수 있다고 한다. (여기서는 GUI 데스크탑 환경에서 할 예정이므로 패스)

 

# GUI 환경이 아닌 Terminal이나 docker를 이용할 경우
$ ./config --disable-graphics

 

1.4 소스코드 빌드

# 소스코드 빌드 (training tools)
$ make

 

빌드하는데 꽤 시간이 걸린다. 로그도 많이 출력되어 따로 결과 화면은 추가하지 않았다.

('여기선 아무 문제가 없어야 하는데...' 생각하며 코드를 실행했고, 다행히 별문제 없이 빌드된 것 같다)

 

 

1.5 ScrollVIew.jar 빌드 (Optional / It is also useful, but not required)

디버깅할 때 유용하다고 하는데, 여기서는 일단 스킵한다.

설치하고자 한다면 다음의 과정대로 진행하면 된다. (단, java가 설치되어 있어야 한다. 이것 때문에 java를 설치하나?)

 

# ScrollView.jar 빌드
$ make ScrollView.jar
$ export SCROLLVIEW_PATH=$PWD/java

 


여기까지 학습을 위한 환경을 갖추는 작업을 진행했다.

이어서 다음 포스트에서는 학습데이터를 준비하고 실제 학습하는 과정을 진행해 보겠다.

 

 

2021.05.04 - [Development/OCR] - Tesseract OCR 4.x 학습하기 (2)

 

Tesseract OCR 4.x 학습하기 (2)

이전 포스트에 이어서 학습데이터를 준비하고 실제 학습하는 과정을 진행해 보겠다. 참고로, 아래 이전 포스트는 Tesseract OCR 엔진의 신경망 학습을 위한 준비 과정을 서술한 것이다. davelogs.tistory

davelogs.tistory.com

 

728x90
반응형