版面、表格与阅读顺序

本节目标

理解为什么文本全对仍可能“文档不可用”,并为段落、表格和阅读顺序建立结构化表示。

版面不是装饰

两栏论文若按坐标逐行交替拼接,会把左栏第一行接到右栏第一行。页眉页脚若重复进入每页正文,会污染检索。版面分析(layout analysis)先把页面划分为标题、段落、表格、图片、公式等区域,再在区域内排序。

基本排序策略可以从几何规则起步:按栏分组,再按 top 排序。但跨栏标题、侧边注和竖排文字会破坏简单规则。工程上应保留:

  • block_id、block_type 和坐标;
  • order 或显式的 next_block_id;
  • 页眉页脚标记,而不是直接删除;
  • 生成排序的方法与版本。

表格是二维结构

把表格仅转为制表符文本会丢失合并单元格和表头层级。建议输出:表格边界、行列数量、每个单元格坐标、row_span/col_span、单元格文本与来源框。表格评测至少分三层:

  1. 表格区域是否被找到;
  2. 行列与合并关系是否正确;
  3. 单元格文字是否正确。

“结构正确但一个金额错”和“文字全对但列错位”是不同故障,修复路径也不同。

表格进入检索前仍是结构

面向 RAG 或抽取 Agent 时,先保存表格 JSON(表、行、列、单元格、span、表头路径与坐标),再按问题把相关单元格渲染为文本/Markdown。若先把整表压平为一段文本再切分,行列归属、单位和表头很容易被错误拼接;每个检索片段还应能回到 page 与 cell ID。

处理顺序

页面 -> 版面区域 -> 区域内文字/表格识别 -> 阅读顺序 -> Markdown/JSON 导出

PaddleOCR 官方 PP-StructureV3 文档展示了布局块、阅读顺序和表格结果等输出字段;字段会随版本变化,因此应在适配层转成自己的稳定契约。

练习与自测

  • 画一个“两栏正文 + 跨栏标题 + 页脚”的块图并给出顺序。
  • 对 2×3 表格设计一个含横向合并单元格的 JSON。
  • 如果导出的 Markdown 看似正常,是否可删除坐标?不可以;坐标是回溯证据与纠错入口。

下一步与参考

下一步学习 语言后处理与置信度。参考 PaddleOCR PP-StructureV3 官方文档 与 Layout Detection 官方文档(latest/version3.x,获取日期:2026-07-22)。