datalab-to/indra
1M param OCR model - runs on CPU, 15x faster than tesseract, close to 1B+ param models in accuracy
Indra OCR이란?
Indra OCR은 CPU에서 실행되는 초소형(약 1 M 파라미터) 광학 문자 인식 모델입니다. 최대 초당 49페이지(4개의 x86 vCPU에서 페이지당 약 230 ms)의 속도로 PDF와 이미지를 읽고 결과를 마크다운, 일반 텍스트 또는 상세한 레이아웃 정보가 포함된 JSON으로 출력합니다.
주요 기능
- 속도 – 동일한 하드웨어에서 Tesseract/PaddleOCR보다 11~17배 빠릅니다.
- 정확도 – OmniParseBench 헤드라인 점수 62.1로 PaddleOCR의 전체 파이프라인(58.4)을 능가합니다.
- 레이아웃 인식 – 모든 줄과 블록에 대한 경계 상자, 블록 레이블(제목, 표, 캡션, 각주 등) 및 읽기 순서.
- 하이브리드 PDF 처리 – PDF의 기본 텍스트 레이어가 품질 검사를 통과하면 사용하고, 그렇지 않으면 OCR로 대체하여 작업을 절약합니다.
- 작은 용량 – 약 18 MB ONNX 모델, PyTorch 불필요, ONNX Runtime, OpenCV 및 pypdfium2로 실행.
- 다국어 OCR – 라틴어, 키릴 문자, 그리스어, 데바나가리, 벵골어, 중국어(간체 및 번체). 디지털 PDF는 텍스트 레이어를 통해 모든 문자를 지원합니다.
- 선택적 수학 지원 –
--math플래그는 LaTeX 스타일 인라인 수학을 출력하는 분류기와 두 번째 인식기를 추가합니다. - 로컬 뷰어 –
indra-ocr-viewer는 오버레이된 상자, 마크다운, JSON 및 타이밍이 포함된 페이지를 표시합니다.
빠른 시작(CLI)
pip install indra-ocr # 패키지 설치
indra-ocr paper.pdf # 마크다운을 표준 출력으로
indra-ocr *.pdf --out results/ # 파일당 .md, 모든 코어 사용
indra-ocr scan.png --format json # 줄, 상자, 신뢰도가 포함된 JSON
indra-ocr-viewer # http://localhost:8765 열기
첫 실행 시 Hugging Face에서 ONNX 모델(약 18 MB)을 다운로드합니다.
Python API(기본 예제)
import indra_ocr
conv = indra_ocr.load(threads=4) # 자동 모드(텍스트 레이어 + OCR)
for i, page in conv.convert("paper.pdf"):
print(page.markdown) # 제목, 표 등이 포함된 마크다운
print(page.blocks) # 레이블이 있는 레이아웃 블록 목록
일괄 변환에는 indra_ocr.convert_many([...], cores=None)을 사용합니다. CPU 코어당 하나의 워커를 생성합니다.
출력 구조
markdown– 서식이 지정된 텍스트(제목, 목록, 표는 HTML).--keep-furniture를 사용하지 않으면 머리글/바닥글은 생략됩니다.text– 일반 텍스트, 감지된 각 줄마다 한 줄.lines–Line(box, text, confidence)객체 목록.blocks–label,bbox,text가 있는 레이아웃 블록, 읽기 순서.source–text(PDF 레이어),ocr,hybrid또는error.timings– 단계별 밀리초 및 총계.rotation,skew, 처리 경로를 설명하는 짧은note와 같은 추가 메타데이터.
Indra OCR과 관리형 서비스 사용 시기
Indra OCR은 깨끗한 인쇄 문서에서 CPU 전용 속도가 필수적인 경우에 탁월합니다. 적합하지 않은 경우:
- 셀 병합 또는 행 걸침이 있는 복잡한 표.
- 손으로 쓴 텍스트.
- OCR 목록 외부의 문자(아랍어, 히브리어, 태국어, 일본어, 한국어) – 이러한 문자는 PDF 텍스트 레이어를 통해서만 작동합니다.
- 매우 저하되었거나 저해상도 스캔.
- 세로 텍스트, 배너 너비 페이지, 엔지니어링 도면 레이블 또는 200 dpi에서 100 MP를 초과하는 페이지. 이러한 경우 저자는 Datalab 관리 플랫폼을 통해 더 높은 정확도의 GPU 기반 모델 Chandra를 권장합니다.
라이선스 및 상업적 사용
- 코드 – Apache 2.0.
- 모델 가중치 – 수정된 OpenRAIL-M(연구, 개인 사용 및 수익 2천만 달러 미만의 스타트업 무료). Datalab API와 경쟁하는 상업적 사용에는 별도 라이선스가 필요합니다(가격 페이지 참조).
설치 참고 사항
pip install indra-ocr # 안정 버전
# 또는 최신 GitHub 버전
pip install git+https://github.com/datalab-to/indra.git
# 선택적 Tesseract 비교 지원
pip install "indra-ocr[tesseract]"
Python 3.10+, Linux(x86_64 및 aarch64) 및 macOS(Apple silicon)에서 지원됩니다. 패키지는 ONNX Runtime, OpenCV 및 pypdfium2를 자동으로 가져옵니다.
벤치마크 한눈에 보기
| 지표 | Indra OCR(기본) | PaddleOCR PP‑OCRv6(텍스트 전용) | Tesseract 5 |
|---|---|---|---|
| 처리량(페이지/초) – 32코어 | 49.4 | 4.28 | 2.92 |
| 페이지당 중간 지연 시간 | 228 ms | 2 685 ms | 5 496 ms |
| OmniParseBench 헤드라인 | 62.1 | – | – |
| 텍스트 점수 | 41.3 | 35.8 | 19.3 |
| 표 점수 | 56.4 | 0.0 | 0.0 |
| 레이아웃 점수 | 88.6 | – | – |
자세히 알아보기
- 홈페이지: https://www.datalab.to
- Hugging Face의 모델: https://huggingface.co/datalab-to/indra-ocr
- 문서 및 Playground: https://documentation.datalab.to 및 https://www.datalab.to/playground
- Discord 커뮤니티: https://discord.gg/KuZwXNGnfH
TL;DR
Indra OCR은 인쇄 문서에 대해 높은 속도와 적절한 정확도를 제공하고 풍부한 레이아웃 출력과 사용하기 쉬운 CLI/Python API를 갖춘 경량 CPU 전용 OCR 엔진입니다. 깨끗한 PDF나 이미지를 빠르게 일괄 처리해야 하고 복잡한 표, 손글씨 또는 비라틴 문자의 한계를 수용할 수 있을 때 이상적입니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트