space ocr
指南文章价格文档
developer

同样的文档,同样的模式,不同的答案: space-ocr vs Mistral

8份高难度文档、463个字段、每个引擎3轮的受控基准测试:字段读取率、多轮稳定性,以及分数表看不到的坐标差距。

6 分钟阅读· 2026-08-08

每家OCR厂商的演示都能完美读出一张干净的打印发票,我们也不例外。但这对你的选型决策毫无信息量。真正重要的问题有三个:碰到难的文档会怎样?同一页跑两次,答案会不会变?不把每个值都人工复核一遍,怎么找出读错的值?

所以我们直接测了。从自家的回归语料里挑出最难的8份文档,给space-ocr和Mistral Document AI发送完全相同的请求,用同一个脚本评分。这篇文章就是结果,方法写得足够细,想反驳的人可以精确地反驳。

设置如下:8份真实文档(几张日文送货单、一张商品名和数量单价分打两行的超市小票、一张对着显示器拍摄的22行批发行情表、一张佣金明细),共463个可评分字段。三个测试组拿到完全相同的图片、字段模式和「按印刷原样提取」的指令:space-ocr生产环境的字段提取API、Mistral OCR加JSON模式注释(mistral-ocr-latest)、Mistral视觉大模型加结构化输出(mistral-medium)。每组跑3轮,按去空白后的精确匹配对照冻结的标准答案评分,72轮原始输出全部存档。2026年8月。

基准测试结果卡:8份文档463个字段,space-ocr 91.1%,Mistral OCR 70.0%,Mistral视觉大模型73.5%
8份高难度文档,463个字段,每组3轮,同样的模式和评分脚本。2026年8月。

先说结果。space-ocr在463个字段中以精确匹配读出91.1%(3轮平均)。Mistral OCR注释是70.0%,视觉大模型是73.5%。为排除格式噪音,我们把只差分隔符或空格的不一致全部剔除,只数内容错误:每轮space-ocr约23个,Mistral两组分别是119个和93个。

在下结论之前有件事值得先说清楚:Mistral认字认得不错。在这组里最干净的文档,那张22行的打印行情表上,Mistral OCR以141中139和我们打平。差距是在文档结构变得棘手时拉开的。在那张商品名一行、数量和单价另起一行的小票上,Mistral每轮13个字段只拿到2.3个:它把合计区块卷进了商品行,配不上那两行。在杂乱的送货单上,数量跑进了规格列。字大多是对的,字落进的表格是错的。

稳定性本身就是一个发现。同样的输入跑3轮,我们的总分波动16个字段,Mistral OCR波动100个。一小时前还能读出72中58的文档,下一轮变成3,43行表格的每一列都被悄悄打乱。响应里没有任何信号告诉你,你刚付费的是哪一种轮次。

并排对比:space-ocr在22行行情表上画出138个字段级方框,Mistral返回一个覆盖整张表的矩形
同一张行情表经过两个引擎。左边每个字段一个锚定框,右边整张表一个区块。

这张图才是真正的论点,而它在任何分数表里都看不到。那张行情表上,space-ocr返回了138个方框,每个字段一个,各自钉在读取它的像素上。Mistral给整张表返回了一个矩形,因为它的响应里根本不存在字段级坐标,任何文档都一样,区块轮廓就是极限。也没有任何校验信号。Mistral读错的时候是悄悄读错的,找出来的唯一办法是全部复核。

space-ocr的每个值都带着方框、说明框下文字是否吻合的text_verified、带原因的needs_review,这个版本起还有ocr_confidence分数,以及给页面上重复出现的值用的label锚点。这次基准测试的诚实总结不是Mistral不会读,干净的印刷品它读得挺好;而是一个API告诉你哪些答案可以信,另一个要求你全信。

✓ Verified

校验的工作方式:语言模型只返回值和词元提示,从不生成坐标。引擎把每个返回值与OCR环节在页面上实际检测到的符号逐字符比对,以match_ratio打分(0.85以上算确信匹配),再让两个引擎互相核对,不一致就成为带原因的needs_review标记。方框是xmin/ymin/xmax/ymax,0到1000归一化。关于上面数字的一条公平性说明:标准答案是按我们管线的输出习惯冻结的,所以包括我们在内的所有实时引擎都会因边界切分差异被扣分。绝对值请当下限看,相对比较才是结论。完整方法和72轮原始输出都有存档。

价格也照基准测试文章的样子直说:每张成功扫描$0.05,失败自动退款,每月前100页免费,不用绑卡。在相信任何人的图表之前,包括这篇文章的,拿你自己的5份文档在两边都跑一遍。下面的步骤就是我们用的流程。

  1. 挑难啃的文档,不要演示样张
    选5到10页真正折磨人的:多行记录、重复的值、拍屏照片、密集表格。干净的样张分不出厂商高下。
  2. 固定一套模式和指令
    字段清单只写一次,用同样的名称和描述原样发给每个引擎。要求按印刷原样返回值。
  3. 先手写标准答案
    在跑任何东西之前,把每个字段的期望值抄下来,之后不再修改。
  4. 每个引擎至少跑3轮
    只跑一轮会掩盖不稳定。所有轮次用同一个脚本评分,看波动而不是只看平均。
  5. 单独统计无声的错误
    每个错误值都记下引擎是否给了标记。带标记的错值只花你一眼,没有信号的错值花的是你在它上面搭的整个流程。
这是说Mistral OCR读不了文档吗?
不是。在干净密集的印刷品上,它的认字和我们打平。我们测到的差距在于文档结构处理(多行记录配对、表格列的保持)、多轮稳定性,以及字段级坐标和信任信号的缺失。
这个基准测试能复现吗?
能。语料定义、实际请求、评分脚本和72轮原始输出全部存档。正文写明了方法:同样的图片、同样的字段模式、同样的指令、同样的评分,每组3轮。
厂商自己做的基准测试为什么可信?
请当作起点而不是结论。我们公开了方法、注意事项,连Mistral和我们打平的案例也一并公开。最有力的证据是一次调用就能自己验证的结构性差异:一个API返回字段级坐标和复核标记,另一个不返回。
space-ocr在每份文档上都赢吗?
不是。在最干净的打印表格上两个引擎读出的字段数相同。贯穿整个语料的差异是结构处理、多轮一致性和校验层。
字段级坐标实际给我什么?
可审计性。人可以点击一个值看到它是从哪里读出来的,只复核被标记的字段而不是全部,在错误值进入表格或ERP之前把它拦下来。

跑一次你自己的基准测试

每月100页免费。每个值都带着方框和信任判定返回。