PaddleOCR: 문서와 이미지를 LLM용 구조화 데이터로 바꾸는 OCR 툴킷

PaddleOCR 소개

PaddleOCR은 PDF와 이미지 문서를 LLM이 곧바로 사용할 수 있는 구조화된 데이터(JSON, Markdown)로 변환하는 OCR 툴킷입니다. 단순히 이미지에서 글자를 뽑아내는 데서 그치지 않고, 표와 수식, 도장, 차트 같은 복잡한 요소까지 인식해 문서의 구조를 보존한 형태로 출력하는 데 초점을 맞춥니다. 본 게시물에서는 PaddleOCR이 텍스트 인식과 문서 파싱을 어떻게 나누어 다루는지, 그리고 어떤 모델과 사용법을 제공하는지 정리합니다.

PaddleOCR은 크게 두 갈래의 문제를 함께 풉니다. 하나는 거리 간판, 신분증, 손글씨처럼 다양한 환경의 글자를 빠르게 읽어내는 장면 텍스트 인식(Scene OCR)이고, 다른 하나는 레이아웃이 복잡한 문서 한 페이지를 통째로 해석해 Markdown이나 JSON으로 옮기는 문서 파싱(Document Parsing)입니다. 앞쪽은 PP-OCR 계열 모델이, 뒤쪽은 비전-언어 모델(Vision-Language Model)인 PaddleOCR-VL과 레이아웃 분석 파이프라인 PP-StructureV3가 담당합니다.

이 프로젝트는 100개 이상의 언어를 지원하며, 한국어 인식 모델도 별도로 제공합니다. 모델은 엣지 기기용 경량 버전부터 서버용 고정밀 버전까지 단계별로 나뉘어 있고, PaddlePaddle 프레임워크 위에서 NVIDIA GPU, Intel CPU, 쿤룬신(Kunlunxin) XPU, Ascend 등 여러 하드웨어 백엔드로 배포할 수 있습니다. Dify, RAGFlow, Cherry Studio, MinerU 같은 RAG·문서 처리 도구들이 PaddleOCR을 기반 OCR 엔진으로 채택하고 있습니다.

PaddleOCR의 전체 구조

PaddleOCR은 응용(Apps), 모델 저장소(Model Zoo), 도구(Toolkit)의 세 층으로 구성됩니다. 모델 저장소는 다시 장면 텍스트 인식을 담당하는 OCR 계열(PP-OCRv3~v6), 문서를 Markdown/JSON으로 변환하는 문서 파싱 계열(PaddleOCR-VL, PP-StructureV3), 그리고 문서 번역·질의응답 같은 문서 이해 계열로 나뉩니다.

도구 층에서는 학습(Train), 추론(Inference), 고성능 서빙(High Performance Serving)을 명령 몇 줄로 실행할 수 있고, LLM이 호출할 수 있는 MCP 서버(MCP Server) 형태의 연동도 지원합니다. 이 구조 덕분에 재무 보고서 분석, 시험 채점, 계약서 검토, 증명서 정보 추출 같은 실제 응용을 같은 토대 위에서 구성할 수 있습니다.

PaddleOCR의 핵심 모델

문서 파싱의 중심에는 0.9B 규모의 비전-언어 모델 PaddleOCR-VL-1.6 이 있습니다. NaViT 스타일의 동적 해상도 비전 인코더와 ERNIE-4.5-0.3B 언어 모델을 결합한 경량 구조로, 문서 파싱 벤치마크인 OmniDocBench v1.6에서 96.3% 이상의 정확도를 기록했다고 보고합니다. 텍스트뿐 아니라 표, 수식, 차트 인식과 고문서·희귀 문자 처리까지 다루는 것이 특징입니다.

장면 텍스트 인식 쪽은 새로 설계된 PPLCNetV4 백본 기반의 PP-OCRv6 가 맡습니다. 하나의 통합 모델로 중국어, 영어, 일본어와 46개 라틴 문자 계열 언어를 포함한 50개 언어를 별도 모델 교체 없이 인식하며, 저자들은 PP-OCRv5_server 대비 검출 +4.6%, 인식 +5.1%의 정확도 향상과 함께 CPU 추론에서 5.2배 속도 향상을 측정했다고 밝힙니다. PP-OCRv6는 엣지·모바일·서버 시나리오에 맞춰 tiny(1.5M), small(7.7M), medium(34.5M) 세 등급으로 제공됩니다.

한국어 사용자에게는 별도의 한국어 인식 모델 korean_PP-OCRv5_mobile_rec 가 제공된다는 점도 참고할 만합니다. 공식 문서의 다국어 모델 표에 따르면 이 모델은 한국어와 영어, 숫자 인식을 지원하며 14MB 크기의 경량 모델로 88.0%의 평균 정확도를 보입니다.

PaddleOCR 설치와 사용법

PaddleOCR은 PyPI 패키지로 설치합니다. 텍스트 인식만 필요하면 기본 패키지를, 문서 파싱을 포함한 전체 기능이 필요하면 [all] 옵션을 사용합니다.

# 기본 패키지 (OCR만)
pip install paddleocr

# 전체 패키지 (모든 기능)
pip install "paddleocr[all]"

명령줄에서는 이미지 경로를 넘겨 바로 실행할 수 있습니다.

paddleocr ocr -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png \
    --use_doc_orientation_classify False \
    --use_doc_unwarping False \
    --use_textline_orientation False \
    --save_path ./output \
    --device gpu:0

파이썬에서는 PaddleOCR 객체를 만들어 predict() 로 추론하고, 결과를 이미지와 JSON으로 저장합니다. 아래 예시는 기본값인 PP-OCRv6 모델을 사용합니다.

from paddleocr import PaddleOCR

ocr = PaddleOCR(
    use_doc_orientation_classify=False,  # 문서 방향 분류 비활성화
    use_doc_unwarping=False,             # 문서 보정 비활성화
    use_textline_orientation=False,      # 텍스트 라인 방향 분류 비활성화
)
result = ocr.predict("./general_ocr_002.png")
for res in result:
    res.print()
    res.save_to_img("output")
    res.save_to_json("output")

lang="en", ocr_version="PP-OCRv5" 같은 인자로 언어와 모델 버전을 바꿀 수 있고, OpenVINO·ONNX Runtime·TensorRT 등 추론 엔진을 선택하거나 paddleocr ocr 명령을 통해 C++·Java 등 다른 언어에서 서빙으로 연동하는 방법은 PaddleOCR 공식 문서에 정리되어 있습니다. 모델 목록과 벤치마크 수치는 저장소의 docs/ 디렉토리에서도 확인할 수 있습니다.

PaddleOCR의 라이선스

PaddleOCR은 Apache 2.0 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

:house: PaddleOCR 공식 웹사이트

:books: PaddleOCR 공식 문서

:github: PaddleOCR GitHub 저장소

:hugs: PaddleOCR-VL 모델 (Hugging Face)

더 읽어보기


이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다!
텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. :smiley:

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: