이미지 파일에서 문자열을 추출하거나 captcha우회하기 위해 captcha로 부터 문자열을 추출해야 하는 경우에 이미지의 문자 상태가 양호한 편(복잡한 형태의 captcha는 안됨)이라면 간단하게 pytesser라는 라이브러리를 활용해서 문자열을 추출 할 수 있습니다. 


참고로, 우분투 12.04 버전을 기준으로 작성하였습니다. 



추천은 저를 춤추게 합니다 ^^



1. 먼저 아래의 우분투 패키지들을 설치해줍시다. 


$ sudo apt-get install libpng12-dev

$ sudo apt-get install libjpeg62-dev

$ sudo apt-get install libtiff4-dev

$ sudo apt-get install GCC

$ sudo apt-get install g++

$ sudo apt-get install automake



2. pytesser를 설치하기 위해 필요한 파일들을 각 사이트에 접속해서 다운 받아서 설치합니다. 


2.1 leptonica 를 설치합시다. (leptonica-1.69.tar.bz2)


다운로드 주소: 

 

컴파일 및 설치 명령어 

$ ./configure && make -j4 && sudo make install



2.2  Tesseract 를 설치합시다. (  tesseract-ocr-3.02.02.tar.gz)


다운로드 주소:


컴파일 및 설치 명령어 

./configure && make -j4 && sudo make install && sudo ldconfig


 

2.3  Tesseract 언어 데이터 파일을 설치합시다. ( tesseract-ocr-3.02.eng.tar.gz)

영어를 인식해서 문자열을 추출하기 위해 영어 데이터 파일을 다운 받았습니다. 


다운로드 주소:


설치:

다운 받은 파일을 압축을 풀어서 다음 폴더로 옮겨 줍시다. 


/usr/local/share/tessdata


 


2.4  pytesser를 다운 받읍시다.  ( pytesser_v0.0.1.zip )


다운로드 주소:


pythess를 사용할 폴더에서 다운 받은 파일의 압축을 풀어줍니다. 



3. 테스트  

바로 이미지 파일 디코드를 시작해도 되지만, 우선 제대로 설치 됐는지 확인해보는게 좋습니다. 


pytesser 파일의 압축을 풀어 놓은 폴더로 이동해서 테스트로 파이썬 파일을 하나 만들어서 아래와 같은 코드로 테스트 해 봅시다. 


※ 소스코드를 더블클릭하면 복사가 가능합니다. 



4. 코드 작성 및 즐기기 

위의 테스트코드가 정상적으로 동작한다면 아래와 같이 원하는 코드를 작성하셔서 사용하시면 됩니다. 



getpixel() 함수로 픽셀값을 가져오고 putpixel() 함수로 원하는 위치의 값을 변경 할 수 있습니다. 


참고로, 255가 흰색이고 0이 검은색입니다. 

위 코드는 검은색이 아닌 즉, 글씨가 아닌 부분을 하얗게 처리하기 위한 코드인거죠. 


이걸 잘 활용해서 글자에 구멍 난 부분을 메울 수 도 있겠죠? 

이미지 보정 작업을 하면 아래처럼 컴퓨터가 인식하기에 좀 더 편하게 만들어 줄 수 있답니다. 




다양한 이미지 처리 함수에 대해 알고 싶다면 아래 사이트를 참고하시면 됩니다. 

PIL 함수 참고 사이트 =>  http://effbot.org/imagingbook/image.htm



Posted by KT한
,