Surya 2 如何用 SURYA_GUIDED_LAYOUT 开启或关闭 JSON schema 约束解码?
Surya 2 如何用 SURYA_GUIDED_LAYOUT 开启或关闭 JSON schema 约束解码【免费下载链接】suryaOCR, layout analysis, reading order, table recognition in 90 languages项目地址: https://gitcode.com/GitHub_Trending/su/surya在 Surya 2 中跑 layout 分析时模型的原始输出是一段 JSON。SURYA_GUIDED_LAYOUT就是控制这段输出是否走 JSON schema 约束解码的开关开启后layout 的 decode 被限制在LAYOUT_JSON_SCHEMA的结构之内从结构上杜绝畸形 JSON关闭后模型自由解码再由客户端解析。本文覆盖该开关的默认值、开启/关闭的方法、它的取舍以及如何确认设置已生效。适用前提与 README 一致layout 依赖一个正在运行的推理后端NVIDIA GPU 用vllmCPU / Apple Silicon 用 llama.cpp 的llama-server后端由SuryaInferenceManager首次调用时自动拉起。本功能只对 layout 生效table_rec 有另一个独立开关见后文。SURYA_GUIDED_LAYOUT 的默认值与作用点定义在 surya/settings.py# Force layout/table_rec output through a JSON schema via guided decoding. # Eliminates malformed-JSON failures at small decode-throughput cost. SURYA_GUIDED_LAYOUT: bool True两点可以直接从源码读出默认开启True。README.md 的 Inference Backends 配置表中也确认SURYA_GUIDED_LAYOUT默认值为true说明为 JSON-schema-constrained layout decode。它只在layout环节生效。surya/layout/init.py 在每次调用时读取该设置决定是否把 schema 传给推理管理器guided LAYOUT_JSON_SCHEMA if settings.SURYA_GUIDED_LAYOUT else None如何开启或关闭用环境变量Surya 的设置基于 pydantic-settingsConfig中通过find_dotenv(local.env)加载.env文件见 surya/settings.py。README 也明确说明可以覆盖任意设置项例如# 默认即开启显式声明也可以 export SURYA_GUIDED_LAYOUT1 # 关闭约束解码 export SURYA_GUIDED_LAYOUT0也可以把这两行写进项目的local.env文件效果相同。在 Python 中切换如果你在脚本里调用LayoutPredictor可以直接修改settings对象from surya.layout import LayoutPredictor from surya.inference import SuryaInferenceManager from surya.settings import settings # 关闭约束解码默认是开启的 settings.SURYA_GUIDED_LAYOUT False layout_predictor LayoutPredictor(SuryaInferenceManager()) layout_predictions layout_predictor([image])注意设置是在每次调用时读取的所以同一进程内改settings.SURYA_GUIDED_LAYOUT对下一次调用立即生效。开启的代价与收益源文档对该开关的评价只有一句话settings.py 注释Eliminates malformed-JSON failures at small decode-throughput cost.即消除畸形 JSON 失败代价是少量解码吞吐。需要区分两层失败约束解码保证的是输出符合 schema 结构顶层是数组最多 200 项见 surya/inference/prompts.py每项必须是label枚举于LAYOUT_LABEL_SET、bboxx0 y0 x1 y1数字串、count0–10000 的整数三个字段。客户端仍然会解析原始输出。即使开启约束解码解析抛异常时 surya/layout/init.py 也会把该页标记为errorTrue并打一条Layout parse failed: ...的警告日志日志里附带原始输出前 300 字符便于排查。相邻开关SURYA_GUIDED_TABLE_REC 默认是关闭的table_rec 有对应的开关SURYA_GUIDED_TABLE_REC默认False。surya/settings.py 的注释给出了原因TABLE_REC_JSON_SCHEMA没有minItems约束解码器在temperature0时会在生成一个元素后就关闭数组而模型不带 schema 时能产出格式良好的 JSON。所以做 layout 时保持SURYA_GUIDED_LAYOUT默认开启即可不要把这个经验照搬到 table_rec。如何确认开关生效按上面的方式设置环境变量或修改settings后运行surya_layout DATA_PATH其中DATA_PATH可以是图片、PDF 或图片/PDF 文件夹--output_dir可指定结果输出目录。检查输出目录下的results.json。按 README.md 对 layout 输出的说明每页的error字段true表示该页的 layout 调用失败raw字段layout 模型输出的原始 JSON专门用于调试可以对照检查输出是否符合LAYOUT_JSON_SCHEMA的结构label/bbox/count三个字段bboxes按阅读序排列的布局框label已被归一化如Text、Table、SectionHeader并带有position阅读序、count、confidence。如果日志中出现Layout parse failed警告说明即使未开启约束解码解析环节仍出了问题可按日志中附带的 raw 前 300 字符定位原因。限制该开关只作用于 layout 的 JSON 输出OCR 全文HTML 输出和 table_rec 不走这个开关。开启约束解码有少量解码吞吐代价源文档的表述是 small decode-throughput cost未给出具体数值关闭则可能重新出现畸形 JSON 导致的解析失败。推理后端必须在场layout / OCR / table_rec 都需要 vllm 或 llama.cpp 服务在运行只有文本线检测可以脱离 VLM 单独工作。【免费下载链接】suryaOCR, layout analysis, reading order, table recognition in 90 languages项目地址: https://gitcode.com/GitHub_Trending/su/surya创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

基于Spring Boot + Vue的竞赛管理系统全栈开发实战解析

基于Spring Boot + Vue的竞赛管理系统全栈开发实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 15:34:27 阅读更多 →
变压器流固耦合温度场仿真:从电磁场到热点的完整链路

变压器流固耦合温度场仿真:从电磁场到热点的完整链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/1 18:16:26 阅读更多 →
Mac外接硬盘选NTFS还是ExFAT?文件系统与数据安全深度解析

Mac外接硬盘选NTFS还是ExFAT?文件系统与数据安全深度解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 21:01:33 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/5 12:28:00 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/6 9:29:27 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/5 12:28:01 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/5 12:28:02 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/6 8:08:42 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/5 19:38:59 阅读更多 →

日新闻

周新闻

月新闻