[파이썬] 컴퓨터 비전을 활용한 문서 스캐닝과 OCR

이 글에서는 컴퓨터 비전 기술을 활용하여 문서를 스캐닝하고 광학 문자 인식(OCR)을 수행하는 방법에 대해 알아보겠습니다. Python을 사용하여 간단하면서도 강력한 도구들을 사용하여 이 작업들을 수행할 수 있습니다.

문서 스캐닝

문서 스캐닝은 실제 문서를 디지털 형식으로 변환하는 과정을 말합니다. 컴퓨터 비전 기술을 사용하여 문서 스캐닝을 수행할 수 있습니다. Python에는 OpenCV와 같은 라이브러리를 사용하여 이미지 처리 및 컴퓨터 비전 작업을 수행할 수 있습니다.

아래는 Python 및 OpenCV를 사용하여 문서 스캐닝을 수행하는 예제 코드입니다:

import cv2
from imutils.perspective import four_point_transform

# 이미지 불러오기
image = cv2.imread("document.jpg")

# 그레이스케일로 변환
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 가우시안 블러 적용
blurred = cv2.GaussianBlur(gray, (5, 5), 0)

# Canny 엣지 검출
edged = cv2.Canny(blurred, 75, 200)

# 컨투어 찾기
contours, _ = cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 컨투어 중에서 가장 큰 컨투어 추출
max_contour = max(contours, key=cv2.contourArea)

# 컨투어 근사화
approx = cv2.approxPolyDP(max_contour, 0.02 * cv2.arcLength(max_contour, True), True)

# 문서 영역 추출
document = four_point_transform(image, approx.reshape(4, 2))

# 결과 출력
cv2.imshow("Scanned Document", document)
cv2.waitKey(0)
cv2.destroyAllWindows()

위 코드는 문서 스캐닝을 위해 이미지를 불러오고, 전처리 작업을 수행한 후 가장 큰 컨투어를 찾아서 문서의 영역을 추출하는 과정을 보여줍니다. 추출된 문서 영역은 “Scanned Document”라는 창에 출력됩니다.

광학 문자 인식 (OCR)

문서 스캐닝 후에는 추출된 문서 영역에서 텍스트를 인식하는 작업이 필요합니다. 이를 광학 문자 인식(OCR)이라고 합니다. Python에는 Tesseract OCR과 같은 라이브러리를 사용하여 OCR 작업을 수행할 수 있습니다.

아래는 Python과 Tesseract OCR을 사용하여 이미지에서 텍스트를 인식하는 예제 코드입니다:

import cv2
import pytesseract

# 이미지 불러오기
image = cv2.imread("scanned_document.jpg")

# 그레이스케일로 변환
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Tesseract OCR을 사용하여 텍스트 추출
text = pytesseract.image_to_string(gray, config='--psm 6')

# 결과 출력
print(text)

위 코드에서는 추출된 문서 영역을 불러오고, 그레이스케일로 변환한 후 Tesseract OCR을 사용하여 텍스트를 추출합니다. 추출된 텍스트는 화면에 출력됩니다.

컴퓨터 비전을 활용한 문서 스캐닝과 OCR은 Python을 사용하여 간단하게 구현할 수 있습니다. 이를 통해 효율적으로 문서를 디지털 형태로 변환하고 텍스트를 추출할 수 있습니다.