반응형

파이썬을 이용해서 글자를 인식하는 프로그램이다.

아래 블로거님을 참고해서 제작 했다. 

 

(참고 링크)

junyoung-jamong.github.io/computer/vision,/ocr/2019/01/30/Python%EC%97%90%EC%84%9C-Tesseract%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-OCR-%EC%88%98%ED%96%89%ED%95%98%EA%B8%B0.html

 

Python에서 Tesseract 사용하기 for OCR

Tesseract 이미지로부터 텍스트를 인식하고, 추출하는 소프트웨어를 일반적으로 OCR이라고 한다. Tesseract는 1984~1994년에 HP 연구소에서 개발된 오픈 소스 OCR 엔진이며, 현재까지도 LSTM과 같은 딥러닝

junyoung-jamong.github.io

 

글자 인식을 위해서는 별도의 tesseract 프로그램이 필요하다. 설치방법은 위에 블로그를 참고 바란다.

아래 아이콘같은 파일이 다운로드 된다. 

 

1. tesseract 설치하기

기본적으로 영어만 인식하게 되어있으며, 다른언어를 인식하게 끔 하려면 옵션선택을 해야 한다.

한국어 인식을 위해 korean 선택

2. tesseract 환경변수 등록하기

    2-1. 단축키 Window + S 키를 누르고 환경 이라고 쓴다.

    2-2. 환경변수 - path를 편집

    2-3. 프로그램 다운로드 위치인 C:\Program Files\Tesseract-ORC 를 등록한다. (필자는 62비트)

          32비트인 사람들은 C:\Program Files (x86)\Tesseract-ORC 에 있을 것이다.

환경변수를 등록하고 저장

    2-4. cmd로 tesseract 라고 치면 아래와 같이 나와야 설치 및 설정이 된것이다.

반응형

3. 필요한 라이브러리 패키지 설치

 

해당 코드를 사용하기 위해서는 아래 라이브러리가 필요하다.

필자는 opencv만 있으므로 나머지 2개를 추가로 설치했다.

 

- 패키지 설치
pip install pillow
pip install pytesseract
pip install opencv-python

pip install pillow
pip install pytesseract
pip install opencv-python

pillow 설치
pytesseract 설치

파이썬 코드

'''
    reference link : https://junyoung-jamong.github.io/computer/vision,/ocr/2019/01/30/Python%EC%97%90%EC%84%9C-Tesseract%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-OCR-%EC%88%98%ED%96%89%ED%95%98%EA%B8%B0.html
    Have to download OCR program firstly.
    Link : https://github.com/UB-Mannheim/tesseract/wiki
    environment    : Window 10, python 3.6
    tesseract ver  : v5.0.0.20190526.exe

    - 이미지 글자 추출 테스트
    cmd > tesseract path\name.png stdout

    - 패키지 설치
    pip install pillow
    pip install pytesseract
    pip install opencv-python
'''

import cv2
import os
try:
    from PIL import Image
except ImportError:
    import Image
import pytesseract

# 설치한 tesseract 프로그램 경로 (64비트)
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract'
# 32비트인 경우 => r'C:\Program Files (x86)\Tesseract-OCR\tesseract'

# 이미지 불러오기, Gray 프로세싱
image = cv2.imread("digit.png")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# write the grayscale image to disk as a temporary file so we can
# 글자 프로세싱을 위해 Gray 이미지 임시파일 형태로 저장.
filename = "{}.png".format(os.getpid())
cv2.imwrite(filename, gray)

# Simple image to string
text = pytesseract.image_to_string(Image.open(filename), lang=None)
os.remove(filename)

print(text)

cv2.imshow("Image", image)
cv2.waitKey(0)

위 코드는 이미지파일에서 글자(숫자, 영어)를 추출해서 text로 출력한다.

 

(테스트 1 - 숫자 출력 ) digit.png 파일

원본 이미지
출력 결과, 숫자가 잘 출력 되었다.

(테스트 2 - 영어와 숫자 출력 ) eng_digit.png 파일

원본 이미지
약간 이상한 특수문자가 끼어있지만, 대체로 출력 되었다.

(테스트 3 - 긴 영어문장 출력 ) sentences.png 파일

원본 이미지

(테스트 4 - 코드에 한글 옵션을 추가해서 한글도 출력해본다.)

아래 옵션을 'kor' 로 변경
원본이미지
안타깝게도 일부 잘 보이는 글자들만 인식되고 나머지는 생략되었다.

 

글자가 명확할 수록 더 잘 인식이 된다.

여러가지 테스트를 해보길 바란다.

 

 

 

<영상처리 관련 독특한 직업 스마트시티CCTV 관제사 자격증>

https://ansan-survivor.tistory.com/921

 

독특한 자격증, 스마트시티 CCTV 관제사 자격증! (스마트시티 자격증, 4차산업 자격증)

4차산업 혁명과 AI 빅데이터가 발전하고 있는 요즘에는 다양한 독특한 자격증들이 생겼다. 이중 아주 특이한 CCTV관제사 자격증이란 것이 있다. 큰 장점은 다양한 업종에서 종사할 수 있다. 요즘

ansan-survivor.tistory.com

 

반응형
반응형

원(circle)만을 인식시켜주는 프로그래밍이다.

사용하기전 필요 라이브러리는 cv2와 numpy이다.

라이브버리 설치 방법은 아래 참조

ansan-survivor.tistory.com/308

 

[Python OpenCV] 파이썬 바코드(barcode), QR코드 인식 프로그램 코드

먼저 바코드를 인식하는 open source 라이브러리를 제공해주는데, 그 라이브러리를 pip을 이용해 다운로드 한다. 윈도우의 cmd 창을 이용해서 다운받아본다. 총 3개의 라이브러리가 필요하다. 1. openCV

ansan-survivor.tistory.com

동일한 디렉터리에 circle2.jpg 라는 원형을 갖고있는 이미지에서 원만 추출한다.

'''

made by 안산드레이아스
https://ansan-survivor.tistory.com/

'''

import cv2
import numpy as np

def houghCircle():
    # 원이 있는 이미지를 올림.
    img1 = cv2.imread('circle2.jpg')
    img2 = img1.copy()

    # 0~9까지 가우시안 필터로 흐리게 만들어 조절함.
    img2 = cv2.GaussianBlur(img2, (9, 9), 0)
    # 그레이 이미지로 바꿔서 실행해야함.
    imgray = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)

    # 원본과 비율 / 찾은 원들간의 최소 중심거리 / param1, param2를 조절해 원을 찾음
    circles = cv2.HoughCircles(imgray, cv2.HOUGH_GRADIENT, 1, 10, param1=60, param2=50, minRadius=0, maxRadius=0)

    if circles is not None:
        circles = np.uint16(np.around(circles))

        print(circles)

        for i in circles[0, :]:
            cv2.circle(img1, (i[0], i[1]), i[2], (255, 255, 0), 2)

        cv2.imshow('ori',img2)
        cv2.imshow('HoughCircle', img1)


        cv2.waitKey(0)
        cv2.destroyAllWindows()
    else:
        print('원을 찾을 수 없음')

houghCircle()

(테스트)

원본 이미지 circle2.jpg

파이썬 코드 돌린 후

원형을 탐지하여 하늘색으로 표시한다.

 

 

반응형
반응형

이전 포스팅과 마찬가지로 cv2 라이브러리와가 필요하다.

라이브러리 설치 방법은 아래 참고.

ansan-survivor.tistory.com/308

 

[Python OpenCV] 파이썬 바코드(barcode), QR코드 인식 프로그램 코드

먼저 바코드를 인식하는 open source 라이브러리를 제공해주는데, 그 라이브러리를 pip을 이용해 다운로드 한다. 윈도우의 cmd 창을 이용해서 다운받아본다. 총 3개의 라이브러리가 필요하다. 1. openCV

ansan-survivor.tistory.com

 

이 코드는 어떤 이미지가 흐릿할때 색상들을 강조시켜 선명하게 보이게 하는 코드이다.

동일 디렉터리에 name.png 라는 파일이 있다고 가정하면, 이 코드가 시행되고나서 그 파일의 색상들이 강조된다.

import cv2

'''
    함수) 이미지를 더 선명하게 Contrast(대조) 기법을 적용시킴.
        param : 컬러 이미지
        return : 대조된 이미지
'''


def img_Contrast(img):
    # -----Converting image to LAB Color model-----------------------------------
    lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)

    # -----Splitting the LAB image to different channels-------------------------
    l, a, b = cv2.split(lab)

    # -----Applying CLAHE to L-channel-------------------------------------------
    clahe = cv2.createCLAHE(clipLimit=3.0, tileGridSize=(8, 8))
    cl = clahe.apply(l)

    # -----Merge the CLAHE enhanced L-channel with the a and b channel-----------
    limg = cv2.merge((cl, a, b))

    # -----Converting image from LAB Color model to RGB model--------------------
    final = cv2.cvtColor(limg, cv2.COLOR_LAB2BGR)

    return final


img = cv2.imread('name.png')
img = img_Contrast(img)

cv2.imshow('a', img)
cv2.waitKey(0)

 

반응형

 

(테스트) 출처 이미지: www.canstockphoto.co.kr/%EB%82%98%EB%AC%B4-%ED%9D%90%EB%A6%BF%ED%95%9C-%EC%95%84%EC%B9%A8-%EA%B0%80%EC%9D%84-%ED%96%87%EB%B9%9B-%EC%86%8C%EB%82%98%EB%AC%B4-%EC%88%B2-64441841.html

파이썬 적용 전 이미지

파이썬 코드 구동

파이썬 적용 후 이미지

반응형
반응형

두개의 이미지 파일을 하나의 이미지로 합치는 파이썬 코드이다.

 

'''
    참고 링크: https://copycoding.tistory.com/159
'''

import cv2
import numpy as np

# 사이즈 조절 W, H
size = (1280, 960)

# 좌우 이미지 불러오기
leftimg = cv2.imread('1.bmp')
rightimg = cv2.imread('2.bmp')

# 사이즈 조정
leftimg = cv2.resize(leftimg, size)
rightimg = cv2.resize(rightimg, size)

# 이미지 좌우 합치기
add_img = np.hstack((leftimg, rightimg))

cv2.imshow('leftimg', leftimg)
cv2.imshow('rightimg', rightimg)
cv2.imshow('add_img', add_img)

cv2.waitKey(0)

참고한 블로그는 아래 링크

https://copycoding.tistory.com/159

 

OpenCV 이미지 붙이기

두개의 이미지를 옆에 또는 아래쪽에 붙이는 기능 입니다. 단순한 기능이라 자세한 설명은 필요가 없을 것 같고 주의 사항으로는 가로로 붙이는 경우 높이가 같아야 하고 세로로 붙이는 경우는

copycoding.tistory.com

 

 

반응형
반응형

 

 

먼저 바코드를 인식하는 open source 라이브러리를 제공해주는데, 그 라이브러리를 pip을 이용해 다운로드 한다.

윈도우의 cmd 창을 이용해서 다운받아본다.

 

총 3개의 라이브러리가 필요하다.

1. openCV (영상인식 라이브러리)

pip install opencv-python

2. numpy (연산 처리 라이브러리)

pip install numpy

위에 opencv를 받을 때 저절로 같이 설치 되었다.

3. pyzbar (바코드 인식 관련 라이브러리)

pip install pyzbar

 

반응형

 

자 이제 필요한 모든 라이브러리를 받았으니 아래와 같이 코드를 동작시켜본다.

'''

made by 안산드레이아스
https://ansan-survivor.tistory.com/

'''

# Python Version 3.7.1

import pyzbar.pyzbar as pyzbar  # pip install pyzbar
import numpy as np              # pip install numpy
import cv2                      # pip install opencv-python

# 바코드 탐지하는 엔진 (바코드 및 QR코드 탐지)
def decode(im):
    # Find barcodes and QR codes
    decodedObjects = pyzbar.decode(im)

    # Print results
    for obj in decodedObjects:
        print('Type : ', obj.type)
        print('Data : ', obj.data, '\n')

    return decodedObjects


# Display barcode and QR code location
def display(im, decodedObjects):
    # Loop over all decoded objects
    for decodedObject in decodedObjects:
        points = decodedObject.polygon

        # If the points do not form a quad, find convex hull
        if len(points) > 4:
            hull = cv2.convexHull(np.array([point for point in points], dtype=np.float32))
            hull = list(map(tuple, np.squeeze(hull)))
        else:
            hull = points;

        # Number of points in the convex hull
        n = len(hull)

        # Draw the convext hull
        for j in range(0, n):
            cv2.line(im, hull[j], hull[(j + 1) % n], (255, 0, 0), 3)

    # Display results
    cv2.imshow("Results", im);
    cv2.waitKey(0);

# 파일명 zbar.jpg의 이미지에서 바코드를 탐지하면 해당 코드를 리턴
# Main
if __name__ == '__main__':
    # Read image
    im = cv2.imread('zbar.jpg')

    decodedObjects = decode(im)
    display(im, decodedObjects)

 

이미지 파일 zbar.jpg는 현재 파이썬 파일과 동일 경로에 있어야 한다. (이부분은 절대경로로 수정가능)

zbar.jpg 의 이미지는 아래와 같다. (파일도 업로드)

zbar.jpg
0.37MB

이 이미지파일에 저 파이썬 코드를 돌려본다.

 

*결과

해당 바코드를 탐지해서 숫자를 리턴하고 보여준다.

그리고 어디부분을 인식했는지 파랑색 사각박스로 보여준다.

QR코드도 인식된다. 어떤 타입인지 함께 리턴된다.

반응형
반응형

 

파이참 단축키.pdf
0.21MB

반응형
반응형

해당작업은, 파이썬 3.x버전과 파이참을 이용하여 작성했다. (아래 참고)

https://ansan-survivor.tistory.com/134

 

Pycharm(파이참)을 이용하여 Python 개발환경 구축하기

파이참은 파이썬 개발을 편리하게 하는 많은 기능을 제공하는 툴이다. https://www.jetbrains.com/pycharm/download/#section=windows Download PyCharm: Python IDE for Professional Developers by JetBrains Do..

ansan-survivor.tistory.com

 

엑셀을 사용하기 위해서는 'openpyxl' 이라는 라이브러리가 필요하다.

고로 먼저 아래와 같이 pip 명령을 이용해 다운한다.

 

* 기본 설정

 

1.

명령 프롬프트를 실행한다.

  (윈도우10에서) Ctrl + S  => cmd 입력

 

2.

  >pip install openpyxl==2.6.2 를 입력한다.

그러면 import openpyxl 을 줄에 넣을 때, 빨간줄이 생기지 않는다. (파이참에서)

* 엑셀 생성하기

먼저 아래와 같은 엑셀을 만들 것이다.

아래 소스코드를 실행 시키면 위와 같은 엑셀이 만들어진다.

'''

made by 안산드레이아스
https://ansan-survivor.tistory.com/

설치파일
pip install openpyxl
'''


import openpyxl # pip install openpyxl==2.6.2

'''
	엑셀 파일 쓰기.
'''
# 파일 쓰기 위한 객체 생성.
write_wb = openpyxl.Workbook()
write_ws = write_wb.active

# (col, row 인자값) 에 입력
write_ws = write_wb.active
write_ws['A1'] = '수량'
write_ws['B1'] = '가격'
write_ws['C1'] = '금액'

# 행(Row) 방향로 추가, 줄이 바뀌면 열(column) 방향으로 아래로 내려감.
write_ws.append([25, 5000, 125000])
write_ws.append([30, 5500, 60000]) 		
write_ws.append([35, 8000, 9000])

for i in range(5):						# for문으로 만들어보기
	write_ws.append([i+1, i+2, i+3])


# 셀 단위로 추가 col2, row5에 '셀추가'를 입력. (특정cell 지정하여 넣기)
write_ws.cell(5, 5, '셀추가')

# 편집된 엑셀파일을 저장.write_wb.save('./test.xlsx')
'''
	엑셀 파일 읽기.
'''
# 파일 쓰기 위한 객체 생성.
load_wb = openpyxl.load_workbook("./test.xlsx", data_only=True)

# sheet 이름 불러오기
load_ws = load_wb['Sheet']

# 셀주소값에 접근 후 출력
print(load_ws['A1'].value)

# 셀좌표값에 접근 후 출력
print(load_ws.cell(2,2).value)

# 셀 범위 지정하여 차례대로 출력
get_cells = load_ws['A1':'C3']
for row in get_cells:
	for cell in row:
    	print(cell.value)
        
# 모든 행과 열을 출력
print("\n=== 모든 행과 열 출력 ===")
all_values = []
for row in load_ws.rows:
	row_value = []
    for cell in row:
    	row_value.append(cell.value)
	all_values.append(row_value)

print(all_values)

print문은 값을 확인해보려고 넣은것이다.

*(참고) 엑셀파일 생성위치는 현재 이 프로젝트가 위치한곳 ( ./ ) 으로 되어있다.

만약 저걸 C:/test.xlsx 으로 바꾸면 C: 드라이브에 생길 것이다. 본인이 원하는 곳으로 설정

반응형
반응형

파이참은 파이썬 개발을 편리하게 하는 많은 기능을 제공하는 툴이다.

https://www.jetbrains.com/pycharm/download/#section=windows

 

Download PyCharm: Python IDE for Professional Developers by JetBrains

Download the latest version of PyCharm for Windows, macOS or Linux.

www.jetbrains.com

이곳에서 다운로드 할 수 있고, 무료버전으로 받아도 왠만한 기능은 다 지원한다.

오른쪽( 무료 다운로드 )

파이참은 파이썬을 쉽게 쓸 수 있도록 도와주는 툴이지, 파이썬은 아니다.

파이썬 = 개발언어(C언어, 자바 같은..),   파이참은 개발환경 (비쥬얼스튜디오 같은..)

 

파이썬을 사용하려면 파이썬 인터프리터를 다운로드 해야 한다.

https://www.python.org/downloads/

 

Download Python

The official home of the Python Programming Language

www.python.org

이곳에서 다운로드 하는데, 버전에 맞게 설치한다.

참고로 2.x 버전과 3.x 버전은 호환이 안된다.  그러나 2.x 버전은 서비스를 종료했고, 앞으로 3.x 버전으로 발전될 것이니,

3.x 버전을 다운로드 하는걸 추천한다.

 

파이참을 다 설치하고,, 딱 아래와 같이 설정만 하면 된다.

반응형

 

파이썬 실행 후 설정 창을 진행하며 아래와 같은 창이 뜬다.

여기서 아래와 같이 설정한다. 그래야 pip로 받은 파이썬 라이브러리를 제대로 불러온다.

 

이 외, 가상화 개발환경 구축방법이 있는데, 그게 바로 Virtualenv Enviroment 메뉴이다.

사용법은 검색해보면 다양히 있다.

 

또 2.x 와 3.x 모든 라이브러리를 통합시키는 아나콘다라는 것도 있다.

 

입맛에 맞게 설정한다.

 

새 파이썬 프로젝트 만들기

 

 

파이참을 한글화 하려면 아래를 참고.

https://ansan-survivor.tistory.com/1910

 

[Pycharm] 파이참 언어 한글 설정. (파이참 한글화 플러그인 설치)

파이썬 코드 작성시 유용한 파이참. 개발환경 구축은 아래를 참고. https://ansan-survivor.tistory.com/134 Pycharm(파이참)을 이용하여 Python 개발환경 구축하기 파이참은 파이썬 개발을 편리하게 하는 많은

ansan-survivor.tistory.com

 

반응형
1···34567

+ Recent posts