
Surya 2 在 NVIDIA GPU 上如何通过 vllm 后端首次运行 surya_ocr【免费下载链接】suryaOCR, layout analysis, reading order, table recognition in 90 languages项目地址: https://gitcode.com/GitHub_Trending/su/surya本文面向有一块 NVIDIA GPU、想第一次在本地跑通 Surya 2 OCR 的开发者安装surya-ocr包让它在首次使用时通过 vllm 后端自动拉起推理服务器对一份文档执行surya_ocr并核对输出。Surya 2 的 layout / OCR / table recognition 都走同一个 VLM由SuryaInferenceManager在首次使用时自动 spawnNVIDIA GPU 走 vllmCPU / Apple Silicon 走 llama.cpp本路径只覆盖 vllm 一侧。准备条件按 README.md 的 Inference backend prerequisitesvllmNVIDIA GPU路径的依赖只有两项Dockerdaemon 需在运行NVIDIA Container Toolkit源码中如果找不到docker可执行文件直接抛出docker binary not found. Install Docker ... and ensure the daemon is running.见 surya/inference/backends/vllm.py。安装包本身是一条命令pip install surya-ocrPython 版本要求来自 pyproject.tomlrequires-python 3.10,4。装完后会注册的 CLI 入口包括surya_ocr、surya_detect、surya_layout、surya_table、surya_gui见 pyproject.toml 的[project.scripts]。确认 vllm 后端会被选中后端选择逻辑在 surya/inference/init.pySURYA_INFERENCE_BACKEND未设置时检测到 NVIDIA GPU 就用vllm否则用llamacpp。如果你希望显式指定而不是依赖自动检测export SURYA_INFERENCE_BACKENDvllm首次运行时vllm 后端会通过docker run拉起容器surya-vllm-port关键参数都来自 surya/settings.py 的默认值首次使用前需要先检查两个与 GPU 直接相关的设置VLLM_GPU_TYPE默认4090用来按 VRAM 自动推算--max-num-batched-tokens和--max-num-seqs。可选值就是 vllm.py 中GPU_VRAM_GB表里的键b300、b200、h200、h100、a100-80、a100、a100-40、l40s、a10、l4、5090、4090、3090、t4。如果你的卡不在其中或想确认当前值启动时会报Unknown VLLM_GPU_TYPE ... Available: ...并列出全部可用值。VLLM_DTYPE默认bfloat16settings 注释明确 bfloat16 需要 Ampere 及以上compute capability 8.0更老的卡如 T4 / Turing上 vllm 会拒绝以 bf16 启动需改为 float16。其余默认值供参考镜像VLLM_DOCKER_IMAGE vllm/vllm-openai:v0.20.1模型SURYA_MODEL_CHECKPOINT datalab-to/surya-ocr-2VLLM_GPUS 0VLLM_MAX_MODEL_LEN 18000VLLM_GPU_MEMORY_UTILIZATION 0.85VLLM_ENABLE_MTP True。首次运行 surya_ocrDATA_PATH可以是一张图片、一个 PDF或一个包含图片/PDF 的目录README.md OCR 一节surya_ocr /path/to/your.pdf第一次执行时会发生的事对应 surya/inference/backends/spawn.py 与 vllm.py若没有已存在的 vllm 服务器通过docker run -d启动surya-vllm-port容器挂载本地 HF 缓存目录~/.cache/huggingface由DOCKER_HF_CACHE_PATH控制轮询http://127.0.0.1:port/health直到返回 200超时上限为SURYA_INFERENCE_STARTUP_TIMEOUT默认 600 秒健康检查通过后校验服务器报告的模型名日志输出vllm server ready on port port (model...)。如果健康检查在超时内未通过spawn 流程会先抓取容器日志再拆掉容器抛出形如vllm server failed to become healthy at ... within 600s. --- last vllm server logs ---的错误容器自身的日志尾段会附在异常信息里这是第一次启动失败时最重要的排查信息。常用参数见 surya/scripts/config.py 的common_options--output_dir结果保存目录默认为results/surya/输入名/--page_range只处理指定页格式如0,5-10,20--images额外保存页面与检测框的标注图--keep_server命令退出后不关闭推理服务器。默认行为是启动时 spawn、退出时关闭连跑多条命令时每条都要付一次启动GPU 上还有模型加载开销加--keep_server后后续命令如surya_layout直接 attach 到运行中的服务器。核对结果surya_ocr结束后会写一个results.json到输出目录默认results/surya/输入名/results.json。按 README.md 的结构说明该文件以输入文件名不含扩展名为键每个值是每页一个 dict 的列表每页包含blocks按阅读顺序排列的块每块含label、raw_label、reading_order、html块内容 HTML数学包在math.../math里表格为table.../table、polygon、bbox、confidence0-1 的平均 token 概率、skipped、errorimage_bbox[0, 0, width, height]。核对方式打开results.json确认目标页有非空blocks、html里有识别出的文本内容、error不为true。命令行本身成功时的日志为Wrote results to result_path见 surya/scripts/ocr_text.py。若某页 full-page 输出解析失败RecognitionPredictor 会自动退回 layout per-block OCR 路径见 surya/scripts/ocr_text.py 的注释。收尾与边界用--keep_server留下服务器后用完后要手动停docker stop掉surya-vllm-*容器README.md Server lifecycle 一节。也可以把SURYA_INFERENCE_KEEP_ALIVE1设为默认 keep-alive。若已有别的 OpenAI 兼容服务器在跑可通过export SURYA_INFERENCE_URLhttp://host:port/v1直接 attach 而不 spawn此时服务器/health不可达会报... is not reachable at /health模型名不匹配会报Model mismatch at ...两者都要求先修好外部服务器再重试。README 的 Limitations 一节明确layout / OCR / table_rec 都需要一个运行中的推理后端vllm 或 llama.cpp只有 text line detection 是纯 torch 模型、不依赖后端。至此一次完整的 NVIDIA GPU vllm 首跑路径是装 Docker 与 NVIDIA Container Toolkit →pip install surya-ocr→ 按自己的卡核对VLLM_GPU_TYPE/VLLM_DTYPE→surya_ocr DATA_PATH→ 检查results.json中的blocks。【免费下载链接】suryaOCR, layout analysis, reading order, table recognition in 90 languages项目地址: https://gitcode.com/GitHub_Trending/su/surya创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考