一份 120 页 PDF,三类 AI 解析方案为什么没有“全能冠军”

三个工具都提示“解析成功”。

但当结果被送进统计程序,一张跨页表格的金额列和项目列整体错位;扫描页漏掉了小数点;双栏页面则先读完左上角,又跳到右下角,拼出了一段语法正确、逻辑完全错误的文本。

真正的问题不是 AI 能不能读 PDF,而是你要花多久才能发现它读错了。

很多文档解析工具几分钟就能完成任务,结果却可能让人修上两小时。对个人用户,这意味着浪费一个下午;对每天处理上千页文件的团队,则意味着持续增加的人工成本和数据风险。

因此,评测 PDF 解析工具不能只盯着一个“准确率”。真正决定方案能否进入生产流程的,是四项成本的综合结果:

可用准确率、处理速度、人工返工时间和隐私成本。

需要先说明的是:本文给出的是一套可复现的统一横评方法。由于没有提供原始测试 PDF、具体服务账单和三次运行日志,文中不会凭空填写准确率、耗时或价格,更不会虚构一个“冠军”。正式发布实测结果时,应把文中的待测字段替换为真实记录。

一份普通 PDF,测不出工具的真实水平

如果测试文件只有原生文本、单栏排版和清晰字体,大多数工具看起来都不错。

这类测试最多能回答一个问题:工具能不能把 PDF 里的字读出来。

但生产环境里的文档往往是混合体:

  • 前几十页是可以复制的原生文本;
  • 中间夹着合并单元格、嵌套表头和跨页表格;
  • 附件是多年前扫描的合同或档案;
  • 页面带有印章、手写批注、页眉和水印;
  • 双栏正文旁边还放着图片注释;
  • 一张表格可能从第 38 页延续到第 41 页。

当这些内容出现在同一份长 PDF 中,工具之间才会真正拉开差距。

本次统一横评覆盖三类方案,而不是简单罗列几个品牌:

方案 A:专业文档解析或 OCR API

这类服务通常把 OCR、版面分析、表格识别和结构化输出封装成接口,优势是接入快、输出相对稳定,适合企业批量处理。

它的关键问题是:复杂表格能否稳定输出为 HTMLJSON,扫描件预处理是否成熟,以及价格能否承受长期调用。

方案 B:多模态大模型直接解析

把页面或 PDF 交给多模态模型,并通过提示词要求输出 Markdown、字段列表或 JSON。

它的优势是理解能力强,能结合上下文解释标题、注释和字段含义;缺点则是长文档容易受到上下文、输出长度和格式稳定性的影响。

“模型看懂了”不等于“程序可以直接使用”。

方案 C:开源 OCR+版面分析+大模型整理

先用本地 OCR 识别文字,再通过版面分析恢复区域和阅读顺序,最后让大模型清洗格式、合并段落或修复表头。

这类组合方案拥有更强的可控性和隐私优势,但部署、调参和维护门槛也最高。任何一个环节出错,都可能把问题传递到下一步。

怎么测才公平:先定义“正确”

一份 120 页 PDF,不能随便跑一遍就开始比较。

首先要公开测试集构成。下面是根据本文大纲设计的示例样本结构,并非已经完成实测的数据。实际使用时,必须根据真实文件逐页核对,不能为了数字整齐而调整分类。

| 页面类型 | 示例页数 | 主要难点 | |---|---:|---| | 原生文本页 | 45 | 标题层级、段落顺序 | | 简单表格页 | 20 | 单元格内容准确率 | | 复杂及跨页表格 | 18 | 合并单元格、错列、表头延续 | | 扫描页 | 25 | 模糊、倾斜、噪点 | | 双栏及混合版式 | 12 | 阅读顺序、图片与注释 | | 合计 | 120 | — |

如果原始文件涉及版权、合同或个人信息,文章截图必须脱敏。手机号、身份证号、公司名称和金额等敏感字段,需要遮挡或替换。

更稳妥的办法,是额外提供一套具有相同结构的匿名样本,让其他人可以复现,而不是只展示无法公开的内部文件。

Ground Truth 不能只是一份“看起来正确”的文本

人工校对的标准答案,也就是 Ground Truth,至少要保留三层信息:

1. 文字层:字符、标点、数字和单位是否正确;

2. 结构层:标题、段落、列表、表头和单元格关系是否正确;

3. 语义层:关键字段是否被放进正确位置。

例如,数字“128.50”被识别成“12850”,字符层只错了一个小数点,但业务含义已经完全改变。再比如表格内容全部识别正确,却整体向右错了一列,字符准确率可能仍然很高,下游统计却无法使用。

六项指标,比一个总分更有意义

本文建议分别记录:

  • 正文字符准确率
  • 表格单元格准确率
  • 表格结构还原率
  • 阅读顺序正确率
  • 扫描页识别率
  • 关键字段提取准确率

如果确实需要生成加权总分,可以使用下面这组权重:

| 指标 | 权重 | |---|---:| | 表格单元格准确率 | 25% | | 表格结构还原率 | 20% | | 正文字符准确率 | 20% | | 阅读顺序正确率 | 15% | | 扫描页识别率 | 10% | | 关键字段准确率 | 10% |

表格相关指标占比更高,是因为表格错误往往比普通文本错误更难发现,也更容易影响统计、财务核对和知识库检索。

但总分不能单独使用。还应增加一个业务指标:

可直接交付页比例:无需人工修改,或只需轻微调整格式即可交付的页面占比。

这是“模型输出准确率”和“结果真正可用”之间最重要的分界线。

统一运行条件,避免把网络波动当成能力差异

三类方案应使用同一份输入文件、同一目标格式和同一统计口径。

建议每种方案至少运行三次,并记录中位数,而不是只挑速度最快的一次。统一记录以下内容:

  • 首字节时间;
  • 总处理时间;
  • 失败和重试次数;
  • 输出文件大小;
  • 人工修正分钟数;
  • API 调用费或本地算力费;
  • 最终可直接交付页数。

多模态模型还需要统一提示词、图片分辨率和输出格式;本地方案则要公开硬件、OCR 模型、版面分析组件和参数。

否则比较的并不是方案本身,而是三套完全不同的实验条件。

结果总表:不要在没有日志时制造“精确排名”

下面这张表可以直接用于正式测试。由于本文没有拿到真实运行记录,所有结果栏均保留为“待实测”,避免把示意数字包装成评测结论。

| 指标 | 方案 A:专业 API | 方案 B:多模态模型 | 方案 C:本地组合 | |---|---:|---:|---:| | 正文字符准确率 | 待实测 | 待实测 | 待实测 | | 表格单元格准确率 | 待实测 | 待实测 | 待实测 | | 表格结构还原率 | 待实测 | 待实测 | 待实测 | | 阅读顺序正确率 | 待实测 | 待实测 | 待实测 | | 扫描页识别率 | 待实测 | 待实测 | 待实测 | | 关键字段准确率 | 待实测 | 待实测 | 待实测 | | 可直接交付页比例 | 待实测 | 待实测 | 待实测 | | 首次处理耗时 | 待实测 | 待实测 | 待实测 | | 三次运行中位耗时 | 待实测 | 待实测 | 待实测 | | 失败及重试次数 | 待实测 | 待实测 | 待实测 | | 纯工具成本 | 待实测 | 待实测 | 待实测 | | 人工修正时间 | 待实测 | 待实测 | 待实测 | | 综合成本 | 待实测 | 待实测 | 待实测 |

正式填写价格时,必须同时注明:

  • 测试日期;
  • 按页、按 Token 还是按任务计费;
  • 使用的汇率;
  • 是否包含免费额度;
  • 本地算力是否计算折旧、电费或云主机费用。
价格不带计费口径,就没有可比性。

最快的不一定最省时间

这类评测最容易出现三次排名变化。

第一次只看处理速度,最快完成的方案似乎领先。

第二次加入表格、扫描件和阅读顺序准确率后,排名可能改变。一个几分钟就生成结果的方案,如果把跨页表格拆成几段普通文本,就很难直接进入数据库。

第三次加入人工返工时间,排名还会变化。处理速度稍慢、但能稳定输出 HTMLJSON 的方案,综合成本反而可能更低。

因此,最终结论不应该是“某个工具全面第一”,而应拆成场景判断:

  • 谁的复杂表格最稳定;
  • 谁更擅长低清扫描件;
  • 谁适合低成本批量处理;
  • 谁的结构化输出更适合程序调用;
  • 谁更适合敏感数据和本地部署。

返工成本,才是最容易漏算的大头

四组对比截图是整篇评测中最关键的证据:

1. 复杂表格:原始页面与三种输出并排,红框标出错列、漏列和合并单元格错误;

2. 模糊扫描页:标出漏字、小数点、单位和相似字符错误;

3. 双栏页面:用箭头展示正确阅读顺序,标出段落穿插位置;

4. 跨页表格:检查下一页能否延续表头、列宽和字段关系。

不要只放四张完整页面,让读者自己“找不同”。每组图都应附上错误说明、影响范围和修复方法。

截图建议:原 PDF 放在左侧,三类方案输出依次排列;错误位置用红框,人工修正结果用绿色高亮。涉及敏感信息时,先脱敏再标注。

逐页返工记录应该怎么做

| 页码 | 错误类型 | 严重程度 | 是否影响下游 | 修复方式 | 修复时间 | 参数可否避免 | |---|---|---|---|---|---:|---| | 待记录 | 表格错列 | 待评级 | 是/否 | 重建列结构 | 待计时 | 待验证 | | 待记录 | 扫描页漏字 | 待评级 | 是/否 | 对照原图补录 | 待计时 | 待验证 | | 待记录 | 阅读顺序错误 | 待评级 | 是/否 | 重排文本块 | 待计时 | 待验证 | | 待记录 | 跨页表头丢失 | 待评级 | 是/否 | 补表头并合表 | 待计时 | 待验证 |

错误类型分布图也应基于这张逐页记录生成,而不是凭印象总结。

真正的成本公式是:

综合成本=工具调用费+本地算力费+失败重试费+人工校对时间×人力单价

人工成本可以分别按 50 元、100 元、200 元/小时做敏感性分析。

同一套方案,对个人用户可能只是“多花一点时间”,对高人力成本的专业团队却可能立刻失去性价比。返工时间一旦被纳入,低价接口未必便宜,免费开源方案也未必免费。

一张决策树,比排行榜更适合选型

偶尔处理几份 PDF

优先选择无需部署、可以直接上传或调用的方案。

你的核心成本不是每页价格,而是学习和维护时间。除非文件含有敏感信息,否则没必要为了几份文档先搭建完整 OCR 流水线。

表格、财报和报表居多

重点检查:

  • 能否输出 JSONHTML 或单元格坐标;
  • 是否支持合并单元格;
  • 跨页表格能否延续表头;
  • 数字、负号、小数点和单位是否稳定;
  • 输出能否通过程序进行结构校验。

这类场景应优先考虑结构识别稳定的专业解析方案,而不是只看模型能否把页面“描述出来”。

扫描档案居多

重点考察 OCR、倾斜校正、去噪、旋转检测和低清图片处理能力。

最好把最模糊、印章最多、纸张底色最深的页面放进小样。清晰扫描页测试得再好,也不能代表历史档案的真实表现。

每天批量处理

不要只看单次演示,要检查:

  • API 并发限制;
  • 超时与重试机制;
  • 任务状态能否查询;
  • 是否支持断点续跑;
  • 失败任务是否重复计费;
  • 单位页成本是否稳定;
  • 输出格式升级后是否向后兼容。

批量场景中,稳定性往往比单页最高准确率更重要。

包含敏感数据

优先考虑本地部署、上传前脱敏和最小化日志留存。

还要确认服务是否保存原文件、保存多久、是否用于模型训练,以及团队内部谁有权限查看解析结果。隐私成本不一定直接体现在账单里,但一旦发生问题,代价通常远高于 API 费用。

最小可复现调用示例

下面代码只展示“上传文件—轮询任务—保存结果”的通用流程。YOUR_DOCUMENT_ENDPOINT、请求参数和返回字段均为示意写法,不代表 8848AI 当前已经提供同名文档解析接口。实际接入前,请访问平台查看当前接口文档并替换。

import json

import time

import requests

BASE_URL = "https://api.884819.xyz"

API_KEY = "YOUR_API_KEY"

DOC_ENDPOINT = "/YOUR_DOCUMENT_ENDPOINT"

headers = {

"Authorization": f"Bearer {API_KEY}"

}

with open("sample.pdf", "rb") as file:

response = requests.post(

f"{BASE_URL}{DOC_ENDPOINT}",

headers=headers,

files={"file": file},

data={

"output_format": "json",

"table_format": "html"

},

timeout=120

)

response.raise_for_status()

task = response.json()

以下字段为示意,必须根据实际接口文档修改

task_id = task["id"]

while True:

response = requests.get(

f"{BASE_URL}{DOC_ENDPOINT}/{task_id}",

headers=headers,

timeout=30

)

response.raise_for_status()

result = response.json()

if result["status"] == "completed":

break

if result["status"] == "failed":

raise RuntimeError(result)

time.sleep(3)

with open("result.json", "w", encoding="utf-8") as file:

json.dump(result, file, ensure_ascii=False, indent=2)

print("解析结果已保存至 result.json")

进入批量处理阶段后,还应补充指数退避重试、并发控制、结果字段校验和异常页记录。尤其不要在接口返回 completed 后就默认结果正确,至少要检查页数、表格数量、关键字段和空白页面。

最后,不要先买套餐,先测最难的 10—20 页

如果你也想用自己的 PDF 做同样的横向测试,不要一上来就上传整份正式文件,更不要先购买大额套餐或搭建复杂系统。

先抽取最难的 10—20 页:

  • 一张合并单元格最多的表;
  • 一组跨页表格;
  • 两三页最模糊的扫描件;
  • 一页双栏或图文混排内容;
  • 一页带印章、批注或水印的文件。

然后统一记录处理时间、结构化输出、失败重试次数和人工修正分钟数。访问 api.884819.xyz 查看当前可用接口和调用方式,再根据实际文档替换本文脚本中的示意路径。

8848AI 使用用户名和密码即可注册,不需要邮箱验证;平台内置 AI 对话功能,注册后可以直接使用。国产模型如 Deepseek、千问等完全免费,没有月租和订阅,其他服务按量付费。

新用户注册即送体验token。

最后记住这句选择公式:

先用最难的 10—20 页做小样测试,再根据真实返工时间决定是否扩展到整批文档。

这次测试解决的是“怎样把 PDF 尽可能准确地解析出来”,但解析完成,并不代表数据已经能安全进入知识库。

下一篇,我会把三种解析结果分别送入 RAG 流程,测试同一个问题在不同切块方式、表格格式和页码引用策略下,答案会出现怎样的差异——尤其是表格被拆成纯文本之后,模型到底还认不认得原来的行列关系。

本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。

#AI文档解析 #PDF解析 #OCR #多模态模型 #RAG #AI教程 #8848AI