跳转至

文档解析方案 v1

1. 方案目标

针对不同文档格式直接使用对应的原生解析库,避免依赖 LibreOffice 做格式转换,降低多图文档卡住、转换超时和 Docker 构建体积过大的风险。

当前方案优先保证文本、段落和复杂表格结构的稳定提取;扫描 PDF 暂不进行 OCR。标书、清单和知识库解析默认忽略图片,产品库中的产品图片及图库的文档抽图能力按业务需要单独保留。

2. 格式与解析方案

格式 解析方案 具体作用 图片策略
.doc Apache POI HWPF 直接读取旧版 Word OLE 文件,提取段落、逻辑表格网格、横纵合并单元格和多行表头,无需先转换为 .docx。 标书、清单和知识库忽略图片;图库需要抽图时,通过 HWPF PicturesTable 导出内嵌图片。
.docx python-docx 直接读取 OOXML Word 文件,提取段落、表格、合并单元格及基础文档结构。 标书、清单和知识库忽略图片;图库需要抽图时,从 DOCX 媒体关系中提取内嵌图片。
.pdf PyMuPDF 直接提取文本型 PDF 的页面文字和文档内容,不经过 Word 中转;扫描型 PDF 暂不处理。 正文解析不理解图片;图库抽图时可提取 PDF 内嵌图片。
.xlsx openpyxl(产品库补充原生 OOXML) 以 openpyxl 读取工作表、单元格、合并区域、公式缓存结果和隐藏行列;产品库当前补充读取原生 OOXML,以获得图片锚点等底层关系。 普通文档解析忽略图片;产品库导入时保留内嵌图片,并按工作表和行位置关联产品。
.xls Apache POI HSSF 直接读取旧版 Excel OLE 工作簿,提取工作表、单元格、合并区域、公式缓存结果以及隐藏行列,无需转换为 .xlsx。 普通文档解析忽略图片;产品库导入时通过 HSSF 提取内嵌图片,并按锚点位置关联产品。

3. 业务范围

业务场景 文本与表格 图片处理
标书解析 按文件格式调用对应解析器,保留正文和表格结构。 跳过,不参与解析。
清单解析 Word、PDF 或 Excel 按对应原生解析器提取结构化内容。 跳过,不参与解析。
知识库解析 提取可检索的正文和表格文本。 跳过,不进入知识库文本;后续如需要图像理解再单独扩展。
产品库导入 使用 Excel 原生结构识别产品字段和数据行。 保留 .xls、.xlsx 中明确的产品图片,并关联到对应产品行。
图库文档抽图 不承担标书正文解析。 支持从 .doc、.docx、.pdf 中提取内嵌图片,再进入图库图片理解流程。

4. 表格处理原则

  • Word 中视觉上跨页的表格,在 .doc 和 .docx 文件结构中通常仍是一张完整表格,解析时按完整逻辑表读取。
  • .doc 表格重点处理逻辑网格、横向合并、纵向合并和多行表头,避免按视觉单元格简单拼接造成列错位。
  • Excel 解析保留合并单元格、隐藏行列和公式缓存结果;产品导入根据约定字段识别表头和数据行。
  • 对表格数量、行数、列数和单元格总量设置安全上限;超过上限时直接结束解析,不对同一确定性错误重复重试。

5. 当前边界

  • 扫描 PDF 暂不执行 OCR,因此纯图片 PDF 可能无法提取正文。
  • 标书、清单和知识库中的图片暂不做语义理解,也不进入正文解析结果。
  • 普通图片文件不作为文档解析输入;图库和产品库图片按照各自业务链路处理。
  • LibreOffice 不再作为上述格式的公共解析依赖。