datalab-to/surya

OCR, layout analysis, reading order, table recognition in 90+ languages

해결하는 문제

스캔 문서는 지저분합니다. 제목, 표, 그림, 양식, 필기, 수식이 섞여 있고 종종 다른 언어로 되어 있습니다. 일반 OCR은 원시 텍스트만 출력하여 문서를 유용하게 만드는 구조를 잃어버립니다. Surya는 문서 페이지를 기계가 읽을 수 있는 텍스트와 구조화된 설명으로 변환합니다. 텍스트 줄을 감지하고, 레이아웃 블록(제목, 표, 그림, 캡션 등)을 식별하고, 읽기 순서를 결정하고, 표의 행과 열을 인식합니다. 또한 인라인 수학을 처리하여 방정식을 LaTeX로 반환합니다. 이를 통해 스캔된 PDF와 이미지를 검색 가능하고 추출 가능하게 만들고 HTML이나 Markdown과 같은 형식으로 변환할 수 있습니다.

작동 방식

Surya는 650M 파라미터 비전-언어 모델(이미지를 입력으로 받아 텍스트를 생성하는 모델)입니다. 버전 2에서는 하나의 공유 모델이 레이아웃 분석, 전체 페이지 OCR, 표 인식을 처리하고, 별도의 더 작은 모델이 줄 수준 텍스트 감지를 처리하며, 또 다른 모델이 OCR 오류를 감지합니다. 처음 사용 시 도구는 자동으로 추론 서버를 시작합니다. NVIDIA GPU에서는 vllm을 사용하고 CPU/Apple Silicon에서는 llama.cpp를 사용합니다. 환경 변수를 통해 이미 실행 중인 서버를 가리킬 수도 있습니다. 명령줄 도구(surya_ocr, surya_layout, surya_table, surya_detect)는 경계 상자, 레이아웃 레이블, 읽기 순서 위치, 신뢰도 점수, HTML 출력(표는 <table>...</table> 태그, 수식은 <math>...</math> 태그 안의 LaTeX)을 포함한 JSON 결과 파일을 작성합니다. --keep_server 플래그는 명령 사이에 추론 서버를 유지하여 매번 시작 비용을 지불하지 않도록 합니다. Python API와 Streamlit 그래픽 인터페이스도 있습니다.

대상 사용자

문서 처리 파이프라인을 구축하는 개발자와 팀을 위한 것입니다. 예를 들어 검색을 위해 스캔 아카이브를 인덱싱하거나, 양식과 세금 문서에서 데이터를 추출하거나, 교과서와 신문 레이아웃을 파싱하거나, PDF를 구조화된 형식으로 변환하는 경우입니다. 연구, 개인 사용, 자금 또는 수익이 500만 달러 미만인 스타트업에게는 무료입니다. 모델 가중치의 더 광범위한 상업적 사용에는 유료 라이선스가 필요합니다(코드 자체는 Apache 2.0). README는 또한 대규모 또는 어려운 워크로드를 호스팅된 Datalab API로 안내합니다.

주요 특징

  • olmOCR-bench 벤치마크에서 83.3% 정확도——3B 파라미터 미만 모델 중 최고 점수
  • RTX 5090 GPU에서 초당 약 5페이지 처리량
  • 다국어: 91개 언어를 다루는 내부 벤치마크에서 87.2%
  • 읽기 순서를 포함한 레이아웃 분석, 행/열 기하학과 셀을 출력하는 표 인식, 전체 HTML 모드는 병합 셀과 헤더 행 처리
  • 수식은 동일한 OCR 패스에서 인식되어 <math> 태그 안에 KaTeX 호환 LaTeX로 출력
  • vllm을 통해 NVIDIA GPU에서 실행하거나 llama.cpp를 통해 CPU/Apple Silicon에서 실행
  • 이미지나 PDF에서 시도할 수 있는 대화형 Streamlit 앱(surya_gui) 포함

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트