
Surya 2 提示 llama-server 二进制找不到怎么解决【免费下载链接】suryaOCR, layout analysis, reading order, table recognition in 90 languages项目地址: https://gitcode.com/GitHub_Trending/su/surya在 CPU 或 Apple Silicon 机器上运行 Surya 2 的surya_ocr、surya_layout、surya_table时可能直接看到这样的报错llama-server binary not found. Install with: macOS: brew install llama.cpp Linux: brew install llama.cpp OR download from https://github.com/ggml-org/llama.cpp/releases Or set LLAMA_CPP_BINARY in your env to the binary path.这个报错的解决路径很直接装好 llama.cpp 的llama-server可执行文件或者用环境变量指向你已经有的llama-server二进制。本文按“确认错误来源 → 修复 → 验证”的顺序给出完整操作。先确认错误来源为什么会提示找不到二进制Surya 2 的 layout、OCR、table recognition 全部走同一个 VLM 推理后端NVIDIA GPU 机器用vllmCPU / Apple Silicon 机器用 llama.cpp即llamacpp后端。自动检测逻辑见 surya/inference/init.py有 NVIDIA GPU 选vllm否则mps / cpu选llamacpp也可以用SURYA_INFERENCE_BACKEND环境变量强制指定。所以这条报错通常只出现在没有 NVIDIA GPU 的机器上——后端自动选中了llamacpp但系统里找不到它要 spawn 的llama-server可执行文件。触发点在 surya/inference/backends/llamacpp.py后端首次启动时按两步查找二进制检查LLAMA_CPP_BINARY设置见 surya/settings.py默认值llama-server。如果它是一个已存在的文件路径直接使用否则在PATH里查找名为llama-server的可执行文件等价于shutil.which(llama-server)。两步都没找到才抛出上面的SpawnError。报错信息本身已经给出了两种官方修复方式下面分别说明。修复方式一安装 llama-server 到 PATH推荐主路径README.md 的 Inference backend prerequisites 一节给出了安装要求Surya 首次使用会自动 spawn 服务器CPU / Apple Silicon 机器需要 llama.cpp 提供的llama-server二进制# macOSMetal 构建 brew install llama.cppLinux 机器二选一# 方式 A用 brew 安装 brew install llama.cpp# 方式 B从 llama.cpp 的 release 下载预编译二进制 # 下载地址README 给出的官方 release 入口 # https://github.com/ggml-org/llama.cpp/releases代码文件头部的安装说明与 README 一致见 llamacpp.pymacOS 用 brew 装的是 Metal 构建MPSLinux 可用 brew 或 release 下载。安装完成后确认llama-server能被PATH找到即可后面“验证修复”一节有具体命令。修复方式二用 LLAMA_CPP_BINARY 指向已有二进制可选分支如果你已经通过源码编译或其他方式拿到了llama-server但没有装进PATH可以直接用环境变量指向它。设置项定义在 surya/settings.pyLLAMA_CPP_BINARY: str llama-server# llama-server 的绝对路径 替换为你机器上二进制的实际位置 export LLAMA_CPP_BINARY/path/to/llama-server注意解析顺序LLAMA_CPP_BINARY指向一个存在的文件时会被直接采用不再查PATHllamacpp.py 中先os.path.isfile检查、成功后返回。所以相对路径、绝对路径都可以只要对当前工作目录可解析。另外README 也支持SURYA_INFERENCE_URLhttp://host:port/v1直接指向一个已在运行的 OpenAI 兼容服务器——此时 Surya 只附加attach不 spawn完全不需要本机二进制。如果你本来就自维护了一个llama-server这也是可选方案但它与“修好自动 spawn”是两条不同的路径按你的环境选其一即可。验证修复二进制可见 实际跑一条命令第一步确认二进制可见which llama-server能返回一个可执行文件路径说明PATH方式已生效如果走的是LLAMA_CPP_BINARY则确认它指向的路径存在echo $LLAMA_CPP_BINARY第二步跑一条真实的 Surya 命令验证# DATA_PATH 可以是一张图片、一个 PDF或一个包含图片/PDF 的目录 surya_ocr DATA_PATH首次成功启动时的完整流程是Surya 从 HuggingFace Hub 的datalab-to/surya-ocr-2-gguf仓库下载surya-2.gguf和surya-2-mmproj.gguf见 surya/settings.py再 spawnllama-server然后轮询/health直到返回 200 才认为就绪/health探活逻辑见 surya/inference/backends/spawn.py。启动超时的默认值是SURYA_INFERENCE_STARTUP_TIMEOUT600.0秒surya/settings.py下载 模型加载都在这个窗口内完成首次运行耐心等待。服务器自身的日志会追加写入~/.cache/datalab/surya/llamacpp_server.logllamacpp.py命令跑完后可以tail这个文件确认llama-server正常启动并处理了请求。成功的标志是命令正常结束并写出results.jsonschema 见 README 的 OCR 一节以输入文件名为 key每页含blocks、image_bbox等字段。如果启动后仍未就绪Surya 会抛出一个SpawnError其中附带llama-server日志的最后 100 行见 spawn.py——这说明二进制已经能找到、但服务启动失败属于另一类问题以那段日志为准继续排查。边界情况有 NVIDIA GPU 的机器不应触发此错误llama.cpp分支只在机器没有 NVIDIA GPU、或你显式设置了SURYA_INFERENCE_BACKENDllamacpp时才会走到。如果你的机器有 NVIDIA GPU自动检测会选vllm见 surya/inference/init.py却仍然报同样的错误说明环境变量显式指定了llamacpp检查并去掉这个设置即可。另外两点容易混淆的边界surya_detect是纯 torch 模型不依赖推理后端缺llama-server也能跑README 的 Limitations 一节明确说明Layout / OCR / table_rec 需要后端detection 不需要。README 的pip install surya-ocr只安装 Python 包不包含llama-server二进制——这也是为什么装完 Surya 后首次使用仍会报本错误必须额外完成上面两种修复之一。【免费下载链接】suryaOCR, layout analysis, reading order, table recognition in 90 languages项目地址: https://gitcode.com/GitHub_Trending/su/surya创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考