PaddleOCR: 오픈소스 OCR 프레임워크 활용

BrakieBrakie
28 Mar 2025

PaddleOCR: 오픈소스 OCR 프레임워크

PaddleOCR은 Baidu가 개발한 OCR(광학 문자 인식) 프레임워크로, 다양한 언어를 지원하고 높은 인식 정확도를 자랑하는 오픈소스 프로젝트입니다. 특히 딥러닝 기반의 문자 인식을 필요로 하는 다양한 분야에서 활용될 수 있으며, Python을 이용해 간단하게 적용할 수 있습니다.
이 글에서는 PaddleOCR의 특징, 설치 방법, 그리고 활용 방안에 대해 자세히 알아보겠습니다.

PaddleOCR의 특징

PaddleOCR은 기존의 OCR 솔루션보다 빠르고 정확한 문자 인식 성능을 제공합니다. 주요 특징은 다음과 같습니다.
  1. 다국어 지원
    • 중국어, 영어, 한국어, 일본어 등 80개 이상의 언어를 지원
    • 다국어 환경에서도 높은 인식률을 제공

  2. 경량화 모델 지원
    • MobileNetV3 기반의 초경량 모델 제공
    • 모바일 및 임베디드 환경에서도 동작 가능

  3. End-to-End OCR 파이프라인
    • 텍스트 검출(Text Detection) → 문자 인식(Text Recognition) → 방향 보정(Text Angle Classification) 등 전체 OCR 과정 지원
    • 별도의 전처리 과정 없이 OCR 수행 가능

  4. 딥러닝 최적화 모델
    • PaddlePaddle 딥러닝 프레임워크 기반으로 설계
    • CNN, RNN, Transformer 등을 활용하여 높은 정확도 제공

  5. 손글씨 및 이미지 내 텍스트 인식 가능
    • 인쇄된 문서뿐만 아니라 손글씨, 간판, 차량 번호판, 영수증 등에서도 뛰어난 인식률 발휘


image description

PaddleOCR 설치 방법

PaddleOCR을 사용하려면 먼저 Python 환경을 준비해야 합니다.

1. PaddleOCR 및 PaddlePaddle 설치

아래 명령어를 실행하면 PaddleOCR과 PaddlePaddle이 자동으로 설치됩니다.
pip install paddlepaddle paddleocr
혹은 GPU 가속을 활용하려면 다음과 같이 설치합니다.
pip install paddlepaddle-gpu paddleocr

2. 설치 확인

설치가 완료되었는지 확인하기 위해 다음 코드를 실행해봅니다.
from paddleocr import PaddleOCR

ocr = PaddleOCR(lang='korean')
result = ocr.ocr('test_image.jpg', cls=True)

for line in result:
    print(line)
위 코드에서 "test_image.jpg"에 해당하는 이미지를 OCR로 분석하면, 해당 이미지 속 텍스트가 출력됩니다.

3. Bounding Box 그리기


PaddleOCR에서 인식된 텍스트의 Bounding Box(경계 상자)를 이미지 위에 표시하는 코드를 추가하려면, cv2(OpenCV)를 활용하면 됩니다.
아래는 OCR 결과를 시각적으로 확인할 수 있도록 Bounding Box를 이미지에 그리는 코드입니다.

📌 코드: Bounding Box 그리기

import cv2
import numpy as np
from paddleocr import PaddleOCR
from PIL import Image, ImageDraw, ImageFont

# PaddleOCR 객체 생성
ocr = PaddleOCR(use_angle_cls=True, lang='korean')  # 한국어 인식

# 이미지 경로
image_path = './data/1.jpg'

# OCR 수행
result = ocr.ocr(image_path, cls=True)

# OpenCV로 이미지 로드 및 RGB 변환
image = cv2.imread(image_path)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# PIL Image 변환
image_pil = Image.fromarray(image)
draw = ImageDraw.Draw(image_pil)

# 한글 폰트 설정 (Windows 및 Mac/Linux 경로 다름)
font_path = "malgun.ttf"  # 윈도우: 'malgun.ttf', 맥: 'AppleGothic.ttf', 리눅스: '/usr/share/fonts/truetype/nanum/NanumGothic.ttf'
font = ImageFont.truetype(font_path, 12)  # 폰트 크기 설정

# Bounding Box 및 텍스트 표시
for line in result:
    for word_info in line:
        bbox = np.array(word_info[0], dtype=np.int32)
        text, score = word_info[1]

        # OpenCV로 Bounding Box 그리기
        draw.polygon([tuple(point) for point in bbox], outline="red", width=3)

        # PIL을 사용한 한글 텍스트 출력
        x, y = bbox[0]
        draw.text((x, y - 10), text, font=font, fill=(0, 255, 0))  # 초록색 텍스트

# 결과 이미지 출력
image_pil.show()

# 저장 (필요 시)
image_pil.save('output_with_korean_text.jpg')

PaddleOCR 활용 방안

PaddleOCR은 다양한 분야에서 활용될 수 있습니다. 특히 이미지 내 문자 인식이 필요한 곳에서 강력한 성능을 발휘합니다.
image description

1. 문서 스캔 및 디지털화

  • 종이 문서를 PDF 또는 텍스트 파일로 변환
  • 영수증, 계약서, 청구서 등의 문서를 자동 디지털화

2. 자동화된 데이터 입력

  • 설문지나 양식의 수기 데이터를 자동 입력
  • OCR과 NLP 기술을 결합하여 키워드 추출 및 데이터 분석 가능

3. AI 기반 검색 시스템

  • OCR을 활용하여 이미지 내 텍스트 검색 가능
  • 예: 도서관의 책 표지에서 제목을 인식하여 자동 검색

4. 차량 번호판 인식

  • 교통 단속 카메라에서 차량 번호판을 자동 인식하여 데이터베이스에 저장
  • 주차장 출입 시스템에 적용 가능

5. 이미지 내 한글 텍스트 분석

  • 한글 간판, 광고 문구, 길거리 표지판 등에서 한글 텍스트를 분석하여 번역 서비스 제공

마무리

PaddleOCR은 강력한 OCR 기능을 제공하면서도 설치가 간편하고, 다양한 환경에서 활용 가능한 점이 특징입니다. 특히 다국어 지원, 경량화 모델 제공, 높은 정확도 등으로 인해 AI 기반의 문자 인식 프로젝트에서 매우 유용하게 활용될 수 있습니다.

OCR 기술이 필요한 프로젝트를 진행하고 있다면, PaddleOCR을 활용하여 높은 정확도의 문자 인식을 경험해보세요! 🚀
위에서 설명한 코드는 github에 확인 가능합니다. github
widestack

참고자료

Buy Me A Coffee

Similar Posts