#16024·LibreChat

上传的 .docx 文件中的表格以一张平面的单元列表的形式传递到模型中

作者: L4XB创建于 2026年9月16日更新于 2026年9月16日

发生了什么事?

上传的 ".docx " 中的每个表格都作为单元格值的平面列表到达模型。 packages/api/src/files/documents/crud.ts'中的wordDocText'称为`mammoth.extractRawText',而mammoth的原始文本写作没有表格支持:它将每个单元格作为自己的段落发出,并完全去掉行和列结构。

  • 复制步骤

在 " .docx " 中建立一个三栏表,并按同一个调用法运行。 反对`eaa91b3':

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? c. 具有下列特性之一: const 生 = 等待 mammoth.extractRawText({缓冲:fs.readFileSync ('table.docx')});


文件:

地区 产品 单位
| -- -- -- -- -- -- -- -- -- -- -- -- --
欧盟有线电视 12个
美国 枢纽 7 |

" 摘录 " 返回,逐字记录:

入正段经.

地区

产品

单位

欧盟

有线

第12条

美国

枢纽

第7条

结尾段落。


`12'不再与`欧盟 ' 或`单位 ' 有关,`美国 ' 位于两行之间,仿佛是同一清单中的又一价值。 文字里没有说有桌子在那里

预期行为

单元格与其行和列保持关联,即“excelSheetTotext”已经通过“utils.sheet to csv”将电子表格行合并。 比如说:

地区、产品、单位 欧盟,电缆,12 美国,Hub,7


- 为什么这很重要?

一个表格通常是Word文档中最密集的部分——发票行项,分页,比较,时间表. 在以上文字上询问"欧盟每条电缆支付什么"的模型,除了靠运气是无法正确回答的,因为它所需要的关联在模型看到之前就被摧毁了.

上游没有丢失信息:同一文件中的`mammoth.converttoHtml'返回整个结构。

时间轴 :
<p> 插入段落. </p><tr><tdt><t><p> 注册 </p><t><t><t><p> 生产 </p><t><t><t><t><p> 单位 </p><t><t><t><t><t><tr/r>
<tr><td><p>EU </p></tdt><t><p> 电缆 </p></t><t><t><p> 12 </p></tdd></tr>. </table><p> 关闭段落. </p>

我查了两件事情 才不花你时间

  • `mammoth.convertto Markdown ' 帮了大忙——它的减速写作机平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平
  • 因此,固定意味着转换Mammoth的HTML,而不是其原始文本,这是一个架构调用,而不是一行:packages/api'今天没有HTML到文本的转换器,尽管jsdom'和sanize-html'已经是同级依赖,而html.ts'拥有这一管道的HTML侧.

我用回归测试复制了这个 我很乐意打开公关 但我不想为你选择转换方法 如果你告诉我,你喜欢哪一种——一个小的局部渲染器,而不是母马的HTML,在‘html.ts'中重用某种东西,或者转换器依赖性——我将用这种方式来构建它。

环境

  • LibreChat源,位于主要'上的eaa91b3'
  • mammoth' 1.1.1.0, 以package/api/package.json'为标本 -Node.js 24.2.0 马可斯
  • 以来源而不是运行中的例子为由复制;失败出现在解析器中,出现在 . . . . . . .

内容来源: danny-avila/LibreChat