快速结论:该报错发生在 Open WebUI 开启「PDF Extract Images (OCR)」后上传特定 PDF 时,OCR 图像提取路径调用 langchain_community 的 PyPDFLoader.extract_images_from_page(),因图像字节数与声明尺寸不匹配而 reshape 失败。优先排查 PDF 图片是否使用了复合 /Filter 数组(如 [DCTDecode, ASCII85Decode])或为无 Filter 的原始像素数据。
适用环境:Issue 已确认环境为 Docker 安装的 Open WebUI v0.11.1,Python 3.11(路径 /usr/local/lib/python3.11/site-packages);崩溃发生在后端 open_webui.routers.retrieval → langchain_community.document_loaders.parsers.pdf。Issue 未提供 CUDA、显卡或 PyTorch 版本信息。
最快修复方案:暂无确认的一步修复方案。Issue 作者确认修复已合入 dev 分支(PR #29251),可切换到 dev 版本验证;在稳定版上可先在 Admin Settings > Documents 关闭「PDF Extract Images (OCR)」,或对扫描件先用 OCRmyPDF 添加文本层后再上传。
注意事项:关闭 OCR 会丢失图像内文字的提取能力,只保留文本层;OCRmyPDF 预处理对纯图片型 PDF 有效,但会增加上传前处理步骤。Issue 中提出的「复合 Filter 取首个可识别 filter、字节数校验后跳过异常图片」属于对 extract_images_from_page() 的代码层修补,langchain-community 已 sunset 不再接受补丁,因此修复需落在 Open WebUI 侧。
问题场景
在 Docker 部署的 Open WebUI v0.11.1 中,于 Admin Settings > Documents 启用「PDF Extract Images (OCR)」,上传包含复合 Filter 图片或原始像素数据图片的 PDF(如扫描件、图文混合 PDF)时,文件处理失败,界面提示「Failed to add file」,后端 OCR 图像提取流程崩溃。
报错原文
ERROR [open_webui.routers.retrieval] cannot reshape array of size 11609 into shape (2954,3753,newaxis)
Traceback (most recent call last):
File "/app/backend/open_webui/routers/retrieval.py", line 884, in process_file
docs = loader.load()
...
File "/usr/local/lib/python3.11/site-packages/langchain_community/document_loaders/parsers/pdf.py", line 147, in _extract_images_from_page
np.frombuffer(xObject[obj].get_data(), dtype=np.uint8).reshape(width, height, newaxis)
ValueError: cannot reshape array of size 11609 into shape (2954,3753,newaxis)
原因分析
报错位于 langchain_community.document_loaders.parsers.pdf.PyPDFLoader.extract_images_from_page() 第 147 行,Issue 指出存在两种失败模式:
- 复合 Filter:图片的
/Filter是数组(例如[DCTDecode, ASCII85Decode]),代码却按单个NameObject处理,xObject[obj]["/Filter"][0]取到数组首元素后,[1:]又错误地剥掉前导/,最终得到无效 filter 名称。 - 原始像素数据:图片没有 Filter(原始像素)时,字节数不匹配
width * height * 1(示例中为 11609 对 2954×3753=11,087,342),数据可能包含 padding、stride 对齐,或属于不同色彩空间,导致 reshape 失败。
该问题自 v0.5.7 起被多次报告(#4457、#6085、#8856、#10913、#11333、#25979,讨论 #8877),说明是长期存在、跨版本的 PDF 图像提取缺陷,而非单次偶发。
环境排查
- Open WebUI 版本:确认是否仍为受影响版本(Issue 确认于 v0.11.1);dev 分支已通过 PR #29251 修复。
- 安装方式:Docker(Issue 已确认)。
- Python 版本:确认是否为 Issue 中的 3.11(路径示例
/usr/local/lib/python3.11/site-packages)。 langchain_community版本:确认langchain_community/document_loaders/parsers/pdf.py第 147 行附近是否为未修补的 reshape 逻辑。- 文档设置:确认 Admin Settings > Documents 中「PDF Extract Images (OCR)」是否开启。
- 触发文件:确认上传的 PDF 是否包含复合
/Filter图片或无 Filter 的原始像素图片(可用 PDF 结构查看工具检查/Filter项)。 - Issue 未提供 CUDA、显卡、PyTorch 版本证据,这些项目无需纳入排查。
解决步骤
- 复现并确认日志:开启「PDF Extract Images (OCR)」后上传问题 PDF,检查后端日志是否出现与上文一致的
cannot reshape array of size ... into shape (...)及pdf.py第 147 行堆栈。 - 临时规避(可优先尝试):在 Admin Settings > Documents 关闭「PDF Extract Images (OCR)」,使上传走纯文本抽取路径。
- 针对扫描件(可优先尝试):在上传前用 OCRmyPDF 等工具为 PDF 添加文本层,再上传,使文本抽取不依赖图像提取路径。
- 若可接受开发版:切换到已合入 PR #29251 的
dev分支版本,验证复合/Filter数组与原始像素数据场景是否不再触发崩溃。 - 若需自行修补:参照 Issue 提出的思路,在
extract_images_from_page()中为复合 Filter 取首个可识别 filter、在 reshape 前校验字节数并在不匹配时记录警告并跳过该图片,同时捕获单张图片 OCR 异常以避免整个文档失败。注意这是 Issue 提出的修复方向,需自行验证。
验证方法
重新上传之前触发崩溃的 PDF:若后端日志不再出现 ValueError: cannot reshape array of size ... into shape (...),文件成功入库且不再提示「Failed to add file」,即视为该问题已规避或修复。若使用 dev 版本或自行修补,建议同时用扫描件、图文混合 PDF 和含复合 Filter 图片的 PDF 各测一份,确认文档可正常上传且异常图片被跳过而非中断整个处理流程。
参考来源
open-webui/open-webui PR #29251
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Bug][ROCm]: DeepSeek V4 accuracy drops with MRV2 on MI350/MI355 when FULL_DECODE_ONLY graph](https://www.chat-gpts.plus/wp-content/uploads/2026/09/52644-e5cd4f06-768x403.jpg)

