빅데이터 & 분석/Machine Learning

파이썬(Python) - 머신러닝 프로젝트(2) - OCR 이미지 문자열 추출(파이썬)

2018. 7. 23. 16:25
목차
  1. Tessaract - 파이썬 설치

파이썬 Tesseract - 프로젝트 설명


OCR 추출 부터 이어지는 머신러닝을 활용한 프로젝트 두번 째 포스팅 입니다.

제가 진행하는 프로젝트는 SMS로 수신되는 다양한 이미지 스팸(SPAM) 광고 문자(이미지)를 분석해서 

텍스트를 분석 -> 출력 후 -> 데이터 정제 -> 기계학습 -> 데이터 확인(스팸 종류 및 여부) 확인
순서로 진행할 예정입니다.


오늘 정리 예정인 내용은 지난 시간에 이어서 Tesseract 사용 부분을 파이썬 코드로 변환해서 앞으로
연동 예정인 Pandas, Numpy 등에 대비할 예정입니다.


5회 정도의 포스팅으로 연재를 이어나갈 예정이며, 하단의 예제를 쉽게 따라하실 수 있게 정리하겠습니다.

이전 포스팅을 차근차근 읽어보시면 더욱 도움이 되실걸로 생각이 됩니다. - 관련 포스팅



Tessaract - 파이썬 설치

우선 Tessaract 를 파이썬에서 사용하기 위해서는 아래와 같은 명령어로 설치합니다.

그 전에 저번 포스팅에 설명드렸듯이 Tessaract 가 미리 설치되어 환경변수에 설정되어 있어야 합니다.

본 설정은 Windows10 (x64)에 아나콘다(Anaconda3), Python 3.6 환경에서 설정했습니다.

명령어 : pip install pillow

                pip install pytesseract

아래 예제 소스는 이미지에서 한글 + 영문, 영문, 한글 등을 추출 후 콘솔에서 출력 합니다. 
그 후에 해당 내용을 텍스트 파일로 저장하는 내용도 추가되어 있습니다.

ocr_to_string_blog.py


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
44
45
46
47
48
from PIL import Image     #pip install pillow
from pytesseract import * #pip install pytesseract
import configparser
import os
 
#Config Parser 초기화
config = configparser.ConfigParser()
#Config File 읽기
config.read(os.path.dirname(os.path.realpath(__file__)) + os.sep + 'envs' + os.sep + 'property.ini')
 
#이미지 -> 문자열 추출
def ocrToStr(fullPath, outTxtPath, fileName, lang='eng'): #디폴트는 영어로 추출
    #이미지 경로
 
    img = Image.open(fullPath)
    txtName = os.path.join(outTxtPath,fileName.split('.')[0])
 
    #추출(이미지파일, 추출언어, 옵션)
    #preserve_interword_spaces : 단어 간격 옵션을 조절하면서 추출 정확도를 확인한다.
    #psm(페이지 세그먼트 모드 : 이미지 영역안에서 텍스트 추출 범위 모드)
    #psm 모드 : https://github.com/tesseract-ocr/tesseract/wiki/Command-Line-Usage
    outText = image_to_string(img, lang=lang, config='--psm 1 -c preserve_interword_spaces=1')
 
    print('+++ OCT Extract Result +++')
    print('Extract FileName ->>> : ', fileName, ' : <<<-')
    print('\n\n')
    #출력
    print(outText)
    #추출 문자 텍스트 파일 쓰기
    strToTxt(txtName, outText)
 
#문자열 -> 텍스트파일 개별 저장
def strToTxt(txtName, outText):
    with open(txtName + '.txt', 'w', encoding='utf-8') as f:
        f.write(outText)
 
#메인 시작
if __name__ == "__main__":
 
    #텍스트 파일 저장 경로
    outTxtPath = os.path.dirname(os.path.realpath(__file__))+ config['Path']['OcrTxtPath']
 
    #OCR 추출 작업 메인
    for root, dirs, files in os.walk(os.path.dirname(os.path.realpath(__file__)) + config['Path']['OriImgPath']):
        for fname in files:
            fullName = os.path.join(root, fname)
            #한글+영어 추출(kor, eng , kor+eng)
            ocrToStr(fullName, outTxtPath, fname,'kor+eng')
Colored by Color Scripter
cs

- 6번 라인 : 다양한 운영체제 및 실행 환경 변경 대비 위한 configParser 임포트
- 9번 라인 : 운영체제에 맞는 패스 접근자를 활용해서 property.ini 파일 로드
- 12번 라인 : 가장 중요한 이미지에서 텍스트를 출력하는 부분(주석 확인)
- 32번 라인 : 텍스트 추출 후 -> 콘솔 출력 -> 텍스트 파일 저장 처리 함수
- 41번 라인 : 텍스트 파일이 저장 될 경로 로드
- 44번 라인 : 현재 실행 파일 기준 하위 폴더에 있는 모든 이미지를 순회하며 추출하는 반복문
- 48번 라인 : 옵션 값으로 한글+영문 지정 후 OCR 시작


property.ini

1
2
3
4
5
6
[Bigdata Ocr Extract]
Version= 1.0
 
[Path]
OriImgPath= \\resource\\orc_ori_image
OcrTxtPath= \\resource\\ocr_result_txt
cs

- 1번 라인 : 프로그램 버전 명시
- 5번 라인 : 추출 할 원본 이미지 경로
- 6번 라인 : 추출 된 텍스트 파일이 저장 될 경로

파이썬 configParser 패키지의 추가적인 상세 설명은 이 곳을 참고해 주세요.



Tessaract - OCR 이미지 텍스트 추출 테스트


실제 소스코드 실행 및 OCR 추출 화면


저번 포스팅에서 설명드린 psm, interword_spaces 등의 옵션 값 조절을 통해서 한글, 영문, 한글+영문
조합으로 구성되어 있는 이미지에 대해서 상당히 만족할 만한 OCR 추출 결과를 보여주고 있습니다.



마무리

오늘은 상단에서 순서대로 설명한대로 이미지에서 텍스트를 추출하는 OCR 라이브러리인 tesseract를 
설치 후 영문, 한글, 한글+영문 이미지에서 텍스트를 추출해 보는 기능을 파이썬 코드로 작성했습니다.

추출 후 기계 학습에 맞게 텍스트를 정제 및 가공하는 과정에서 조금 더 시간이 소요 될 걸로 예상됩니다.


다음시간에는 파이썬 코드를 활용해서 추출 된 텍스트를 가공 및 정제 하는 코드를 작성해보겠습니다.


특수문자, 띄어쓰기 등에 대해서 규칙에맞게 할 예정이며, 또 이를 학습에 자주 사용되는 파일 형식인
CSV파일 형식으로 저장해보겠습니다.


다음포스팅에서 계속해서 연재를 이어나가도록 하겠습니다. 감사합니다.

소스코드 다운로드 :  python_bigdata.zip



저작자표시 동일조건 (새창열림)

'빅데이터 & 분석 > Machine Learning' 카테고리의 다른 글

파이썬(Python) - Scikit Learn 의사결정트리(Decision Tree) 시각화 예제  (8) 2018.12.14
파이썬(Python) - 머신러닝 프로젝트(최종) - 나이브 베이즈 스팸 필터링  (26) 2018.09.23
파이썬(Python) - 머신러닝 프로젝트(4) - mLab 호스팅 활용 MongoDB 연동  (4) 2018.09.09
파이썬(Python) - 머신러닝 프로젝트(3) - 문자열 가공 및 TXT 및 CSV 저장  (9) 2018.07.27
파이썬(Python) - 머신러닝 프로젝트(1) - OCR 이미지 문자열 추출(Tesseract)  (7) 2018.07.15
  1. Tessaract - 파이썬 설치
'빅데이터 & 분석/Machine Learning' 카테고리의 다른 글
  • 파이썬(Python) - 머신러닝 프로젝트(최종) - 나이브 베이즈 스팸 필터링
  • 파이썬(Python) - 머신러닝 프로젝트(4) - mLab 호스팅 활용 MongoDB 연동
  • 파이썬(Python) - 머신러닝 프로젝트(3) - 문자열 가공 및 TXT 및 CSV 저장
  • 파이썬(Python) - 머신러닝 프로젝트(1) - OCR 이미지 문자열 추출(Tesseract)
[좋은사람]
[좋은사람]
좋은사람의 개발 노트 입니다.
[좋은사람]
좋은사람의 개발 노트
[좋은사람]
전체
오늘
어제
  • 전체보기 (189)
    • 언어 (68)
      • Java (12)
      • Python (39)
      • C# (5)
      • PHP (4)
      • Go (8)
    • OS (18)
      • Linux (7)
      • Windows 10 (5)
      • Etc (6)
    • 빅데이터 & 분석 (8)
      • R (0)
      • Machine Learning (8)
    • 네트워크 (4)
      • Etc (4)
    • 웹 프론트 (25)
      • Javascript & ECMA (8)
      • Vue (13)
      • React (4)
    • 웹 백엔드 (15)
      • Spring (3)
      • Django & Flask (7)
      • Npm & Express (5)
    • 개발도구 (18)
      • Jetbrains (3)
      • Eclipse (5)
      • Git (4)
      • Atom & VScode (6)
    • 데이터베이스 (7)
      • Oracle (2)
      • MariaDB & MySQL (2)
      • Etc (3)
    • 모바일 (6)
      • Android (3)
      • Hybrid (3)
    • 라이프 (20)
      • 여행 & 일상 (6)
      • 취미 (14)

블로그 메뉴

  • 홈으로
  • 블로그소개
  • 태그
  • 방명록

공지사항

인기 글

태그

  • php
  • python
  • Eclipse
  • vue.js
  • 머신러닝
  • Linux
  • Database
  • 이클립스
  • react
  • 코딩 면접
  • 3DS
  • CFW
  • 개발자 면접
  • flask
  • 윈도우10
  • C#
  • go
  • windows10
  • nodejs
  • 2DS
  • 미뮤
  • 커펌
  • javascript
  • 디자인패턴
  • Java
  • Thread
  • ubuntu
  • Anaconda
  • Git
  • SpringSTS
  • Django
  • ps4
  • 리액트
  • Algorithm
  • npm
  • OCR
  • 아톰 에디터
  • 인텔리j
  • centos
  • ATOM

최근 댓글

최근 글

hELLO · Designed By 정상우.
[좋은사람]
파이썬(Python) - 머신러닝 프로젝트(2) - OCR 이미지 문자열 추출(파이썬)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.