☰
RAG 的最后一公里:TeleOCR 结构化输出如何重塑知识库管线
2026/10/17 2:45:50 网站建设 项目流程

RAG 的最后一公里:TeleOCR 结构化输出如何重塑知识库管线

【免费下载链接】TeleOCR项目地址: https://ai.gitcode.com/XingChen-AGI/TeleOCR

当 RAG(检索增强生成)从 Demo 走向生产,绝大多数团队会把精力押注在 embedding 模型调优、reranker 选型和向量库扩容上。但一个被反复验证的事实是:检索质量的上限,早在文档解析那一公里就已经被锁死了。如果 PDF 里的表格被拉平成一行行散乱文字、公式变成一串乱码、多栏排版被按错误顺序拼接,后面无论召回算法多精巧,喂给大模型的都只是一堆语义残缺的碎片。

这正是 TeleOCR 切入的位置。这个基于 Qwen2.5-VL 架构、仅约 1.2B 参数的开源视觉语言模型,把版面分析、OCR 识别、表格结构还原、公式转 LaTeX 统一进一个端到端模型,直接输出带层级结构的 OTSL / HTML / LaTeX 与版面 JSON,并在 OmniDocBench v1.6 上以 96.87 分登顶。本文结合仓库源码,拆解它的结构化输出能力如何真正打通 RAG 知识库管线的"最后一公里"。

非结构化文本的检索损耗:RAG 真正的短板藏在解析端

经典 RAG 管线是五段式:解析(Parse)→ 切块(Chunk)→ 向量化(Embed)→ 召回(Retrieve)→ 生成(Generate)。绝大多数工程文章在讲后四段,却默认第一段"文档已经是干净的文本了"。现实恰恰相反——企业知识库里的文档形态极其恶劣:扫描版合同、手机拍摄的弯折凭证、两栏排版的论文、带合并单元格的财务报表。

传统方案靠多模型流水线硬拼:版面检测模型输出区块坐标,OCR 模型识别文字,表格结构模型还原行列关系,公式模型单独识别,最后还要一个阅读顺序模型把它们串起来。每个环节独立训练、独立推理,误差层层叠加,且中间格式互不兼容。最典型的两类损耗:

  • 表格被"拉平":表格转纯文本流后,表头与数值的对应关系彻底丢失,跨行跨列语义断裂,chunk 边界常常正好切开一个数据单元;
  • 结构信息不进入索引:即便识别出"这是标题/这是表格",传统 OCR 也不产出可被检索系统消费的层级元数据。

TeleOCR 用一组实测数据说明了"一个端到端模型能比流水线好多少"。在 README.md 记录的 OmniDocBench v1.6 榜单上,TeleOCR 以 1.2B 参数拿下Overall 96.87、表格 Table TEDS 97.05 / TEDS-S 98.52、阅读顺序编辑距离 0.122;作为对照,通用大模型 Qwen3-VL-235B 总分仅 89.78,GPT-5.2 为 86.52——1.2B 的专用模型反超 235B 通用模型近 7 分,差距主要就来自表格、公式、阅读顺序这些结构化任务。

更关键的是对真实世界文档的鲁棒性。TeleOCR 通过几何感知建模、CGDP 曲率引导采样、内容-结构解耦学习等机制,把文档矫正能力内化进模型本身,对手机拍摄的扭曲、倾斜、透视变形文档无需预矫正即可直接解析:Wild_OmniDocBench 上 88.53 登顶,PureDocBench 真实退化文档上 70.85 领先所有参比模型。对知识库场景这意味着:录入环节不再依赖扫描仪和平整 PDF,随手拍的照片也能进索引。

从 OTSL 到 HTML:结构化输出如何变成检索友好的层级

TeleOCR 的输出不是一个纯文本字符串,而是一套可分层的结构化格式栈。仓库 README.md 的示例代码定义了核心数据结构:

@dataclass class ContentBlock: type: str # text / table / equation / code ... bbox: list[float] # 版面坐标 angle: int | None # 倾斜角度 content: str | None OTSL_TOKENS = ["<nl>", "<fcel>", "<ecel>", "<lcel>", "<ucel>", "<xcel>"]

页面被拆解为带 bbox 与阅读顺序的块序列,每一块携带类型标注——这正是检索系统做元数据过滤和语义单元切分的天然依据。其中最值得玩味的设计是表格的OTSL 中间格式:模型不直接生成 HTML(生成式模型直接写 HTML 容易产生标签不闭合、行列错位的结构性错误),而是只用 6 个特殊 token 表达单元格的相对位置与 rowspan/colspan 关系,再由convert_otsl_to_html做确定性还原:

def convert_otsl_to_html(otsl_content: str) -> str: ... if cell.row_span > 1: attrs += f' rowspan="{cell.row_span}"' if cell.col_span > 1: attrs += f' colspan="{cell.col_span}"' html_rows.append(f"<td{attrs}>{html.escape(cell.text.strip())}</td>")

来源:README.md。类似地,post_process会将公式块规范化为$$...$$包裹的 LaTeX,代码块与文本流则原样保留。

这套输出对检索链路的收益是结构性的:

  1. 语义单元化切块:chunk 不再按固定字符数硬切,而是按 HTML 的<tr>、<td>、标题层级做边界切分——一个 chunk 对应一行表格数据或一个条款段落,表头与数值永不分离;
  2. 结构化元数据进入索引:块类型(text/table/equation)、bbox、页码、阅读顺序都可以作为向量检索的过滤条件(metadata filtering),例如"只检索表格类知识"或"只检索某页内容";
  3. 公式可被检索:LaTeX 输出让数学符号不再是 embedding 里的噪声,公式级检索成为可能,这对科研文献类知识库是刚需。甚至科学图表中隐含的数据表也能被直接提取为结构化表格,进一步压缩"图里的知识不可检索"的盲区。

文本与公式的输出同样干净利落:文本块以纯文本流给出(输入样例如下),公式块直接产出标准 LaTeX,供下游数学渲染与公式检索复用。

确定性也是知识库管线的硬要求。仓库 generation_config.json 中temperature: 0.1、top_k: 1、top_p: 0.001的组合使推理接近贪心解码,配合 config.json 中 28 层 decoder 与 32 层 ViT(含fullatt_block_indexes: [7, 15, 23, 31]的窗口注意力与 PatchMerger token 合并)的架构,同一张图多次解析结果稳定,这一点对审计类知识库至关重要——同一份合同不会每次解析出不同的表格结构。preprocessor_config.json 中min_pixels: 3136至max_pixels: 12845056的动态分辨率机制,则让高分辨率长文档与低分辨率拍照件都能被正确缩放编码。

部署侧同样为知识库私有化留足了空间:bfloat16 单卡即可运行,社区已验证 INT4 量化可将显存压到 2GB 以内,GGUF 转换后可用 llama.cpp 做无 CUDA 依赖的 CPU 推理,昇腾 910B NPU 上也有原生部署路径(见仓库 README 的 Community Contributions 记录)。解析模型可以完全跑在本地闭环里,数据不出域。

财务、法律、政务:三条落地链路的共同支点

把以上能力放到具体行业,能看到同一条主链路在不同约束下的形态:影像采集 → TeleOCR 结构化解析 → OTSL/HTML 与版面 JSON → 语义单元切块 + 元数据索引 → 召回问答。

财务自动化。发票、银行回单、财报附注是典型的"表格密集型"文档,且大量以拍照影像形式存在。Table TEDS 97.05 / TEDS-S 98.52 意味着合并单元格、跨页表格的还原精度足以支撑字段级检索——金额、税号、科目明细可以作为独立字段入索引,实现"找出 2025 年所有金额超 X 万的合同"这类结构化查询,而非纯语义模糊匹配。弯折凭证无需预矫正直接解析,显著降低财务共享中心的影像治理成本。

法律风险识别。长合同、判决书、法规汇编的特征是:阅读顺序正确性决定条款语义,跨页表格与多栏排版常见。TeleOCR 的 Read Order Edit 0.122 保证了正文按人类阅读顺序拼接,chunk 不会因分栏错位而语义倒置;在 EMNLP 2026 Dr.DocBench Challenge 中,其 overall 67.96 亦领先 MinerU 2.5 Pro(62.26)与 PaddleOCR-VL 1.6(55.11)。落到工程上,合同可按"条款"而非"页"切块,每条条款携带标题层级与页码元数据,风险条款的定位从"全文搜索关键词"升级为"条款级精确召回 + LLM 风险研判"。

政务服务。办事大厅最常见的输入是市民手机拍摄的申请表、手写-印刷混合表单、多栏宣传页。Wild_OmniDocBench 88.53 与 PureDocBench 真实退化文档 70.85 的成绩,对应的是"随手拍也能稳定进知识库"的容错能力;而私有化部署(INT4 量化 <2GB 显存 / CPU 推理)直接回应政务场景"数据不出域"的合规红线——解析、向量化、检索全链路本地闭环,不需要调用任何外部 API。

结语

RAG 的优化空间从来不只是模型与索引,而是知识的保真度。TeleOCR 的价值不在于把 OCR 识别率又提高了一个点,而在于用 1.2B 参数把"文档"从非结构化的像素流,变成带层级、带结构、带阅读顺序的机器可读数据——表格可查询、公式可检索、版面可导航。当解析端交付的是结构化输出,知识库管线的每一步(切块、索引、召回、生成)都被重新赋予了更高的信息密度上限。这,才是 RAG 最后一公里真正被重塑的地方。

【免费下载链接】TeleOCR项目地址: https://ai.gitcode.com/XingChen-AGI/TeleOCR

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询