[파이썬] opencv-python 이미지에서 텍스트 추출하기 (OCR)

OpenCV-Python OCR

이미지에서 텍스트 추출은 문자 인식 (Optical Character Recognition, OCR) 기술을 사용하여 컴퓨터 비전 분야에서 널리 사용되는 작업입니다. OpenCV-Python은 이미지 처리 및 컴퓨터 비전 작업을 위한 강력한 라이브러리입니다. 이 블로그 포스트에서는 OpenCV-Python을 사용하여 이미지에서 텍스트를 추출하는 방법을 알아보겠습니다.

Step 1: 이미지 가져오기

먼저, OpenCV-Python을 설치하고 이미지를 가져와야 합니다. 아래의 코드가 이를 수행합니다.

import cv2

# 이미지 파일을 읽어옵니다.
image = cv2.imread("image.jpg")

이미지 파일의 경로를 “image.jpg”로 바꾸고, image 변수에 이미지 객체를 저장합니다.

Step 2: 이미지 전처리

OCR 작업을 진행하기 전에 이미지를 전처리해야 합니다. 전처리는 이미지를 이진화하거나 잡음을 제거하는 등의 과정을 포함할 수 있습니다. 아래의 코드는 전처리를 수행하는 예시입니다.

import cv2
import numpy as np

# 이미지를 그레이스케일로 변환합니다.
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 이미지를 이진화합니다.
_, binary_image = cv2.threshold(gray_image, 150, 255, cv2.THRESH_BINARY)

# 이미지에서 잡음을 제거합니다.
denoised_image = cv2.fastNlMeansDenoising(binary_image, None, 10, 7, 21)

위의 코드에서 이미지는 그레이스케일로 변환되고, 임계값 150을 기준으로 이진화됩니다. 그런 다음 fastNlMeansDenoising 함수를 사용하여 잡음을 제거합니다. 전처리 단계는 텍스트 추출의 성능에 많은 영향을 미치므로 조절할 수 있습니다.

Step 3: 텍스트 추출하기

이제 전처리된 이미지에서 텍스트를 추출하는 단계입니다. OpenCV-Python은 이미지에서 텍스트를 감지하고 추출하는 데 사용할 수 있는 다양한 기능을 제공합니다. 아래의 코드는 텍스트 추출을 수행하는 기본 예시입니다.

import cv2
import pytesseract

# 이미지에서 텍스트를 추출합니다.
extracted_text = pytesseract.image_to_string(denoised_image, lang="eng")

# 추출된 텍스트를 출력합니다.
print(extracted_text)

위의 코드에서 pytesseract.image_to_string 함수를 사용하여 이미지에서 텍스트를 추출합니다. lang 매개변수를 통해 텍스트의 언어를 지정할 수 있습니다. 추출된 텍스트는 문자열로 반환되며, print 함수를 사용하여 출력할 수 있습니다.

Step 4: 결과 확인

위의 코드를 실행하면 이미지에서 추출된 텍스트가 콘솔에 출력됩니다. 텍스트 추출의 정확도를 더욱 높이기 위해 전처리 과정을 조정하거나 다른 기술 및 라이브러리와 결합할 수 있습니다. 이미지의 텍스트 추출 결과를 확인하고 필요에 따라 추가 조치를 취하십시오.

이제 OpenCV-Python을 사용하여 이미지에서 텍스트를 추출하는 방법을 알게 되었습니다. OCR은 자동화, 문서 분류, 기계 학습 등 다양한 분야에서 유용하게 활용될 수 있습니다. OpenCV-Python의 다른 기능과 함께 OCR을 조합하여 더욱 강력한 애플리케이션을 개발할 수 있습니다.

import cv2
import pytesseract

# 이미지 파일을 읽어옵니다.
image = cv2.imread("image.jpg")

# 이미지를 그레이스케일로 변환합니다.
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 이미지를 이진화합니다.
_, binary_image = cv2.threshold(gray_image, 150, 255, cv2.THRESH_BINARY)

# 이미지에서 잡음을 제거합니다.
denoised_image = cv2.fastNlMeansDenoising(binary_image, None, 10, 7, 21)

# 이미지에서 텍스트를 추출합니다.
extracted_text = pytesseract.image_to_string(denoised_image, lang="eng")

# 추출된 텍스트를 출력합니다.
print(extracted_text)

이제 위의 코드를 사용하여 OpenCV-Python에서 텍스트 추출을 시도할 수 있습니다. 문서에서 텍스트를 추출하는 데 필요한 전처리 단계 및 기타 매개변수를 조정하여 최상의 결과를 얻을 수 있습니다. OCR 기술은 다양한 분야에서 이용되며 텍스트를 추출하거나 분석하는 데 매우 유용합니다. OpenCV-Python은 이를 쉽고 효율적으로 수행하는 데 도움을 줄 수 있는 강력한 라이브러리입니다.