Surya
Surya is a 689M-parameter OCR model from Datalab for document intelligence, covering OCR, layout analysis, reading order, and table recognition in 90+ languages.
Visit datalab-to/suryaOverview
Surya is a 689M-parameter OCR model from Datalab that performs text recognition, layout analysis, reading order, and table recognition. It supports 90+ languages and is designed for document intelligence workloads across varied document types.
Key Features
- 689M-parameter OCR model with text recognition and line-level text detection.
- Layout analysis for tables, images, headers, and other document elements, with reading order.
- Table output as HTML, including merged cells as colspan and rowspan.
- Multilingual support, scoring 74.9% on an internal benchmark set of 91 languages.
- Throughput of 4.5 pages/s on one H100 at 192 DPI and 1.7x Surya 2 with MTP.
Use Cases
- OCR of images, PDFs, or folders of images and PDFs into JSON with detected text and bounding boxes.
- Layout analysis and reading-order extraction for complex pages such as newspapers, forms, and academic papers.
- Table recognition and HTML table output for documents with merged cells.
- Multilingual document processing across 90+ languages.
Getting Started
- Install with pip install surya-ocr.
- For NVIDIA GPU inference, install Docker and the NVIDIA Container Toolkit; for CPU or Apple Silicon, install the llama-server binary from llama.cpp.
- Run surya_ocr DATA_PATH to write JSON with detected text and bounding boxes; DATA_PATH can be an image, PDF, or folder of images or PDFs.
- Optionally install streamlit and pdftext, then run surya_gui for an interactive app.
Deployment & Requirements
- NVIDIA GPU inference requires Docker plus the NVIDIA Container Toolkit.
- CPU or Apple Silicon inference requires the llama-server binary from llama.cpp.
- Surya auto-spawns the inference server on first use and can also point at an existing server via SURYA_INFERENCE_URL=http://host:port/v1\.
Before You Adopt
- License: Apache-2.0. Review its terms before using, modifying, or distributing the project.
- CPU or Apple Silicon inference involves llama.cpp.
- By default each command starts and stops the VLM server, so repeated commands incur startup and, on GPU, model-load costs.