← AI Document Processing
📋

01 / 11

개요

아키텍처 및 구현 목표, 프로젝트 전체 구조

ArchitectureGoal
개요환경 구성OCR 파이프라인모델 학습모델 / 데이터 처리LayoutLM 분석성능 관리배포 & 운영PaddleOCR 도입BIO 라벨 & 학습 개선문제 해결

필요 자원

학습 용 인스턴스

GPU 서버 1대

모델 Fine-tuning 및 추가 학습 수행

추론 용 인스턴스

CPU 서버 1대

GPU 불필요, 실시간 추론 서빙

비용 최적화 전략

  • GPU 인스턴스 상시 운영 시 비용 부담 (최소 시간당 약 700원, ml.g4dn.xlarge 기준)
  • 실시간 학습이 필요한 경우 특정 시간대(예: 오후 1~3시)에만 서비스 가동
  • 정기 학습의 경우 하루 1회 또는 주 1회 스케줄링으로 비용 절감

아키텍처

Cloud 환경

AWS SageMaker GPU 서버에서 LayoutLM 학습, checkpoint를 S3에 저장. Label Studio와 EasyOCR Backend는 ECS 컨테이너로 운영.

On-premise 환경

사내 GPU 서버에서 LayoutLM 학습, checkpoint 로컬 저장. Label Studio와 EasyOCR Backend는 동일 서버 또는 별도 서버에서 Docker로 운영.

초기 학습 파이프라인

1

Tesseract / EasyOCR 기반으로 토큰 추출 (Label Studio ML Backend)

2

Label Studio에서 필드별로 파싱하여 학습 데이터 생성

3

LayoutLM에서 학습 진행

4

테스트 데이터 기반 성능 테스트

5

학습된 모델 데이터를 S3에 저장

추가 학습 (재학습) 파이프라인

1

S3로부터 Label Studio에서 사용자가 수정한 추가 데이터 (Tesseract 기반 TOKEN) 불러오기

2

LayoutLM에서 추가 학습 진행

3

테스트 데이터 기반 성능 테스트

4

학습된 모델 데이터를 S3에 저장

추론 + 검수 파이프라인

1

사용자가 PDF 업로드 (S3 직접 업로드 또는 연계 서비스)

2

전처리 진행 (PDF → PNG 변환, 해상도 조정)

3

Tesseract OCR → 토큰 + bbox 추출

4

LayoutLM으로 각 토큰에 INVOICE_NUMBER, CUSTOMER_NAME 등 라벨 예측

5

Label Studio 화면에서 토큰 박스 + LayoutLM 예측 라벨이 미리 표시된 상태로 검수/수정

6

수정된 데이터를 S3로 전달

7

S3에 저장된 데이터를 불러와 LayoutLM 재학습 진행

→ 핵심: OCR 토큰 + LayoutLM 라벨을 한 화면에서 다루는 것이 목표. 사람이 검수/수정한 결과가 다시 학습 데이터로 순환되는 Human-in-the-Loop 구조.

구현 목표

인보이스 타입별 분류

다양한 포맷의 인보이스를 자동으로 타입 분류

재학습 간소화

검수 데이터 기반 재학습 파이프라인 자동화

검증 프로세스

학습 결과에 대한 체계적인 성능 검증 과정

아키텍처 (기술적 관점)

Non-Digital PDFOCR ModelLayoutLM SERLayoutLM REStructured Key-Value Pairs

LayoutLM 핵심 기술 요소

1. 의미론적 텍스트 임베딩

텍스트 임베딩을 사용하여 의미론적 의미를 기반으로 키-값 쌍을 포착. 텍스트의 내용과 맥락을 이해하고 키-값 쌍 내 관계를 인식하는 능력.

비슷한 문맥에서 쓰이는 단어들은 비슷한 방향으로 gradient를 받아 벡터 공간에서 가까운 위치로 수렴. 예: "Invoice No."와 "No. Factura"는 임베딩 공간에서 유사한 위치에 배치됨.

2. 2D 레이아웃 이해

좌표를 기반으로 텍스트 요소의 2D 위치를 파악하여 키-값 쌍을 추출. 보통 키와 해당 값은 문서 레이아웃 내에서 상대적으로 가까운 거리에 위치하기 때문에 공간 정보가 핵심.

3. 시각적 특징

글꼴 크기, 굵기 등 시각적 특징을 통합하여 키-값 쌍 예측 정확도 향상.

LayoutLM SER & RE

SER (Semantic Entity Recognition)

BIOES 레이블 체계를 사용하여 각 토큰에 의미 태그를 부여. B(Beginning), I(Inside), O(Outside), E(End), S(Start) 레이블로 엔티티 경계를 식별. ANSWER, QUESTION, HEADER 등의 엔티티 타입 분류.

RE (Relation Extraction)

SER에서 생성된 예측을 기반으로 키-값 관계를 추출. 키-값 쌍이 유효하면 1, 아니면 0을 출력하는 분류기 역할. 테이블 구조, key-value가 멀리 떨어진 경우 등 복잡한 레이아웃에서 필수.

⚠ LayoutLM v2, v3 / LayoutXLM의 RE 모델은 상업적 사용 불가 — 라이선스 제약 고려 필요

Document AI

Step Guide

운영 환경

서버

  • OS: Rocky Linux 8.10
  • CPU: Intel Xeon E5-2630 v3 (8코어 × 2소켓, 물리 16코어 / 논리 32코어)
  • 메모리: 125GB
  • 용도: 테스트 및 PoC 환경

사용 도구

LayoutLM (AI 모델)

문서 이미지(PDF → PNG)와 OCR 텍스트 정보를 함께 입력받아 문서 내 주요 필드(Invoice No, Date, Amount 등)를 자동으로 분류 및 추출하는 AI 모델.

1

Tesseract OCR을 통해 문서 이미지에서 텍스트와 Bounding Box 정보를 추출

2

해당 정보를 Label Studio Task 데이터로 저장

3

LayoutLM 모델이 OCR 결과를 기반으로 필드 라벨을 예측

4

예측 결과를 Label Studio Prediction 형태로 등록

→ 목적: 사람이 수행하던 문서 판독 및 데이터 입력 작업을 자동화하고, 학습을 통해 정확도를 지속적으로 개선

Label Studio (오픈소스 라벨링 도구)

문서 이미지 위에 Bounding Box 기반 라벨을 지정하고 검수(QA)를 수행하는 도구.

  • • OCR 결과 기반 Task 생성
  • • LayoutLM 모델의 Prediction 결과 확인
  • • 사용자가 추론 결과 검수 및 수정
  • • Submit된 데이터를 학습 데이터로 활용

→ 목적: 정확한 라벨 데이터 구축, 모델 추론 결과 검수 및 보정, 학습 데이터 품질 관리

PDF Uploader (내부 웹 애플리케이션)

사용자가 PDF 파일을 업로드하면 전처리부터 Task 생성까지 자동으로 수행하는 Ingestion Layer.

1

PDF 업로드

2

PDF → PNG 전처리

3

전처리된 이미지 저장

4

Label Studio Task 자동 생성

→ 목적: 문서 업로드 및 전처리 자동화, 라벨링/검수 워크플로우를 일관된 방식으로 운영

시스템 처리 흐름

1

PDF Uploader를 통해 문서 업로드

2

PDF → PNG 전처리

3

Tesseract OCR (텍스트 + Bounding Box 추출)

4

Label Studio Task 생성

5

LayoutLM 모델 추론 (Prediction 생성)

6

Label Studio에서 검수 (QA)

7

학습 데이터 축적 및 모델 개선

파일 업로드 방식 (상용화 고려)

PDF Uploader 문서 업로드 화면

UI 기반 업로드

사용자가 웹 UI를 통해 직접 PDF 파일을 업로드. 기존 연계 서비스와 통합하여 운영 가능.

이메일 기반 업로드

지정된 이메일 주소로 Invoice PDF를 전달하면 자동으로 S3에 저장 후 파이프라인으로 전달. 별도 시스템 접속 없이 이메일 전송만으로 문서 처리 요청 가능.

고객사의 운영 환경(Cloud / On-premise)에 따라 유연하게 적용 가능

검수 (QA) 프로세스

Document AI 검수 화면 — Label Studio 기반 라벨 검수

품질 지표

각 Task에는 quality_score, quality_grade, quality_missing_str 등의 품질 지표가 표시됨. 이를 참고하여 수정이 필요한 Task만 선별하여 검수 진행.

검수 화면 구성

LayoutLM 모델이 예측한 라벨이 텍스트별로 미리 적용된 상태로 표시. 사용자는 수정이 필요한 부분만 검수하면 됨.

검수 시 확인 사항: (1) 텍스트에 올바른 Label이 매칭되어 있는지 (2) 필수 Label 중 누락된 값이 없는지

처리 성능

현재 기준 10개 문서 처리에 약 1분~1분 30초 소요. 향후 추가 최적화를 통해 단축 예정.

추출 대상 라벨 목록

INVOICE_NUMBERINVOICE_DATEDUE_DATECUSTOMER_NAMECUSTOMER_ADDRESSCUSTOMER_TAX_IDCUSTOMER_CODESUPPLIER_NAMESUPPLIER_ADDRESSBL_NUMBERPOLPODVESSEL_VOYAGECONTAINER_NUMBERCONTAINER_SIZE_TYPESERVICE_TYPESERVICE_CONTRACT_NUMBERPCD_DATEERD_DATETOTAL_AMOUNTCURRENCYLINEITEM_DESCRIPTIONLINEITEM_CONTAINER_NUMBERLINEITEM_START_DATELINEITEM_END_DATELINEITEM_QUANTITYLINEITEM_UNITLINEITEM_RATELINEITEM_CHARGE_CURRENCYLINEITEM_EXTENDED_AMOUNTLINEITEM_TAX_AMOUNTLINEITEM_NET_AMOUNT

새로운 라벨 추가 시 해당 라벨에 대한 모델 추가 학습이 필요

PoC 제약사항

Token Length Limitation

LayoutLM 모델의 입력 토큰 길이 제한(max_length = 512)으로 인해 텍스트 양이 많은 문서(특히 Line Item이 많은 Invoice)의 경우 문서 후반부 영역이 truncation되어 일부 Line Item 추론이 누락될 수 있음.

→ 개선 계획: Sliding Window(Chunk 기반 추론) 방식을 적용하여 문서를 여러 구간으로 나누어 추론 후 결과를 병합

학습 과정

Task별 검수가 완료된 프로젝트의 경우, Label Studio에서 Submit 처리된 Annotation 데이터를 학습 데이터로 활용. 새로운 Invoice 문서 유형이 추가되는 경우, 기존 Base Model(LayoutLM)을 기반으로 추가 학습(Fine-tuning)을 진행하여 새로운 모델을 생성.

  • • 문서 유형별 특성을 반영한 특화 모델(Specialized Model) 구축
  • • 문서 데이터 추출 정확도 지속적 개선

모델 특화 전략 (예정)

기존 Base 모델이 비용 중심 Invoice에 특화되어 있는 반면, 날짜 및 기간이 중심이 되는 Invoice의 경우 별도 분기를 나눠 특화 모델을 구축할 예정.

LINEITEM_DURATION_VALUELINEITEM_DURATION_UNITLINEITEM_STARTDATELINEITEM_ENDDATE

→ Invoice (Date/Duration Specialized) 모델로 분기하여 진행 예정

Document AI

다이어그램 자료

User Flow

문서 업로드부터 후처리까지의 사용자 흐름

사용자업로드 방식S3 직접 업로드파이프라인 연계Web App UIS3 원본 저장전처리 엔진PDF→PNG, 업스케일, 병합S3 전처리 이미지Label Studio프로젝트Tesseract OCR텍스트+bbox 추출LayoutLM 자동 추론품질등급 산출 (30초 배치)사용자 검수Annotation 확정S3 결과 저장후처리 정규화범례스토리지 (S3)처리 엔진Label StudioAI 모델사용자

System Sequence (추가학습 포함)

시스템 간 상호작용 및 추가학습 순환 흐름

01
사용자WebApp문서 업로드 및 프로젝트 설정
02
WebAppS3원본 문서 저장
03
S3전처리 엔진전처리 실행
04
전처리 엔진S3전처리 이미지 저장
05
Label StudioS3데이터 동기화 (Import)
06
Label StudioOCR 엔진OCR 실행 (Tesseract)
07
OCR 엔진Label Studio텍스트 인식 결과 저장
08
LayoutLM 배치Label StudioLayoutLM 추론 실행 (30초 자동)
09
LayoutLM 배치Label Studioquality_score / quality_grade 계산
10
사용자Label Studio검수 및 수정
11
사용자Label Studio최종 확정 (Submit)
12
Label StudioS3결과 Export
13
후처리S3정규화 결과 생성 (results/)
14
학습 파이프라인S3완료 데이터 수집 (train-data/)
15
학습 파이프라인LayoutLM모델 추가학습 및 갱신

핵심 포인트: 문서 업로드 → 전처리 → OCR → AI 추론 자동 실행 → AI가 품질 점수/등급을 먼저 매김 → 사람은 필요한 것만 검수 → 확정 데이터는 저장 + 학습 데이터로 재사용 → 모델은 계속 개선 (추가학습)

데이터 라이프 사이클

데이터가 시스템을 순환하며 모델이 지속적으로 개선되는 구조

원본 문서전처리 이미지OCR 결과AI 추론 + 품질등급사람 검수확정 데이터업무 결과 활용추가 학습 데이터모델 지속 개선 (재학습 순환)

S3 데이터 구조

S3 Source

raw/ — 원본 PDF/PNG

processed/ — 전처리 완료 이미지

S3 Destination

data/ — Label Studio Export (완료 데이터)

results/ — 후처리 정규화 JSON

train-data/ — 학습용 Export (단일 JSON)

자동화 배치 주기

LayoutLM 배치 추론

주기: 30초

새 Task에 대해 자동 추론 + 품질등급 산출

Train Data Exporter

주기: 3시간

completed-only + incremental 방식으로 학습 데이터 수집

모델 추가학습

주기: 수동/스케줄

기존 checkpoint 기반 Fine-tuning 후 새 checkpoint 생성 및 배포

환경 구성