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 过程中被识别,以 KaTeX 兼容的 LaTeX 形式输出在
<math>标签内 - 通过 vllm 在 NVIDIA GPU 上运行,或通过 llama.cpp 在 CPU/Apple Silicon 上运行
- 包含交互式 Streamlit 应用(
surya_gui),可在图像或 PDF 上试用
相关
- 项目
- 项目
- 项目
- 项目
- 项目