실행 프로그램과 확장

최종 업데이트

LightOnOCR-3로 스캔 PDF와 표를 로컬에서 추출하기

grounding 모드에서는 글자뿐 아니라 페이지 영역의 라벨과 좌표도 남아요. 표는 추출 후 행·열·단위를 원본과 확인한 다음 RAG나 검색 색인에 넣어요.

LightOnOCR-3는 plain 모드와 grounding 모드를 제공해요. plain은 전체 페이지 텍스트를 Markdown으로 옮기고, grounding은 레이아웃 block의 유형과 0~1000 좌표를 더해요. LightOnOCR-3 CLI1는 PDF를 페이지별 out/<name>/page-NNN.md로 저장하고 grounding이면 구조화된 .json도 만들어요. OCR2 결과는 원본 표와 함께 검수한 뒤 후속 검색에 연결해요.

스캔 PDF에서 본문과 표를 뽑아 문서 검색이나 검토에 연결할 때 쓸 수 있어요. PDF 파일과 페이지 범위를 입력하면 페이지별 Markdown과 선택적으로 위치 정보가 담긴 grounding block이 나와요.

처음에는 표가 있는 페이지 한 장과 본문 위주의 페이지 한 장을 골라요. 표 숫자와 열 제목, 단위가 원본과 맞는지 사람이 확인한 뒤에만 결과를 색인에 넣으면, 레이아웃이나 작은 글자에서 생긴 오류가 검색 답변으로 이어지는 일을 줄일 수 있어요.

실행 조건과 핵심 내용
  • PDF를 페이지 단위로 처리하고, grounding mode는 블록 라벨과 좌표도 남겨요.
  • LightOnOCR-3-1B에는 vllm==0.30.0, transformers==5.16.1 조합이 문서화돼 있어요.
  • H100 벤치마크의 처리량을 개인 PC 속도로 옮겨 말하지 않아요. 먼저 본인 GPU에서 소량 PDF를 시험해요.

plain과 grounding 중 결과 형식 정하기

plain 모드는 페이지 텍스트를 Markdown으로 추출해 표와 수식을 사람이 읽기 쉽게 남겨요. grounding을 입력으로 주면 각 문서 영역 앞에 유형과 좌표를 담은 표식이 붙고, 좌표는 페이지 크기와 무관하게 0~1000으로 정규화돼요. .json block은 프로그램 후처리에, .md는 빠른 검수와 저장에 활용할 수 있어요.

표 중심 자료에서는 grounding이 좋은 시작점이에요. 각 표 영역의 위치와 텍스트를 함께 검수할 수 있고, 차트에서는 데이터 값이 HTML 표로 표현될 수 있어요. 모든 문서가 동일한 방식으로 변환되는 것은 아니므로 페이지별로 빈 셀, 잘린 열, 머리글·바닥글 혼입을 확인해요.

문서 페이지가 보이는 모니터와 종이 묶음, 카드와 데스크톱 본체
plain은 읽기 쉬운 Markdown, grounding은 영역 라벨과 좌표를 더해요.

vLLM과 LightOnOCR CLI 연결하기

Linux와 CUDA3를 지원하는 NVIDIA GPU4, Python 3.10 이상을 준비하고 uv --version으로 uv 설치 여부를 확인해요. 없다면 uv 공식 설치 안내의 Linux 방법을 따라요. 설치 후 터미널을 다시 열어 버전이 표시되는지 확인한 다음 아래 저장소 설치로 넘어가세요.

uv 설치 여부 확인 · 없으면 공식 Linux 설치 후 재확인
uv --version
# If missing, the official Linux installer is:
# curl -LsSf https://astral.sh/uv/install.sh | sh
# Reopen the terminal and confirm uv --version before continuing.

공식 quick start는 uv sync --extra vllm으로 CLI와 서버 의존성을 설치해요. LightOnOCR-3-1B 예시는 포트 8010, 요청당 이미지 1개, 최대 모델 길이 16,384, 이미지 캐시 비활성화를 사용해요. 저장소는 vLLM 0.30.0과 Transformers 5.16.1을 고정하며, Transformers 5.17과 vLLM 0.27.1에서는 문제가 있다고 밝혀요.

저장소를 받고 vLLM 의존성 설치 후 서버 실행
mkdir -p "$HOME/projects"
cd "$HOME/projects"
git clone https://github.com/lightonai/LightOnOCR.git
cd LightOnOCR
uv sync --extra vllm
source .venv/bin/activate
vllm serve lightonai/LightOnOCR-3-1B --limit-mm-per-prompt '{"image": 1}' --max-model-len 16384 --mm-processor-cache-gb 0 --no-enable-prefix-caching --port 8010 --host 127.0.0.1

처리할 PDF를 저장소 폴더 $HOME/projects/LightOnOCR/에 report.pdf라는 이름으로 두고, CLI는 저장소 루트에서 실행해요. 서버는 별도 터미널에서 foreground로 켜 두며 --host 127.0.0.1로 로컬 인터페이스에만 바인딩해요. CLI는 기본 http://127.0.0.1:8010/v1로 연결하므로, 첫 실행에서는 저장소 기본 모델 이름을 유지해요.

별도 터미널에서 grounding PDF 처리
cd "$HOME/projects/LightOnOCR"
source .venv/bin/activate
lightonocr report.pdf --mode grounding
문서와 그림 카드가 깔때기를 지나 화면과 색 블록이 든 서버형 장치로 이어지는 그림
페이지별 Markdown과 JSON이 생기면 표·좌표와 원본을 대조해요.

페이지별 출력에서 표를 검수하고 저장해요

정상 실행되면 CLI는 기본 out/report/에 페이지별 .md 파일과 전송한 페이지 이미지를 저장해요. grounding mode에서는 각 페이지의 .json block도 생성돼요. 먼저 파일이 생성됐는지, PDF 페이지 수와 출력 페이지 번호가 맞는지, Markdown 표가 열·행으로 보존됐는지 확인해요.

페이지별 저장 파일
out/report/
├── page-001.png
├── page-001.md
├── page-001.json  # grounding mode
└── ...

업무용으로 넘기기 전 숫자 셀, 통화·단위, 병합된 머리글, 각주를 원본 PDF에서 표본 대조해요. grounding 좌표가 0~1000 범위인지도 확인하고, 좌표가 표 영역을 둘러싸더라도 행·열 경계와 숫자 자체가 정확한지 별도로 검토해요. 확인이 끝난 페이지만 후속 문서 시스템에 저장해요.

문서 더미에서 모래시계를 지나 색 블록이 든 소형 PC로 이어지는 그림
표 숫자와 단위를 확인한 페이지부터 후속 검색에 연결해요.

표가 틀리거나 페이지가 비었을 때 원인 나누기

결과 디렉터리나 페이지 파일이 없으면 서버가 준비된 뒤 CLI를 실행했는지와 포트 8010 주소를 확인해요. 빈 페이지나 요청 실패면 원본 PDF를 이미지로 렌더링해 페이지가 읽히는지 확인하고, 특정 페이지만 --pages로 다시 실행해요. 출력이 너무 길어 잘렸다면 전체 PDF 대신 페이지 범위를 줄여요.

표가 왜곡되면 먼저 plain mode와 grounding mode 결과를 나란히 봐요. --longest-edge는 이미지를 입력 해상도로 바꾸는 설정이라 원본의 작은 글자가 뭉개졌을 때 조정해 볼 수 있어요. 기본 서버도 모델별 페이지 크기를 선택하지만, 이미지 크기를 바꿀수록 처리량5과 정확도 사이의 균형은 직접 작은 묶음으로 확인해야 해요.

용어 각주

  1. CLI — Command-Line Interface의 약자입니다. 터미널에 명령어를 입력해 프로그램을 조작하는 방식입니다.

    본문으로 돌아가기
  2. OCR — 이미지나 스캔 문서에서 글자를 인식해 텍스트로 바꾸는 처리입니다. 표 배치나 읽기 순서는 원본 이미지를 함께 봐야 판단할 수 있습니다.

    본문으로 돌아가기
  3. CUDA — NVIDIA GPU에서 범용 계산을 실행하기 위한 소프트웨어 플랫폼입니다.

    본문으로 돌아가기
  4. GPU — 많은 계산을 병렬로 처리하는 프로세서입니다. AI 모델 실행에서는 모델 계산을 맡습니다.

    본문으로 돌아가기
  5. 처리량 — 일정 시간 동안 처리하거나 생성한 작업량입니다. 토큰/초, 요청/초처럼 단위를 함께 확인해야 비교할 수 있습니다.

    본문으로 돌아가기

자주 묻는 질문

이 글에서 가장 먼저 확인할 것은 무엇인가요?
LightOnOCR-3는 plain 모드와 `grounding` 모드를 제공해요. plain은 전체 페이지 텍스트를 Markdown으로 옮기고, grounding은 레이아웃 block의 유형과 0~1000 좌표를 더해요. LightOnOCR-3 CLI는 PDF를 페이지별 `out/<name>/page-NNN.md`로 저장하고 grounding이면 구조화된 `.json`도 만들어요. OCR 결과는 원본 표와 함께 검수한 뒤 후속 검색에 연결해요.