丑梨AI 完成业务升级:高性能文档压缩 × RAG 数据工程基座了解新业务 →

扫描件PDF的OCR与版面分析:本地推理方案

结论先行:扫描件 PDF 的解析靠“版面分析 + OCR”两段式本地推理完成,不依赖任何云端服务。私有化部署下,OCR 与版面模型都跑在本地 ONNX 运行时,数据不出域。

一、为什么扫描件是解析难点

扫描件本质是一张张图片,没有可选中的文字层。直接丢进只认文字层的解析器,得到的要么是空文本,要么是乱码。盖章合同、报销凭证、历史档案、政务红头文件的扫描批次在真实语料里占比不小,这类数据绕不开,只能正面处理。

正确做法是两段式:先做版面分析定位文字块,再用 OCR 把图像变成文字。两者缺一不可——只做 OCR 不做版面,字虽然认出来了,但顺序、层级、归属全乱;只做版面不做 OCR,拿到的是一堆带坐标的空框。两段串起来,扫描件才能变成可检索的文本。

实践中常见的绕路是直接把整页图片塞给通用多模态模型。这条路演示可行,批量跑不动:页数一多,耗时和费用都线性上涨,识别结果还难以结构化校验,解析完不知道对错。走版面加 OCR 的两段式,每一步都有中间产物可检查,出了问题能定位到具体环节,而不是对着一张最终文本猜。

二、双模型本地推理

DeepDoc 版面分析用 layout.onnx 与 tsr.onnx 两个模型在本地做 ONNX 推理:前者定位标题、段落、表格、图片等区域,后者做表格结构识别(TSR)。OCR 识别使用 PP-OCRv6,PDF 渲染走 PDFium。整套链路没有任何一步调用外部 API,满足金融、政务等数据不出域的硬要求。

本地推理不只是合规问题,也是成本与稳定性问题。批量入库几万页扫描件时,按页调用云端 OCR 会产生持续费用,还把数据可用性押在外部服务的可用性上。模型跑在本地 ONNX 运行时,吞吐随机器配置扩展,断网也能继续跑,私有化交付时的安全评审也少一轮。

三、保住三样东西

扫描件解析最怕“字识别对了、结构全丢了”。本地方案要同时保留:阅读顺序(哪段在前哪段在后)、坐标(文字块在页面什么位置)、表格 HTML 结构(含 rowspan / colspan 合并单元格还原)。三者齐全,下游切片才能正确理解版面语义。

保留项作用
阅读顺序避免段落前后颠倒
坐标支撑版面还原与定位
表格 HTML 结构合并单元格正确还原

再往后还有一道清理:扫描件普遍带页眉、页脚、页码和水印,清洗环节自动检测并去除,输出清洗报告留档可查。印章、手写批注这类内容如果涉敏,脱敏必须安排在切片与向量化之前完成——这一步跳过去,后面没有补救机会。

四、把解析质量量化

扫描件解析不能“凭感觉”。我们用 parse_quality 对结构、关系、内容三层打分并给出总体等级。实测中,一份 443 页的 OFD 版式文档完成解析全流程约 124 秒,三层解析质检拿到 0.924 分(结构层满分)。这份文档同时覆盖表格、多栏与图片混排,是扫描批次里典型的难度样本,这样的量化结果正是评测闭环的输入。

分数低不代表整批重跑,而是分诊依据:低分文档进入人工复核或调整参数重试,高分文档直接入库。把质量数字接进评测闭环后,每次更换模型、调整阈值都有前后对照,优化不再靠猜。

扫描件只是解析的一环。想了解扫描件之外的差异化处理,可看 老格式文档解析;想把识别结果接进可检索知识库,见 文档清洗切片策略

落地要点:OCR 路由与三层质检怎么配置

  • 按需路由,不要全局 OCR:文本型 PDF 单份提取小于 200ms,只有扫描件才自动路由 OCR。全局 OCR 会让纯文本 PDF 的解析时间放大几十倍,还会把字体渲染噪点误识别成文字。
  • 版面模型必须本地推理:layout.onnx + tsr.onnx 双 ONNX 模型在本地跑,阅读顺序、坐标与表格 HTML 结构(含 rowspan / colspan)都保留,不依赖云端,扫描件的合规边界才成立。
  • OCR 引擎锁定版本:PP-OCRv6 的识别精度与召回在不同版本间差异明显,锁定版本才能让解析质量可复现、可回归。
  • 用三层质检当验收门:一份 443 页的 OFD 版式文档完成解析全流程约 124 秒,三层解析质检 0.924 分、结构层满分。没有质检分数,你就无法判断这批扫描件能不能入库。

质检分数低时,优先排查版面分析而非 OCR 本身——多数「识别错」其实是阅读顺序错了。表格扫描件的还原细节见表格结构识别,老格式与扫描件混合语料的处理见老格式文档解析

常见问题 FAQ

Q1:扫描件解析为什么不能只做 OCR?

OCR 只负责把图像变文字,不负责理解“哪段是标题、哪段属于同一张表”。必须先做版面分析定位区域,OCR 才有意义,否则文字顺序和结构都会乱,切片拿到的是碎片。

Q2:本地 ONNX 推理和云端 OCR 有什么区别?

本地推理的所有模型(layout.onnx、tsr.onnx、PP-OCRv6)都跑在你自己的机器上,不调用任何外部 API,数据不出域,满足金融政务的合规要求,也没有按页计费的云端成本。

Q3:表格的合并单元格怎么还原?

由 tsr.onnx 做表格结构识别,输出带 rowspan / colspan 的 HTML 结构,合并单元格能被正确还原,而不是被拆成一堆独立小格导致语义断裂。

Q4:扫描件解析质量怎么衡量?

用 parse_quality 对结构、关系、内容三层打分并给总体等级。实测 443 页 OFD 文档全流程约 124 秒,三层质检 0.924 分(结构层满分),低分文档自动进入复核分诊。

需要搭建企业级 RAG 知识库?了解丑梨AI

私有化部署的 RAG 数据工程基座:解析、清洗、脱敏、压缩、切片、治理、评测一站式流水线,全本地推理,数据不出域,单机可部署。