2012.11.08 10:40

[python] pytesser import 하기

1. 설치하기

http://code.google.com/p/pytesser/wiki/README 중 일부 내용이다.

Installation:

==============
PyTesser has no installation functionality in this release.  Extract pytesser.zip
into directory with other scripts.  Necessary files are listed in File Dependencies below.

설치가 필요가 없다. 압축만 풀면 된다고 한다.


다만 압축을 풀면 파일이 상당히 많다.

이 모듈을 사용하기 위해서는 실행 파일을 압축 해제 폴더에 넣어주던지, 경로를 조금 수정해서 작업을 해야한다.


아주 귀찮다.

그래서 import 시키기 편하게 만들어 볼까 한다.


2. import 하기

python 에서 import를 하면 몇 가지 경로를 찾는다.

그 중 한곳에 압축을 푼 폴더를 옮겨 준다. (ex:C:\Python27\Lib)

폴더 이름도 변경한다. (pytesser_v0.0.1 -> pytesser)


현재 작업 경로 : C:\Python27\Lib\pytesser


현 디렉터리 중 'pytesser.py' 파일을 복사한 후, 이름을 변경한다. (__init__.py)


3. __init__.py 파일 수정하기


현재 수정 파일 : C:\Python27\Lib\pytesser\__init__.py


12번째 라인 수정

수정 전)tesseract_exe_name = 'tesseract'

수정 후) tesseract_exe_name = 'C:\\Python27\\Lib\\pytesser\\tesseract'


4. 테스트

임의의 디렉터리에 test.py 파일을 생성한다. (동일 디렉터리에 'phototest.tif'를 복사해야 한다. )


# test.py

from pytesser import *
im = Image.open('phototest.tif')      // 경로 설정
text = image_to_string(im)
print text


========================= 결과 =========================

test dir>test.py
This is a lot of 12 point text to test the
ocr code and see if it works on all types
of file format.
The quick brown dog jumped over the
lazy fox. The quick brown dog jumped
over the lazy fox. The quick brown dog
jumped over the lazy fox. The quick
brown dog jumped over the lazy fox.


잘 되는구만..

Trackback 0 Comment 0
2008.04.07 14:17

문자셋( MBSC vs WBCS)

문자셋의 종류와 특성

 

가장 대표적인 문자셋은 ASCIIUNICODE이다.

1Byte로 표현되는 ASCII의 한계를 극복하기 위해 2Bytes로 표현되는 UINCODE가 등장했다.

 

ASCIISBCS(Single Byte Character Set)의 대표적인 형태이고,

UNICODEWBCS(Wide Byte Character Set)의 대표적인 형태이다.

그 중간의 형태가 MBCS(Multi Byte Character Set)이다. 즉 어떤 문자는 1byte로 표현되고, 어떤 문자는 2byte로 표현되는 형태를 갖고 있다.

 

문제는 프로그래밍을 할 때 함수의 형태가 다르다는 것이다.

간단한 프로그램을 생각해 보자. (Work Hard에서 Think Hard.. )

 

SBCS에서는 일반적으로 main 함수를 사용한다.

WBCS에서는 wmain을 사용한다.

 

각각의 환경에 따라서 사용해야 하는 함수가 다른데 이걸 좀 더 편안하게 바꿔줄 뭔가가 있으면 유용할 것이다.

 

사용하는 함수도 차이가 있다.

char 대신 wchar_t, ABC 대신 LABC가 사용된다.

 

이러한 변환을 매크로 함수를 사용해서 가능하게 해 보자.

C:\Program Files\Microsoft Visual Studio\VC98\Include\tchar.h 파일을 보자.

상당히 많은 내용을 확인할 수 있을 것이다.

 

간단히 줄여서 살펴보면 하면


 #ifdef _UNICODE
    #define        _tmain        wmain
    #define        _tcslen        wcslen
    #define        _tcscat        wcscat
    #define        _tcscpy    wcscpy
    #define        _tcsncpy    wcsncpy
    #define        _tcscmp    wcscmp
    #define        _tcsncmp    wcsncmp
    #define        _tprintf        wprintf
    #define        _tscanf        wscanf
    #define        _fgetts        fgetws
    #define        _fputts        fputws
    
#else
    #define        _tmain        main
    #define        _tcslen        strlen
    #define        _tcscat        strcat
    #define        _tcscpy    strcpy
    #define        _tcsncpy    strncpy
    #define        _tcscmp    strcmp
    #define        _tcsncmp    strncmp
    #define        _tprintf        printf
    #define        _tscanf        scanf
    #define        _fgetts        fgets
    #define        _fputts        fputs
#endif   


이를 바탕으로 다음과 같이 MBCSWBCS를 동시에 지원하는 프로그램을 작성할 수 있다.

 

#define               UNICODE

#define               _UNICODE

 

#include <stdio.h>

#include <tchar.h>

#include <windows.h>

 

int wmain( int argc, TCHAR* argv[] )

{

             TCHAR str[100];

            

             _fputts( _T("Input String : "), stdout );

             _tscanf( _T("%s"), str );

 

             _tprintf( _T("String is %s\n"), str );

 

             return 0;

}

  

사용자 삽입 이미지

그림 1. 실행결과

※ "뇌를 자극하는 윈도우즈 시스템 프로그래밍" 中 요약

Trackback 0 Comment 0