본문 바로가기
CV(Computer Vision)

OCR

by 코낄2 2024. 2. 27.

1. OCR( Optical Character Recognition )

광학 문자 인식(OCR)은 광학적 또는 전자적 장치를 사용하여 이미지의 문자를 컴퓨터가 이해할 수 있는 텍스트로 변환하는 프로세스입니다. 이 프로세스는 다음과 같은 주요 단계로 이루어집니다.

  1. 이미지 획득: OCR 프로세스의 첫 번째 단계는 문서나 사진 등의 이미지를 디지털 형식으로 획득하는 것입니다. 이를 위해 스캐너, 디지털 카메라 또는 이미지 스캔 앱과 같은 장치를 사용합니다.
  2. 전처리: 획득된 이미지에는 종종 노이즈, 왜곡, 그림자 또는 회전된 문자와 같은 문제가 있을 수 있습니다. 전처리 과정에서는 이미지를 정제하고 보정하여 후속 단계에서 문자를 올바르게 인식할 수 있도록 합니다.
  3. 문자 인식: 문자 인식 단계에서는 전처리된 이미지에서 문자를 식별하고 텍스트로 변환합니다. 이를 위해 기계 학습 알고리즘, 특히 딥러닝을 기반으로 한 인공 신경망 모델이 일반적으로 사용됩니다. 인식된 문자는 유니코드 또는 ASCII와 같은 문자 인코딩 체계로 표현됩니다.
  4. 후처리: OCR 시스템은 종종 인식된 텍스트에 오류가 발생할 수 있습니다. 후처리 단계에서는 이러한 오류를 교정하고 텍스트의 정확성을 향상시킵니다. 이 과정에는 스펠링 체크, 문맥 정보를 활용한 오류 수정 등이 포함될 수 있습니다.

2. OCR 모델

OCR 기술은 이미지에서 텍스트를 추출하는 중요한 기술입니다. 이를 위해 다양한 모델이 개발되어왔는데, 각 모델은 특징과 장단점을 가지고 있습니다.

  1. Tesseract OCR: Google에서 개발한 오픈 소스 OCR 엔진으로, Hewlett-Packard에서 초기에 개발되었습니다. 다양한 언어와 플랫폼을 지원하며 지속적인 업데이트가 이루어지고 있습니다. LSTM (Long Short-Term Memory)을 기반으로 한 딥러닝 기술을 사용하여 고품질의 텍스트 인식 성능을 제공합니다. Pre-trained 모델을 제공하며, 필요에 따라 추가적인 학습이 가능합니다. 복잡한 폰트 및 배경에 대해서도 뛰어난 성능을 보입니다.
  2. OpenCV OCR: OpenCV(Open Source Computer Vision Library)는 오픈 소스 컴퓨터 비전 라이브러리로, OCR 기능을 포함하고 있습니다. Tesseract와 연동하여 사용될 수 있습니다. 효율적이고 빠른 이미지 처리 기능을 제공합니다. Tesseract와의 통합을 통해 다양한 언어 및 글꼴을 인식할 수 있습니다. 간단한 API를 통해 사용자가 쉽게 적용할 수 있습니다.
  3. OCRopus: OCRopus는 LSTM 기반의 딥러닝 기술을 사용한 오픈 소스 OCR 시스템입니다. 특히, 고품질의 인쇄물에서 텍스트를 인식하는 데 강점을 보입니다. 딥러닝 기술을 기반으로 하며, 분산 학습과 병렬 처리를 지원합니다. Tesseract와 유사하게 다양한 언어 및 글꼴을 지원합니다. 오픈 소스로 공개되어 있어 커뮤니티의 지속적인 발전과 기능 개선이 가능합니다.
  4. Amazon Textract: Amazon Textract는 아마존 웹 서비스(AWS)에서 제공하는 OCR 서비스로, 클라우드 기반의 OCR 솔루션입니다. 텍스트와 표, 양식 등 다양한 문서 요소를 인식할 수 있는 기능을 제공합니다. 서버리스 아키텍처로 구성되어 있어 인프라 관리의 부담이 적습니다. AWS의 다른 서비스와의 통합을 통해 확장성과 유연성을 제공합니다.
  5. Paddle OCR: Paddle OCR은 Baidu에서 개발한 오픈 소스 OCR 라이브러리로, PaddlePaddle을 기반으로 합니다. 다양한 신경망 구조를 제공하며, 한국어와 중국어를 비롯한 다양한 언어를 지원합니다. 이미지 내의 텍스트 영역을 정확하게 탐지하고, 다양한 폰트와 배경에서도 높은 인식 성능을 보입니다. PaddlePaddle의 강력한 커뮤니티 및 지원을 통해 지속적인 개발과 기능 개선이 이루어지고 있습니다.
  6. Google Cloud Vision API: Google Cloud Vision API는 구글에서 제공하는 클라우드 기반의 비전 API 중 하나로, OCR 기능을 포함하고 있습니다. 구글의 딥러닝 기술을 기반으로 하여 높은 인식 정확도를 제공합니다. 텍스트 감지, 언어 감지, 문자 인식 등 다양한 기능을 제공합니다. 클라우드 기반이므로 확장성이 우수하고, REST API를 통해 쉽게 통합할 수 있습니다.
  7. Naver Clover: Naver Clover는 네이버에서 제공하는 OCR 기반의 서비스로, 한국어 텍스트 인식에 특화되어 있습니다. 한국어 텍스트에 대한 높은 인식 정확도를 보유하고 있습니다. 이미지 내의 텍스트 영역을 정확하게 탐지하며, 다양한 글꼴과 스타일에서도 잘 작동합니다. 네이버의 강력한 인프라와 기술력을 바탕으로 안정적인 서비스를 제공합니다.
  8. EasyOCR: EasyOCR은 파이썬으로 구현된 간단하고 사용하기 쉬운 OCR 라이브러리입니다. 다양한 언어와 글꼴을 지원하며, 사용자가 필요에 따라 쉽게 확장할 수 있습니다. PyTorch를 기반으로 하며, 간단한 API를 제공하여 쉽게 통합할 수 있습니다. 오픈 소스로 공개되어 있어 개발자들의 기여를 통해 계속해서 발전하고 있습니다.

3. Paddle OCR 사용해보기

!pip install paddlepaddle
!pip install paddleocr
from paddleocr import PaddleOCR
import cv2
import matplotlib.pyplot as plt

ocr = PaddleOCR(lang="korean")

img_path = "/content/drive/MyDrive/KDT/KDT-현재 전문가/OCR 과제/image/Perspective/car2.jpeg"

# 이미지 불러오기
image = cv2.imread(img_path)

# OCR 수행
result = ocr.ocr(image, cls=False)

# 이미지를 matplotlib으로 출력
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()

# OCR 결과 출력
for line in result[0]:
    # 좌표 추출
    x1, y1 = map(int, line[0][0])
    x2, y2 = map(int, line[0][1])

    # 텍스트 그리기
    text = line[1][0]
    print(text)
    
print(result)
// [[[[[173.0, 25.0], [342.0, 20.0], [344.0, 125.0], [176.0, 130.0]], 
('전북', 0.9997337460517883)], [[[368.0, 20.0], [526.0, 23.0], [524.0, 131.0], [366.0, 128.0]], 
('96', 0.9997692108154297)], [[[55.0, 152.0], [642.0, 154.0], [641.0, 335.0], [54.0, 332.0]], 
('사5389', 0.9990277290344238)]]]

 

'CV(Computer Vision)' 카테고리의 다른 글

필터링/컨투어링  (0) 2024.02.26
영상의 변환/ 적응형 이진화/ 유사도  (0) 2024.02.25
관심 영역/ 이진화  (0) 2024.02.18
이미지 처리 기법  (0) 2024.02.16
영상처리 기초 : 화소처리  (0) 2024.02.10