NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
OCR, layout, reading order, and table recognition in 90+ languages.
Last release 2 months ago
20 Jul 2026
Release timing varies
gaps range from 8 days to 4 months
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
94 releases · first in 2024
Merge contained fast-layout blocks; declare requests dependency by @VikParuchuri in https://github.com/datalab-to/surya/pull/534
Full Changelog: https://github.com/datalab-to/surya/compare/v0.22.0...v0.22.1
Swap models to a spawn + server model, instead of relying on each process having a separate model. Fix bug with text detection where weights didn't lo
Swap models to a spawn + server model, instead of relying on each process having a separate model. Fix bug with text detection where weights didn't load properly.
Full Changelog: https://github.com/datalab-to/surya/compare/v0.21.2...v0.22.0
One column per month.
Bump version by @VikParuchuri in https://github.com/datalab-to/surya/pull/529
Full Changelog: https://github.com/datalab-to/surya/compare/v0.21.1...v0.21.2
Cleanups by @VikParuchuri in https://github.com/datalab-to/surya/pull/527
Full Changelog: https://github.com/datalab-to/surya/compare/v0.21.0...v0.21.1
Added a new fast layout model that can run on CPU
Full Changelog: https://github.com/datalab-to/surya/compare/v0.20.0...v0.21.0
Then make a backend available (see *Breaking changes* above). Full usage, output schemas, and tuning notes are in the README.
Surya 2 is a ground-up rework: a single 650M-param model now handles OCR, layout, and table recognition, served by vllm (NVIDIA GPU) or llama.cpp (CPU / Apple Silicon). Text detection and OCR-error detection remain separate lightweight torch models.
⚠️ This is a major release with breaking API and output-schema changes. See Upgrading from v1 below.
# v2
from surya.inference import SuryaInferenceManager
from surya.recognition import RecognitionPredictor
manager = SuryaInferenceManager() # auto-spawns vllm or llama-server
rec = RecognitionPredictor(manager)
predictions = rec([image])
SuryaInferenceManager replaces FoundationPredictor, and is shared across LayoutPredictor, RecognitionPredictor, and TableRecPredictor.text_lines → blocks (each with html); layout dropped top_k and added count; table-rec cells dropped is_header / colspan / rowspan.brew install llama.cpp (CPU / Apple Silicon). Detection still runs on torch alone.pip install surya-ocr
Then make a backend available (see Breaking changes above). Full usage, output schemas, and tuning notes are in the README.
Full Changelog: https://github.com/datalab-to/surya/compare/v0.17.1...v0.20.0
Fix a minor issue with un-escaping control characters in latex commands
Full Changelog: https://github.com/datalab-to/surya/compare/v0.17.0...v0.17.1
Moving to a new architecture for layout, trained from scratch. Significant improvements across many domains
Full Changelog: https://github.com/datalab-to/surya/compare/v0.16.7...v0.17.0
Move flash attention funcs by @VikParuchuri in https://github.com/datalab-to/surya/pull/457
Full Changelog: https://github.com/datalab-to/surya/compare/v0.16.6...v0.16.7
Get rid of attention method checks by @VikParuchuri in https://github.com/datalab-to/surya/pull/455
Full Changelog: https://github.com/datalab-to/surya/compare/v0.16.5...v0.16.6
Foundation predictor init by @VikParuchuri in https://github.com/datalab-to/surya/pull/454
Full Changelog: https://github.com/datalab-to/surya/compare/v0.16.4...v0.16.5
Improve performance 20-30%, more so with marker
Full Changelog: https://github.com/datalab-to/surya/compare/v0.16.3...v0.16.4
Revert checkpoint Full Changelog: https://github.com/datalab-to/surya/compare/v0.16.2...v0.16.3
Revert checkpoint
Full Changelog: https://github.com/datalab-to/surya/compare/v0.16.2...v0.16.3
Update README by @u-ashish in https://github.com/datalab-to/surya/pull/447
Full Changelog: https://github.com/datalab-to/surya/compare/v0.16.1...v0.16.2
Hotfix to be compatible with transformers 4.56.0.
Hotfix to be compatible with transformers 4.56.0.
Full Changelog: https://github.com/datalab-to/surya/compare/v0.16.0...v0.16.1
Update to a better OCR model. Uses less vocab size, and a more performant vision encoder.
Full Changelog: https://github.com/datalab-to/surya/compare/v0.15.4...v0.16.0
Bump the OCR model with a version that improves general performance, and significantly improves math performance
Full Changelog: https://github.com/datalab-to/surya/compare/v0.15.3...v0.15.4
Add support for finetuning, and a script you can run to finetune the model easily
Full Changelog: https://github.com/datalab-to/surya/compare/v0.15.2...v0.15.3
Fix edge case for empty tags by @tarun-menta in https://github.com/datalab-to/surya/pull/414
Full Changelog: https://github.com/datalab-to/surya/compare/v0.15.1...v0.15.2
Nothing published for this version
New OCR model that is significantly better all around, but especially on math.
New OCR model that is significantly better all around, but especially on math.
Full Changelog: https://github.com/datalab-to/surya/compare/v0.14.7...v0.15.0
A recent transformers release refactors caching logic, which we inherit from. Until we can fix, we're pinning transformers to a narrow range.
A recent transformers release refactors caching logic, which we inherit from. Until we can fix, we're pinning transformers to a narrow range.
Full Changelog: https://github.com/datalab-to/surya/compare/v0.14.6...v0.14.7
Remove tags that can be output inside math tags
Fix encoder chunk size variable name
Enable dropping repeat text with a flag for OCR
ENCODER_CHUNK_SIZE - setting to 1024 or 2048 can boost performance on old GPUs/CPUFixed an issue with SDPA attention that was causing slowdowns and high memory usage on any device that didn't support flash attention.
Full Changelog: https://github.com/VikParuchuri/surya/compare/v0.14.2...v0.14.3
Fixed a bug where large images on certain devices (mostly MPS) could cause issues with OCR.
Full Changelog: https://github.com/VikParuchuri/surya/compare/v0.14.1...v0.14.2
Updated OCR model that is more accurate and robust (less going off the rails).
Updated OCR model that is more accurate and robust (less going off the rails).
The latest version of Surya OCR has a new architecture, and is trained on significantly more data than before.
The latest version of Surya OCR has a new architecture, and is trained on significantly more data than before.
Some notable features:
Updated benchmarks coming soon.
Word boxes
Math
<img width="1842" alt="image" src="https://github.com/user-attachments/assets/0b768cdf-74da-4482-99c8-2794e7964be3" />
Chinese
<img width="1854" alt="image" src="https://github.com/user-attachments/assets/d6a34ad3-0707-4f65-923c-17917ee8002d" />
Full Changelog: https://github.com/VikParuchuri/surya/compare/v0.13.1...v0.14.0
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fix inline prediction - original image mapping by @tarun-menta in https://github.com/VikParuchuri/surya/pull/334
Full Changelog: https://github.com/VikParuchuri/surya/compare/v0.13...v0.13.1
New text detection model detects more text across a range of PDFs. Should improve OCR performance.
New text detection model detects more text across a range of PDFs. Should improve OCR performance.
Fix bug with model downloads.
Full Changelog: https://github.com/VikParuchuri/surya/compare/v0.12.1...v0.13.0
Update to new inline math model by @tarun-menta in https://github.com/VikParuchuri/surya/pull/323
Full Changelog: https://github.com/VikParuchuri/surya/compare/v0.12.0...v0.12.1
Improve speed and reliability by downloading models with S3
from_pretrained by @tarun-menta in https://github.com/VikParuchuri/surya/pull/320Full Changelog: https://github.com/VikParuchuri/surya/compare/v0.11.1...v0.12.0
- Fix streamlit bug - Fix inline detection bug
Add new inline math detection model and benchmark
<img width="464" alt="image" src="https://github.com/user-attachments/assets/3581838f-3bf4-491a-8cd3-b135c0de623a" />
Benchmark surya against textract as well as google cloud vision. For just english, results look like:
| Model | Time per page (s) | Avg Score | English |
|---|---|---|---|
| surya | 0.522628 | 0.983298 | 0.983298 |
| textract | 1.44293 | 0.947458 | 0.947458 |
Add support for TPUs. Still fairly slow, but lots of optimizations to be made.
Refactor inference to get a 5-10% speed boost across all models.
Full Changelog: https://github.com/VikParuchuri/surya/compare/v0.10.3...v0.11.0
Fix an issue where text detection wouldn't resize images properly, leading to bounding boxes in the wrong place in tall images.
Fix an issue where text detection wouldn't resize images properly, leading to bounding boxes in the wrong place in tall images.
Fix bug that caused issues on MPS (Mac) devices when using pytorch 2.6.
Fix bug that caused issues on MPS (Mac) devices when using pytorch 2.6.
Pytorch 2.6.0 doesn't work well with some of the models on MPS (Mac), so pinning to the old version.
Pytorch 2.6.0 doesn't work well with some of the models on MPS (Mac), so pinning to the old version.
Add streamlit app to interactively select and OCR equations
<img width="1000" alt="image" src="https://github.com/user-attachments/assets/6d0065bb-577f-442c-8ecc-77c24a50ef2e" />
PolygonBox.bbox by @kevinhu in https://github.com/VikParuchuri/surya/pull/291Full Changelog: https://github.com/VikParuchuri/surya/compare/v0.9.3...v0.10.0
Fix issue with cli scripts and folders.
Fix issue with cli scripts and folders.
Improve how polygons are type checked in the schema.
Improve how polygons are type checked in the schema.
Fixes a bug where rowspans weren't included in table model predictions.
Fixes a bug where rowspans weren't included in table model predictions.
This is a complete refactor of surya - the code is now cleaner and better organized. Models are now imported and used differently, here is an example
This is a complete refactor of surya - the code is now cleaner and better organized. Models are now imported and used differently, here is an example for OCR:
from PIL import Image
from surya.recognition import RecognitionPredictor
from surya.detection import DetectionPredictor
image = Image.open(IMAGE_PATH)
langs = ["en"] # Replace with your languages or pass None (recommended to use None)
recognition_predictor = RecognitionPredictor()
detection_predictor = DetectionPredictor()
predictions = recognition_predictor([image], [langs], detection_predictor)
See the README for how to use other models.
There is a new table recognition model which detects colspans/rowspans better, along with header cells. It also isn't as complex to use, since it operates on just the images versus the images and bboxes.
Full Changelog: https://github.com/VikParuchuri/surya/compare/v0.8.3...v0.9.0
Pin pypdfium2 version - newest version can cause issues.
Pin pypdfium2 version - newest version can cause issues.
Layout model is twice as fast and more accurate.
Layout model is twice as fast and more accurate.
Full Changelog: https://github.com/VikParuchuri/surya/compare/v0.8.1...v0.8.2
Add a model to detect bad OCR text
top_k to Surya Layout and Fix Confidence Value Issue by @iammosespaulr in https://github.com/VikParuchuri/surya/pull/263Full Changelog: https://github.com/VikParuchuri/surya/compare/v0.8.0...v0.8.1
Update to the latest `pdftext` release, incorporating heuristic-based segmentation for enhanced performance and accuracy.
Update to the latest pdftext release, incorporating heuristic-based segmentation for enhanced performance and accuracy.
Full Changelog: https://github.com/VikParuchuri/surya/compare/v0.7.0...v0.8.0
New layout model that detects more block types, includes ordering, and performs better
Full Changelog: https://github.com/VikParuchuri/surya/compare/v0.6.13...v0.7.0
Don't pass around heatmaps by default
Overlap postprocessing if batch size >1
Fixes cudnn backend issue with torch 2.5
Threads cause issues on a small % of devices. Although they do give good speedups on most, supporting them seems like a bad idea.
Threads cause issues on a small % of devices. Although they do give good speedups on most, supporting them seems like a bad idea.
Corrected version of a recent release with no deadlocks.
Corrected version of a recent release with no deadlocks.
Overlaps inference and postprocessing.
There were some issues with threading on certain devices. Will re-release after fixing.
There were some issues with threading on certain devices. Will re-release after fixing.
Overlap postprocessing with inference.
Overlap postprocessing with inference.
There was an issue with columns not being detected properly
There was an issue with columns not being detected properly
Your coding agent can read these notes before it upgrades. Set up the MCP server →