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



댓글 38

  • 홍송표 (2015.04.29 23:59 신고)

    (2) 링커 경로에
    C:\Program Files (x86)\Tesseract-OCR\tesseract-ocr\vs2008\Debug_Release 경로가 없고 Debug대신 DLL 경로가이 존재합니다.
    죄송하지만 어떻게 하는지 알수있을까요???

  • Favicon of http://copynull.tistory.com BlogIcon copynull (2015.04.30 11:41 신고)

    정상적으로 컴파일이 완료되셨다면 vs2008 경로 내부 하단에 libtesseract302.lib와 libtesseract302.dll이 생성된 폴더를 찾으시면 됩니다.

    없다면 정상적으로 컴파일이 진행되지 않으신겁니다. 다시 위의 2. Tesseract-ocr 컴파일을 통한 라이브러리 생성 과정을 천천히 진행해보시기 바랍니다.

    정상적으로 빌드가 되셨다면 출력창에 아래처럼 결과가 나와야 됩니다.

    1> 코드를 생성하고 있습니다...
    1> ..\DLL_Release\libtesseract302.lib 라이브러리 및 ..\DLL_Release\libtesseract302.exp 개체를 생성하고 있습니다.
    1> libtesseract.vcxproj -> C:\Program Files (x86)\Tesseract-OCR\tesseract-ocr\vs2008\libtesseract\..\DLL_Release\libtesseract302.dll
    1> 1개 파일이 복사되었습니다.
    1> 1개 파일이 복사되었습니다.
    ========== 모두 다시 빌드: 성공 1, 실패 0, 생략 0 ==========

  • 학생 (2015.05.10 21:21 신고)

    위 예제를 따라하였습니다. Debug 대싱 DLL이 있지만 내부 하단에 libtesseract302.lib와 libtesseract302.dll이 생성되어있어서 DLL_Release로 설정하여 했습니다. 그런데 빌드를 했더니 아래 처럼 나오더라구요. 아직 배우고있는 단계라 그런지 어떻게 해결해야할지 모르겠어서 남깁니다.

    1>c:\program files (x86)\tesseract-ocr\include\leptonica\pix.h(169): warning C4305: '초기화 중' : 'double'에서 'const l_float32'(으)로 잘립니다.
    1>c:\program files (x86)\tesseract-ocr\include\leptonica\pix.h(171): warning C4305: '초기화 중' : 'double'에서 'const l_float32'(으)로 잘립니다.
    1>c:\program files (x86)\tesseract-ocr\tesseract-ocr\ccutil\platform.h(33): warning C4005: 'snprintf' : 매크로 재정의
    1> c:\program files (x86)\tesseract-ocr\include\leptonica\environ.h(277) : 'snprintf'의 이전 정의를 참조하십시오.
    1>c:\program files (x86)\tesseract-ocr\tesseract-ocr\ccutil\strngs.h(61): error C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1> c:\program files (x86)\microsoft visual studio 12.0\vc\include\string.h(195) : 'strncpy' 선언을 참조하십시오.
    ========== 빌드: 성공 0, 실패 1, 최신 0, 생략 0 ==========

    어떻게 해결해야 할까요...?? ㅠ
    혹여 가능하시다면 사용하신 프로젝트 파일을 압축하여 좀 주실수 없을까요? 뭐가 다르고 뭐가 문제인지 꼭 알고싶습니다.

  • Favicon of http://copynull.tistory.com BlogIcon copynull (2015.05.10 21:30 신고)

    빌드 에러 구문을 찾아서 읽어보시면 쉽게 해결가능하신데요..

    error C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

    strncpy 함수가 unsafe하므로 strncpy_s 로 바꿔라....

    또는 _CRT_SECURE_NO_WARNINGS 구문을 define 하라.

    수고하세요

  • 궁금 (2015.05.20 12:52 신고)

    예제소스에서

    delete[] outText; <- 이부분

    메모리 릭 나지 않나요??

    • Favicon of http://copynull.tistory.com BlogIcon copynull (2015.05.20 16:54 신고)

      해당 코드부분은 아무런 문제가 되지 않는 부분입니다.

      tesseract-ocr 에 대한 기본적인 코드 샘플은 아래 구글 프로젝트 사이트에서 확인하시고 배우실 수 있습니다.

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

      감사합니다.

  • zeroche (2015.05.28 13:33 신고)

    liblept168.lib 파일을 찾을 수 없다고 나옵니다.
    lib 폴더에 있는데도 무엇이 문제 일까요?

    • Favicon of http://copynull.tistory.com BlogIcon copynull (2015.05.28 13:52 신고)

      프로젝트 속성에서 라이브러리 디렉토리 경로가 올바르지 않은걸로 보여집니다.

      그냥 해당 dll과 lib 파일을 작성중인 프로젝트의 소스폴더 경로에 넣고 빌드 진행하시면 됩니다.

      감사합니다

  • 안녕하세요 (2015.05.29 21:41 신고)

    안녕하세요 글 잘 봤습니다.
    하나 궁금해서요..
    혹시 tesseract ocr이 c#에서도 사용가능 하나요?

    • Favicon of http://copynull.tistory.com BlogIcon copynull (2015.05.29 21:49 신고)

      C# 으로 된 wrapper 클래스도 있습니다.

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

      에 가시면 확인하실 수 있습니다.

      감사합니다.

  • zeroche (2015.06.02 11:38 신고)

    답변 감사합니다.
    답변 해주신 되로 하여 dll 만들어 사용 완료 하였습니다.
    그리고 위 질문 중 C# 즉 닷넷으로 래핑된 파일도 테스트 하였는데
    컴파일 하니 FileLoadException이 처리 되지 않았다고 나옵니다.
    dll 래핑 문제 인것 같은데 혹시 처리 방법을 알고 계신 문의 합니다.
    참고로 제 환경은 윈도우7, VS2012 입니다.

    • Favicon of http://copynull.tistory.com BlogIcon copynull (2015.06.02 12:19 신고)

      닷넷 버전은 사용해보지 못해서 답변을 드리기 힘들거 같습니다.

      구글 코드 프로젝트 페이지에 샘플 프로젝트를 다운받으셔서 참고하시면 해결되리라 생각됩니다.

      감사합니다.

  • 대학생 (2015.10.02 14:27 신고)

    컴퓨터에 libtesseract302.dll이 없어 프로그램을 시작할 수 없습니다. 라고 나오는데요
    죄송하지만 이거 해결방법 알 수 있을까요? ㅠㅠ

    • Favicon of http://copynull.tistory.com BlogIcon copynull (2015.10.02 17:43 신고)

      위 본문의 내용중에 "2. Tesseract-ocr 컴파일을 통한 라이브러리 생성"을 차례대로 따라하시면 라이브러리 파일을 생성하실 수 있습니다.
      감사합니다.

    • 대학생 (2015.10.04 01:05 신고)

      답변 감사합니다!! 덕분에 테스트까지 완료했네요!!
      근데 예제의
      delete [] outText부분에서
      block type is valid phead nblockuse
      이런 에러가 발생하는데 해결 방법 알수 있을까요?
      주석 처리하면 에러없이 끝나더라구요

    • Favicon of http://copynull.tistory.com BlogIcon copynull (2015.10.04 10:42 신고)

      해당 예제는 구글 OCR 프로젝트의 사용예시로서 아래 페이지로 접속하시면 예제에 대한 상세한 내용을 참고하실 수 있습니다.

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

      감사합니다.

  • OldyG (2015.10.03 20:38 신고)

    정말 귀중한정보 감사합니다..!

  • (2015.11.19 12:26)

    비밀댓글입니다

  • 문자인식 (2016.02.15 15:24 신고)

    잘 보고 배우고있습니다~
    제가 Hello World 인식까지는 잘 하였는데
    혹시 Hello World 영상의 인식된 좌표 4군데를 모두 알 수 있는 방법이 있을까요?

    • Favicon of http://copynull.tistory.com BlogIcon copynull (2016.02.15 23:01 신고)

      네... 저도 OCR에 대해서는 깊이 파보지 않아서 잘 모르겠네요.
      도움이 되실지 모르겠지만 해당 프로젝트 공식 사이트에서 도움을 얻어보시는건 어떠신지요.
      주소가 바뀌었더군요
      https://github.com/tesseract-ocr
      입니다.
      감사합니다.

  • 박가용 (2016.03.22 16:36 신고)

    안녕하세요ㅎ 다운로드 경로가 바뀌어 .. 저는 좀 알아보기 힘든 그런 식으로 제공형태가 바뀌었는데 혹시 exe파일을
    inventor13@naver.com
    으로 받을 수 있을까요 ㅎㅎ

    • Favicon of http://copynull.tistory.com BlogIcon copynull (2016.03.22 16:52 신고)

      exe 버전은 저도 가지고 있지 않습니다.

      변경된 사이트로 이동하신 다음 release 버전을 다운로드 받으시면 됩니다.

      또는 아래 주소로 이동하시면 바로 release 다운로드 사이트로 이동합니다.

      https://github.com/tesseract-ocr/tesseract/releases

      감사합니다.

  • parjom (2016.05.09 17:54 신고)

    중간에 250번때 줄에서 나오는 에러는 코드페이지가 안맞아서 나오는 에러입니다.
    비주얼 스튜디오에서 해당 파일을 cpp파일을 열어서
    다른이름으로 저장을 누르면, 저장 버튼옆에 쪼끄만 화살표 있습니다.
    그거 누르면 인코딩을 바꿀수 있어요
    한글(CP949)를 찾아서 선택한다음 덮어 저장하면 에러없이 컴파일 됩니다

    • Favicon of http://copynull.tistory.com BlogIcon copynull (2016.05.10 17:50 신고)

      많은 분들에게 도움이 되는 글인거 같습니다.
      좋은 정보 감사합니다.

  • liblept (2016.05.17 00:50 신고)

    포스팅 정말 많은 도움이 되었습니다. 감사합니다.

    그런데 2번의 컴파일에서 'liblept171.lib 입력 파일을 열 수 없습니다' 라는 오류 1개와 함께

    '클라이언트에서 DLL인터페이스를 사용하도록 지정해야 합니다.' 라는 경고문구가 12개 출력 됩니다.

    어떻게 해결해야 할지 알 수 있을까요.

    • Favicon of http://copynull.tistory.com BlogIcon copynull (2016.05.17 21:25 신고)

      해당 디렉토리에서 liblept171.lib 를 검색하셔서 검색된 경로를 라이브러리 추가 경로로 설정하세요

  • kkk (2016.05.30 22:11 신고)

    위 글을 보고 따라했는데
    302 그거 빌드했더니 오류가 나왔는데 ,snprintf 재정의가 필요하다고 뜹니다.
    vs2015여서 이거때문에 오류가 있는건가요?

    • Favicon of http://copynull.tistory.com BlogIcon copynull (2016.05.31 09:43 신고)

      전처리 헤더가 추가되지 않았거나 SDL 검사때문에 문제가 된 부분일수도 있습니다. 에러부분을 읽어보시면 어떻게 해야되는지 나올겁니다. secure function으로 바꾸라는 부분일수도 있겠네요.

    • kkk (2016.06.01 20:11 신고)

      오류 나는 파일 보니까 stdio.h 이더라구요
      오류 C1189 #error: Macro definition of snprintf conflicts with Standard Library function declaration 나오는데 어떻게 해야하나요?

  • 하늘연날 (2016.06.15 11:42 신고)

    tesseract 학습데이터 관련 질문입니다.
    인식된 문자가 엉망이라 학습시키면서 보완해 나가고 싶은데, 만들어진 .traineddata를 계속해서 누적학습이 가능한지 여쭤보고싶습니다.
    누적학습이 안된다면 수백장의 그림파일을 한번에 .traineddata로 만들어야할 상황이라서요...
    .traineddata를 여러개 사용하거나 누적 학습이 가능한지를 아시면 답변부탁드립니다.

    • Favicon of http://copynull.tistory.com BlogIcon copynull (2016.06.15 21:22 신고)

      트레이닝 내용에 대한 부분은 아래 페이지에서 도움을 받으실 수 있습니다.
      https://github.com/tesseract-ocr/tesseract/wiki/TrainingTesseract

  • 권창범 (2016.08.10 11:16 신고)

    영상처리를 배우고 있는 학생입니다. 이번 프로젝트에 문자인식이 필요해서 오픈 소스를 이용해서 해결을 할려고 하는데 release 파일을 받았습니다. vs2010 파일에서 프로젝트를 열어서 실행을 하여 디버깅을 하였습니다.
    error C1083 : 포함 파일을 열 수 없습니다. 'allheader.h': NO such file or directory
    찾아도 안나와서 .. 알려주실수 있을까요?
    visual 2013을 사용하고 있습니다.

    • Favicon of http://copynull.tistory.com BlogIcon copynull (2016.08.10 21:58 신고)

      https://github.com/tesseract-ocr/tesseract/wiki/Compiling#windows

      이쪽에서 원하시는 답을 찾으실 수 있습니다.
      감사합니다.

  • 권창범 (2016.08.26 10:35 신고)

    OCR 한글인식은 안되나요?

    예제 그림으로 바다를 만들었는데...

    오류가 났습니다. 한글인식은 다른방법으

    해야 하는지 알수 있을까요?

    • Favicon of http://copynull.tistory.com BlogIcon copynull (2016.08.26 13:57 신고)

      한국어도 가능합니다. 언어파일을 한국어 파일로 추가하시고 설정하시면 됩니다.

    • 권창범 (2016.09.02 10:50 신고)

      언어파일을 한국어로 파일로 추가하고 설정하면 된다고 말씀하신게 설치할때 한국어 체크를 하라고 하시는건가요? 아니면 스튜디어 상에서 설정하는것이 있는건가요?

Prev 1 ··· 119 120 121 122 123 124 125 126 127 ··· 249 Next