快速结论:该报错通常出现在 Open WebUI 通过 Playwright 加载网页、再由 UnstructuredHTML 提取正文时,页面明明已经渲染成功,但抽取结果只剩导航栏、品牌等少量文本。优先排查 Playwright 渲染后的页面内容是否被 UnstructuredHTML 提取步骤丢弃,而不是页面本身加载失败。
适用环境:Open WebUI 0.11.0,以及当前 ghcr.io/open-webui/open-webui:main(digest sha256:6a773e5c3a246b65cbe74ce942b294292c0e5f81c138f703d111bc162f7d7c3d);Docker 部署;Synology DSM 7.4(Linux x86_64)。Issue 未提供 Python、CUDA、显卡、浏览器版本或 Ollama 版本信息,无需据此推断。
最快修复方案:暂无确认的一步修复方案。Issue 中提出的修复方向是:保留结构化提取作为默认路径,仅当结构化提取为空,或规范化后的结构化结果明显小于已渲染正文(正文至少 500 字符且至少为结构化结果的 3 倍)时,回退到渲染后的页面正文文本。该方案已由提交者在 dev 分支(ffda8aea8)复现并准备 PR,但尚未合并发布;可优先尝试等待或合入该 PR 后验证。
注意事项:回退逻辑仅在“结构化提取异常收缩”时触发,正常结构化输出不会被替换;渲染正文在 evaluator 运行后读取,因此已配置的 remove_selectors 仍会生效。正文读取失败被设计为非致命错误,不会中断加载。上述行为来自提交者描述的待合并方案,是否进入正式版本、是否影响其他文档元数据需以实际合并结果为准。
问题场景
用户在 Open WebUI 中使用 Playwright web loader 抓取网页时触发该问题。以 Ubiquiti Tech Specs 页面为例,Playwright 已正确渲染页面,渲染后的 innerText 约 3115 字符,但 PlaywrightURLLoader evaluator 输出只有 131 字符,只剩导航和品牌类文本,规格数据全部丢失。相同现象在 Open WebUI v0.11.0 上也能复现。
报错原文
bug: Playwright web loader loses rendered page content during UnstructuredHTML extraction
Rendered innerText: 3115 chars
Evaluator output: 131 chars
'25G': rendered=True, evaluator=False
'720W': rendered=True, evaluator=False
'460 Gbps': rendered=True, evaluator=False
'230 Gbps': rendered=True, evaluator=False
'342 Mpps': rendered=True, evaluator=False
evaluator 实际只返回了以下内容:
UniFi
UISP
Branding
Cloud Gateways
Switching
WiFi
Physical Security
Door Access
Integrations
Advanced Hosting
Accessories
原因分析
问题不在 Playwright 渲染阶段。Issue 中的对照测试显示,完整数据同时存在于渲染后的 DOM 和序列化 HTML 中:
Rendered innerText: 3322 chars
Serialized page HTML: 595591 chars
Unstructured result: 131 chars
'25G': innerText=True, HTML=True, unstructured=False
'720W': innerText=True, HTML=True, unstructured=False
...
因此可能原因是:页面内容在后续 UnstructuredHTML 结构化提取阶段被丢弃,提取器把大量正文判定为可忽略内容,只保留了导航、品牌等少量文本。提交者在 dev 分支复现后描述的触发条件为:结构化提取结果为空,或规范化后的结构化结果相对已渲染正文出现异常收缩。
环境排查
- 确认 Open WebUI 版本:Issue 中涉及 0.11.0 与
ghcr.io/open-webui/open-webui:main(digestsha256:6a773e5c3a246b65cbe74ce942b294292c0e5f81c138f703d111bc162f7d7c3d)。 - 确认部署方式为 Docker(Issue 中为 Docker / Synology Container Manager)。
- 确认操作系统:Synology DSM 7.4(Linux x86_64)。
- 确认是否使用了 Playwright web loader 及其相关 evaluator / UnstructuredHTML 提取路径。
- Issue 未提供 Python、CUDA、PyTorch、显卡、浏览器和 Ollama 版本,排查时无需假设这些版本相关。
- 对照渲染结果与提取结果:分别输出渲染后
innerText字符数与 evaluator 输出字符数,判断是否出现异常收缩。
解决步骤
- 在出现问题的 Open WebUI 实例中,用 Playwright 加载目标网页,记录渲染后
innerText是否包含预期规格数据(例如25G、720W、460 Gbps)。 - 查看
PlaywrightURLLoaderevaluator 的输出字符数,与渲染后innerText字符数对比,确认是否只剩导航/品牌文本。 - 若确认是 UnstructuredHTML 提取阶段丢内容,可优先尝试 Issue 中提交者提出的修复方案:在结构化提取为空,或规范化结构化结果明显小于已渲染正文(正文至少 500 字符且至少为结构化结果的 3 倍)时,回退到渲染后的页面正文文本。
- 该回退逻辑应在 evaluator 运行后读取渲染正文,以保留已配置的
remove_selectors;同时对正文读取失败做非致命处理,并覆盖同步与异步 loader 路径。 - 在合入或等待该修复前,可先确认该 PR 是否已进入你使用的镜像版本,再决定是否升级或临时替换加载逻辑。
验证方法
使用同一 Ubiquiti Tech Specs 页面进行回归验证:
HTTP status: 200
Rendered body: 3115 chars
Unstructured output: 131 chars
Proposed output: 3115 chars
'25G': extracted=False, rendered=True, proposed=True
'720W': extracted=False, rendered=True, proposed=True
'460 Gbps': extracted=False, rendered=True, proposed=True
'230 Gbps': extracted=False, rendered=True, proposed=True
'342 Mpps': extracted=False, rendered=True, proposed=True
若应用修复后,evaluator 输出字符数恢复到与渲染正文相近的水平,且上述规格值均能在提取结果中命中,即可确认问题已解决。同时应检查正常结构化输出、短页面、缺失渲染正文和空白字符规范化场景未被回退逻辑破坏。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


