Thinking Different




1. OCR 이란???   ???


광학 문자 인식(Optical Character Recognition)  위키백과 중에서...


OCR이란 인쇄된 문서나 손으로 쓴 글씨 등에서 텍스트(문자)를 추출하여 문자인식이 가능하도록 하는 기술입니다.

이미지의 해상도 및 품질에 따라 인식률이 달라지며, 세계 각국의 언어를 추출할 수 있습니다.


쉽게 말해서 이미지(그림파일)등에 있는 텍스트(문자)들을 추출하여 텍스트로 변경하는 것이라고 생각하면 됩니다.



사진출처 : http://www.athento.com/en/ocr/





2. Tesseract-ocr 컴파일을 통한 라이브러리 생성


tesseract-ocr 을 이용하여 OCR 프로젝트를 사용하기 위해서는 tesseract-ocr 라이브러리를 먼저 생성하여야 사용자 프로젝트 예제에 적용이 가능합니다.

본 과정은 tesseract-ocr 라이브러리를 생성하기 위해서 일련의 과정을 안내합니다.


tesseract-ocr은 구글 코드 홈페이지에서 다운로드 받으실 수 있습니다.

https://code.google.com/p/tesseract-ocr/



구글 코드 다운로드 페이지에서 소스코드를 별도로 다운로드 받아서 진행하는 방법과 exe 설치파일로 바이너리와 소스파일을 자동으로 다운로드받아 설치하는 방법이 있는데, 본 글에서는 exe 설치파일로 진행해 보도록 하겠습니다. 





위 사진과 같이 tesseract-ocr-setup-3.02.02.exe 파일을 다운로드 받고 아래와 같이 설치를 진행합니다.



tesseract-ocr-setup-3.02.02.zip


tesseract-ocr-setup-3.02.02.z01




 

<기본 설치 경로로 설치를 진행합니다>



 

<개발관련 파일에 체크하고, 추가 언어 설치를 위해 하단에서 korean을 선택합니다>



 

<설치를 진행하면서 환경변수와 관련 라이브러리 및 추가 언어들을 자동으로 다운로드 및 설치 진행합니다>




자 설치가 완료되었으면 tesseract-ocr의 라이브러리를 컴파일하여 생성할 차례입니다. 해당 라이브러리가 있어야 프로젝트에 가져다 쓸 수 있습니다.


탐색기를 열어 설치된 경로 아래의 vs2008 프로젝트를 실행합니다. (필자는 vs2013으로 프로젝트 마이그레이션하여 진행하였습니다)

C:\Program Files (x86)\Tesseract-OCR\tesseract-ocr\vs2008\tesseract.sin


(1) 일단 먼저 솔루션 구성을 DLL_Debug에서 DLL_Release로 변경합니다.


(2) 그 다음 왼쪽 솔루션 탐색기 프로젝트에서 libtesseract302 에서 프로젝트 속성으로 들어갑시다.


(3) c/c++ - 일반 - 추가 포함 디렉터리를 아래와 같이 변경합니다. 



필자의 설치경로는 C:\Program Files (x86)\Tesseract-OCR  입니다.


설치경로\tesseract-ocr\api

설치경로\tesseract-ocr\ccmain

설치경로\tesseract-ocr\ccutil

설치경로\tesseract-ocr\ccstruct

설치경로\tesseract-ocr\classify

설치경로\tesseract-ocr\cube

설치경로\tesseract-ocr\cutil

설치경로\tesseract-ocr\dict

설치경로\tesseract-ocr\image

설치경로\tesseract-ocr\neural_networks\runtime

설치경로\tesseract-ocr\textord

설치경로\tesseract-ocr\viewer

설치경로\tesseract-ocr\wordrec

.

설치경로\include

설치경로\include\leptonica

설치경로\tesseract-ocr\vs2008\port


(4) 링커 - 일반 - 추가 라이브러리 디렉터리를 아래와 같이 변경합니다.



설치경로\lib


(5) 솔루션 탐색기 프로젝트중 libtesseract302 의 source file 중 equationdetect.cpp  파일을 열고 ctrl + G에서 250 라인을 넣고 이동하여 아래와 같이 수정합니다.




수정 코드

static const STRING kCharsToEx[] = { "'", "`", ".", ",", "" };


(6) libtesseract302 프로젝트 오른쪽 마우스 메뉴에서 빌드를 눌러 컴파일을 진행합니다.

모든 컴파일이 완료되면 설치폴더\tesseract-ocr\vs2008\DLL_Release 에 libtesseract302.dll , libtesseract302.lib 파일이 생성됩니다.





3. Tesseract-ocr 프로젝트 예제 따라하기


visual studio를 열어 간단히 콘솔프로젝트로 새로운 프로젝트를 생성하고 아래와 같이 소스를 복사하여 붙혀넣습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "stdafx.h"
#include <allheaders.h>
#include <baseapi.h>
 
using namespace std;
using namespace tesseract;
 
#pragma comment(lib, "liblept168")
#pragma comment(lib, "libtesseract302")
 
int _tmain(int argc, _TCHAR* argv[])
{
    char *outText;
    //    const char *path = ".\\tessdata";
 
    TessBaseAPI *api = new TessBaseAPI();
    // Initialize tesseract-ocr with English, without specifying tessdata path
    if (api->Init(NULL, "eng")) {
        fprintf(stderr, "Could not initialize tesseract.\n");
        exit(1);
    }
 
    // Open input image with leptonica library
    Pix *image = pixRead("C:/a.png");
    api->SetImage(image);
    // Get OCR result
 
    // text print
    outText = api->GetUTF8Text();
    printf("OCR output:\n%s", outText);
 
    // text output file
    FILE*fp = fopen("c:\\a.txt""wb");
    fputs(outText, fp);
    fclose(fp);
 
    // Destroy used object and release memory
    api->End();
    delete[] outText;
    pixDestroy(&image);
 
    return 0;
}



(1) 프로젝트 속성에서 c/c++ - 일반 - 추가 포함 디렉터리를 아래와 같이 변경합니다.


설치경로\tesseract-ocr\api

설치경로\tesseract-ocr\ccmain

설치경로\tesseract-ocr\ccutil

설치경로\tesseract-ocr\ccstruct

설치경로\tesseract-ocr\classify

설치경로\tesseract-ocr\cube

설치경로\tesseract-ocr\cutil

설치경로\tesseract-ocr\dict

설치경로\tesseract-ocr\image

설치경로\tesseract-ocr\neural_networks\runtime

설치경로\tesseract-ocr\textord

설치경로\tesseract-ocr\viewer

설치경로\tesseract-ocr\wordrec

.

설치경로\include

설치경로\include\leptonica

설치경로\tesseract-ocr\vs2008\port


(2) 링커 - 일반 - 추가 라이브러리 디렉터리를 아래와 같이 변경합니다.

설치경로\lib

설치경로\tesseract-ocr\vs2008\Debug_Release



프로젝트를 빌드후 실행합니다.


<테스트 이미지 파일>



<실행 결과>



<결과 파일>





참고 사이트

http://kyubuem.tistory.com/51

http://blog.secmem.org/489