python using ocr(python을 이용하여 ocr, 이미지 프로세싱)

Posted by jungbbong
2015. 7. 5. 09:12 프로그래밍/Python

python을 이용하여 이미지 프로세싱

-> 요컨데 이미지의 글을 추출하여 text데이터로 뽑는방법


환경 라즈베리파이2, 라즈비안에서 실행하였음


생각보다 컴파일이 느림

패키지파일들이 의존성이 있기때문에 로컬에서 컴파일하였음...


#컴파일내용들

#개발SDK도구들도 설치함

sudo nice apt-get update

sudo apt-get install autoconf automake libtool

sudo apt-get install libpng12-dev

sudo apt-get install libjpeg62-dev

sudo apt-get install g++

sudo apt-get install libtiff4-dev

sudo apt-get install libopencv-dev libtesseract-dev

sudo apt-get install cmake

sudo apt-get install libleptonica-dev

sudo apt-get install liblog4cplus-dev

sudo apt-get install libcurl3-dev

sudo apt-get install python2.7-dev

sudo apt-get install tk8.5 tcl8.5 tk8.5-dev tcl8.5-dev

#sudo apt-get build-dep python-imaging --fix-missing


#python에서 이미지라이브러리를 사용하기위한 pillow(PIL의 업데이트 버전이라고 보면된다)

#혹시몰라서 둘다설치함 pil 실제코드에서는 PIL을 사용

sudo pip install pillow

sudo pip install pil


#이미지 컨버팅프로그램

sudo apt-get install imagemagick


#옵션

sudo apt-get install git

sudo apt-get install build-essential


#이미지 처리하는 프로그램

#컴파일시 상당시간을 소모함 


wget http://www.leptonica.org/source/leptonica-1.70.tar.gz

tar -zxvf leptonica-1.70.tar.gz

cd leptonica-1.70/

./autobuild

./configure

make

sudo make install

sudo ldconfig


#tesseract
#오픈소스임

wget https://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.02.tar.gz 

tar -zxvf tesseract-ocr-3.02.02.tar.gz
cd tesseract-ocr/
./autogen.sh
./configure
make
sudo make install
sudo ldconfig


#환경변수등록

#해당 TESSDATA_PREFIX 폴더의 위치를 등록하여 한국어트레이닝셋을 넣어주어야함

export TESSDATA_PREFIX=/usr/local/share/


#한국어 트레이닝셋 다운로드후 복사

wget https://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.kor.tar.gz

tar xvf tesseract-ocr-3.02.kor.tar.gz

cd tesseract-ocr/

sudo cp -r tessdata/ $TESSDATA_PREFIX



#tesseract를 wrapping하기위한 python package 설치

sudo pip install pytesseract  



#python 코드



*8번째 라인에서 PIL의 image객체의 함수인 convert를 통하여 이미지에 대한 조작을 쉽게 해준다음 getpixel을 사용, 이미지에 대한 특징값을 도드라지게 변경해서 쉽도록 튜닝할수도있다.....

16번째 라인과 17번째 라인의 차이점은 lang 옵션을 쓰도록 수정한것, 한국어 지원을 위하여 한국어 트레이닝셋을 넣은다음에 한국어옵션으로 사용하도록 한것이다




테스트에 사용한 이미지파일



추가적으로 임의의 트레이닝셋을 통하여 사용하는방법을 찾아보는중...







[CCNA] 01. OSI 7 Layer & TCP/IP

Posted by 알 수 없는 사용자
2015. 7. 4. 11:41 네트워크및보안&해킹/네트워크

[ 다룰 내용 ]


이번 주제는 네트워크 분야에 있어 가장 기본적이지만 핵심적인 부분으로 네트워크에 관심이 있거나 기초지식을 쌓고 싶다면 한번쯤 봐주기를 희망한다.

네트워크 각 계층에 대한 개념 이해와 더불어 네트워크 기초지식을 바탕으로 개념과 원리에 중점을 두어서 설명할 것이다.

본 Chapter에서는 네트워크 계층별 구성 요소와 OSI 7 Layer와 TCP/IP 비교 및 각 계층에서 쓰이는 프로토콜에 대해서 다룰것이다.



[ 본문 ]


1. OSI (Open System Interconnection) 7 Layer Model

개념 : OSI 7 Layer는 교육용으로 매우 유용하게 쓰이고 있으며, 네트워크를 이해하는데 유용한 참조모델이다.























 1계층 (Physical / 물리) 

 - 설     명 : 전기적 신호를 데이터로 변환해주는 역할을 한다.

 - 대표장비 : 케이블(랜선, 회선), 허브, 리피터, 커넥터 등


 2계층 (Data Link / 데이터 링크) 

 - 설     명 : 물리적 주소로 노드 간 연결 (L3 이상의 장비는 전부 노드라고 칭한다)

 - 대표장비 : 브릿지, L2-스위치 등

 - 프로토콜 : LAN 구간 (이더넷, 토큰링) / WAN 구간 (PPP, HDLC) 등


 3계층 (Network / 네트워크) 

 - 설     명 : 논리적 주소로 최초 출발지에서 최종 목적지까지 최적경로 결정을 한다.

 - 대표장비 : 라우터, L3-스위치 등

 - 프로토콜 : ARP, IPX, OSPF, RARP, ICMP, IGMP 등


 4계층 (Transport / 전송) 

 - 설     명 : 서비스를 구분하고, 데이터의 전송을 담당한다.

 - 대표장비 : L4-스위치 등

 - 프로토콜 : TCP, UDP


1,2,3,4계층 까지는 데이터의 전송을 담당한다.

--------------------------------------------------------------------------------------------------------------------------

5, 6, 7계층 까지를 End-User 계층이라고 부르며, 데이터의 생성을 담당한다.

 5계층 (Session / 세션) 

 - 설     명 : 응용프로그램간의 세션 연결, 유지 해제를 담당한다 (카카오톡에서 친구가 프로필을 변경하면 실시간으로 내가 볼 수 있는 원리)


 6계층 (Presentation / 표현) 

 - 설     명 : 확장자의 압축, 암호화, 변환을 담당한다.


 7계층 (Application / 응용) 

 - 설     명 : 사용자에게 인터페이스를 제공해서 서비스가 가능하게 한다.

 - 프로토콜 : UDP 계열 (DNS(53), DHCP(67,68), TFTP(69), SNMP(162)) / TCP 계열 (FTP(20,21), SSH(22), Telnet(23), SMTP(25), HTTP(80), POP3(110))


 

2. TCP / IP Model

TCP (Transmission Control Protocol)는 메시지나 파일들을 좀 더 작은 패킷으로 나누어 전송하고, 수신된 패킷들을 재조립하는 일을 담당한다.

IP (Internet Protocol)는 각 패킷의 주소 부분을 처리함으로써 패킷들이 목적지에 정확하게 도달할 수 있게 한다.

 


3. OSI 7 Layer 와 TCP/IP 비교


OSI 7 Layer

TCP/IP

TCP/IP Protocol Suite

응용 계층

응용 계층

HTTP, FTP, TFTP,

SSH, Telnet, SMTP,

POP3, DNS, DHCP

표현 계층

세션 계층

전송 계층

전송 계층

TCP, UDP

네트워크 계층

인터넷 계층

IP, ICMP, ARP

데이터 링크 계층

네트워크 인터페이스 계층

이더넷, 토큰링, ATM

프레임 릴레이, PPP

물리 계층




[ 다음장에서는... ]

OSI 7 Layer와 TCP/IP만 잘 이해하더라도 어디가서 네트워크에 대해서 지식이 없다는 소리를 듣지 않을정도로 핵심적인 내용이다.

앞으로 다룰 주제들은 모두 오늘 다룬 내용들의 심화내용들이기 때문에 이번 주제를 잘 이해하려 했다면 어렵지 않을 것으로 생각한다.



'네트워크및보안&해킹 > 네트워크' 카테고리의 다른 글

[CCNA] 03. Application Layer  (2455) 2015.08.07
[CCNA] 02. Physical Layer / Data Link Layer  (1190) 2015.07.24

[WPF] MVC, MVP, MVVM 차이점

Posted by 알 수 없는 사용자
2015. 6. 30. 17:41 프로그래밍/WPF

디자인 패턴 중 WPF 많이 쓰이는 MVVM 패턴을 알기전에 MVC, MVP 패턴과의 차이점을 알 필요가 있다.

MVVM의 패턴과 유사한 패턴인 MVC, MVP 패턴과 차이점을 설명하기전에 공통적으로 쓰이는 Model과 View에 대해서 간략히 알도록 하자.

Model - 일종의 데이터(Data)라고 생각하면 된다. 데이터 이외에 데이터를 조작하는 간단한 로직이 추가 되기도 한다.

View - 디스플레이. 사용자에게 제공되어지는 UI Layer를 뜻한다. 보통 Application에서는 View는 CSS/HTML/XML/XAML 등으로 렌더링 된 화면을 가르킨다.

MVC, MVP, MVVM 패턴과 같은 프레임워크가 나오게 된 궁극적인 이유는?

한마디로 각 계층을 분리시킴으로써 코드의 재활용성을 높이고 불필요한 중복을 막기위한 이유이다.

Model과 VIew의 의존성을 어떻게 제어하느냐에 따라 각 패턴이 분류 된다.


1.MVC (Model - View - Controller)

모든 입력은 Controller 에서 처리된다. 입력이 Controller로 들어오면 Controller는 입력에 해당하는 Model을 조작(업데이트)하고, Model을 나타내어줄 View를 선택한다.

Controller는 View를 선택할수 있기 때문에 하나의 Controller가 여러개의 View를 선택하여 Model을 나타내어 줄 수 있다.

이때 Controller는 View를 선택만하고 업데이트를 시켜주지 않기때문에 View는 Model을 이용하여 업데이트 하게된다. 

Model을 직접 사용하거나 Model에서 View에게 Notify해주는 방법, View에서 Polling을 통해 Model의 변화를 알아채는 방법등이있다.

이와 같이, ViewModel을 이용하기 때문에 서로간의 의존성을 완벽히 피할 수 없다는 단점이 있고, 좋은 MVC 패턴이라 함은 View와 Model간의 의존성을 최대한 낮게한 패턴이 좋은 패턴이라 할 수 있다.

2. MVP(Model - View - Presenter)

MVC 패턴과 다르게 입력이 View에서 처리된다. Presenter는 View의 인스턴스를 갖고 있으며 View와 1대1 관계이고, 그에 해당하는 Model의 인스턴스 또한 갖고 있기때문에 View와 Model 사이에서 다리와 같은 역할을 한다. View에서 이벤트가 발생하면 Presenter에게 전달해주고 Presenter는 해당 이벤트에 따른 Model을 조작하고 그 결과를 바인딩을 통해 View에게 통보를 하여 View를 업데이트 시켜준다. MVC 패턴과는 다르게 Presenter를 통해 Model과 View를 완벽히 분리해 주기 때문에 View는 Model을 따로 알고 있지 않아도 된다는 장점이 있다. 단점으로는 View와 1대1 관계이기 때문에 View와의 의존성이 매우 강하다.

3. MVVM(Model - View - ViewModel)

ViewModel 뷰모델 말그대로 View를 나타내주기 위한 Model이라고 생각하면 된다. View보다는 Model과 유사하게 디자인 되며, View의 바인딩 될 때 가장 강력하다. 

MVP와 같이 View에서 입력이 처리된다.

MVVM 패턴의 가장 큰 장점이라 함은 CommandData Binding으로 MVP 패턴과 달리 View와의 의존성을 완벽히 분리 할 수 있다는 장점이 있다.

Command를 통하여 Behavior를 View의 특정한 ViewAction(Event)와 연결할 수 있으며, ViewModel의 속성과 특정 View의 속성을 Binding 시켜 줌으로써 ViewModel 속성이 변경 될때마다 View를 업데이트 시켜줄 수 있다.



출처 : https://tomyrhymond.wordpress.com/2011/09/16/mvc-mvp-and-mvvm/


'프로그래밍 > WPF' 카테고리의 다른 글

MVC, MVVM 코드 리뷰를 통한 차이점 설명  (5) 2015.07.05
[WPF] XAML  (7) 2015.05.30
[WPF] WPF 개념  (6) 2015.05.29