我们向 184 款 OCR 引擎发送了一张纯白空白页,有些居然“读”出了内容
测试图像再简单不过了:它是一个宽 800 像素、高 1000 像素的数字矩形,每个像素都是纯粹的 RGB (255, 255, 255)。没有灰尘,没有微弱的铅笔痕迹,没有多余的扫描伪影,也没有任何隐藏水印。这完全是一片数字虚无。
当我们把这张图像发送给 Google 的 Gemini 3.1 Flash-Lite 时,该模型毫不犹豫。它既没有返回错误代码,也没有返回空字符串,而是输出了三个词:“REDUCE / REUSE / RECYCLE”。
我们再次运行测试。这一次模型读出了:“THE END OF THE CHAPTER”。在另一次尝试中,它转录出了一篇题为《THE WONDER OF IT ALL BY DR. BENJAMIN E. MAYS》的文章,甚至还附带了一篇虚构的由 Dr. Martin Luther King Jr. 撰写的前言。无论是在 Google 的原生 API 端点还是其兼容 OpenAI 的端点上,该引擎凝视着这片数字虚无,看到的却是一座图书馆。

这一发现纯属偶然。当时我们正在测试针对“静默丢弃”(silent dropouts)的修复方案。此前,Gemini 3.1 Flash-Lite 偶尔会在完全可读的文档上返回空文本,却同时向调用方报告成功;OpenOCR 本周早些时候已在所有引擎中解决了该问题(阅读相关独立公告)。在用纯白对照图像验证该修复时,我们团队原本预期会得到空白结果,不料模型却开始写起了文章。
这促使我们展开了更广泛的测试。如果一款主流的多模态引擎会凭空幻觉出整篇文档,那么市场上的其他引擎表现又如何?为了找出答案,我们发起了 HallucinationBench 基准测试。我们收集了 OpenOCR 上提供的 184 款光学字符识别引擎,单页价格均在 1 美分及以下,涵盖传统 OCR 软件、云文档处理流水线以及现代视觉语言模型。每个引擎连续接收三次完全相同的纯白图像:总共进行了 552 次调用,基准测试账户总共耗费约 75 美分。
结果令人震惊。在完成测试的 183 款引擎中,有 24 款引擎(约占 13%)至少凭空捏造了一次文本;有 11 款引擎在每一次完成的调用中都出现了幻觉。

这些并非名不见经传的研究原型。编造文本的引擎包括来自 Google、OpenAI、Mistral、阿里巴巴 Qwen 系列以及 NVIDIA 的生产级模型。与此同时,我们测试的所有传统 OCR 引擎——包括 AWS Textract、Azure Document Intelligence、Google Document AI、IBM Docling,以及 Tesseract 和 OCRmyPDF 等开源中坚力量——均返回了绝对的空白。它们看着空白的白纸,什么也没看到。
前沿推理模型同样体面地通过了测试。Anthropic 的 Claude 4.5 系列(Haiku、Sonnet 和 Opus)、OpenAI 的标准 GPT-4.1 与 GPT-4o,以及亚马逊的 Nova Lite 和 Nova Pro 在审视图像后,要么返回空结果,要么礼貌地指出该页面为空白。幻觉几乎全部来自于企业越来越倾向于选择用于高速、低成本文档处理的这一类模型:即小巧、快速的多模态语言模型。
编造出的输出并非随机的字母串或乱码,而是连贯、格式规整、语法清晰的文档,读起来就像真实的公文材料一样。

Mistral Large 产生了一些最引人注目的“创作”。在第一次运行中,它输出了一份完整的专业简历,属于住在“美国 Anytown 榆树街 1234 号”的“Dr. John Doe”,其中包含 GPA 3.8 并以极优等(Summa Cum Laude)荣誉毕业的生物学理学士学位。在另一次运行中,它把 Dr. John Doe 设定为执业医生,生成了一份名为 Jane Smith 的女性患者接诊记录,出生日期、患者 ID 以及高血压和 2 型糖尿病的临床诊断一应俱全。
在第三次尝试中,Mistral Large 穿越到了历史中,起草了一封寄往伊利诺伊州埃文斯顿不明飞行物研究中心(Center for UFO Studies)给 Dr. J. Allen Hynek 的正式信件。信件开头写道:“尊敬的 Dr. Hynek:我写此信是为了向您报告我在 1976 年 6 月 15 日夜间目击到的一起不明飞行物(U.F.O.)事件。”在随后的测试中,它还生成了一篇由华生医生叙述的福尔摩斯故事开篇章节。
OpenAI 的 GPT-4.1 Mini 则有着自己独特的执念。在一次运行中,它为一位名叫 Pablo Gonzalo Huerta Estrada 的患者生成了一份完整的西班牙语生物特征健康筛查报告,记录其体重 74.5 公斤,身高 1.66 米,体质指数(BMI)27.03。在另一个检查点,它转录出了一份用于大鼠大脑皮层组织染色的大学实验指导书,详细列出了苏丹黑 B(Sudan black B)、尼氏体(Nissl substance)、亚甲蓝(Methylene blue)和甲苯胺蓝(Toluidine blue)等化学试剂。在第三次尝试中,它吐出了一份虚构小学的完整用药知情同意书。
其他模型编织的故事同样栩栩如生。阿里巴巴的 Qwen 3.6 Flash 生成了 19 世纪 60 年代英国判例汇编的引文,引用了维多利亚时代的诉讼争议,如 Brewster v. Moxon, 7 Jur. N.S. 589 和 Brickell v. Smithson。Mistral Small 2506 在 markdown 代码块中连续打印了 10 次“MARINE CORPS”,宛如军令口号。Thinking Machines 的 Inkling Small 起草了一篇题为《JETCUSSION: Energy Conservation through APPROPRIATE Maintenance》的航空工程白皮书。InclusionAI 的 Ling 3.0 Flash VL“看”到了一罐金宝汤(Campbell's)的 Healthy Request 浓汤。NVIDIA 的 Nemotron 3.5 Content Safety 凝视着一片虚无,令人放心地认证道:“User Safety: safe”。
为了展示不同引擎如何应对空白,以下是 11 款持续出现幻觉的引擎与精选的部分从未编造文本的引擎之间的对比。所有输出均已公开:点击任何引擎即可查看其在全部三次尝试中返回的确切内容。
| Engine | Hallucinated | Clean | Tries | Observed Behavior |
|---|---|---|---|---|
| google-gemini-3.1-flash-lite | 3 | 0 | 3 | Commercial ads, math quizzes, "REDUCE / REUSE / RECYCLE" |
| google-gemini-3.1-flash-lite-preview | 3 | 0 | 3 | Decorative formatting and title pages |
| mistral-mistral-large-2512 | 3 | 0 | 3 | Professional résumés, Spanish library requests |
| mistral-mistral-large-latest | 3 | 0 | 3 | Patient records, 1976 UFO letters, Sherlock Holmes fiction |
| openai-gpt-4.1-mini | 3 | 0 | 3 | Patient biometric charts, school medication consent forms |
| openai-gpt-4.1-mini-2025-04-14 | 3 | 0 | 3 | Rat brain histology stain inventories, hex-encoded text |
| openrouter-google-gemini-3.1-flash-lite | 3 | 0 | 3 | 988 crisis hotline notices |
| openrouter-inclusionai-ling-3.0-flash-vl | 3 | 0 | 3 | Campbell's Healthy Request soup labels |
| openrouter-mistralai-mistral-small-3.1-24b-instruct | 2 | 0 | 2 | Numbered markdown code blocks |
| openrouter-nvidia-nemotron-3.5-content-safety | 3 | 0 | 3 | "User Safety: safe" certifications |
| openrouter-thinkingmachines-inkling-small | 3 | 0 | 3 | Aeronautical maintenance white papers, chemical catalog entries |
| aws-textract | 0 | 3 | 3 | Pure silence (empty response) |
| azure-doc-intel | 0 | 3 | 3 | Pure silence (empty response) |
| google-doc-ai | 0 | 3 | 3 | Pure silence (empty response) |
| ibm-docling-hosted | 0 | 3 | 3 | Pure silence (empty response) |
| local-tesseract | 0 | 3 | 3 | Pure silence (empty response) |
| openocr-ocrmypdf | 0 | 3 | 3 | Pure silence (empty response) |
| anthropic-claude-haiku-4.5 | 0 | 3 | 3 | Explicitly reported image as blank |
| anthropic-claude-sonnet-4.5 | 0 | 3 | 3 | Explicitly reported image as blank |
| openai-gpt-4o-2024-08-06 | 0 | 3 | 3 | Explicitly reported image as blank |
| openrouter-amazon-nova-lite-v1 | 0 | 3 | 3 | Explicitly reported image as blank |
为什么会出现这种情况?答案在于现代多模态架构与传统文档扫描工具的工作原理有着本质不同。传统光学字符识别依赖于计算机视觉算法,旨在检测对比度边界、边缘和字符字形。如果纸上没有任何墨水痕迹,特征提取器就什么也检测不到,处理流程随之终止。
视觉语言模型的工作原理则完全不同。它们处理图像的方式是将图像划分为网格图块,将这些图块投影为连续的数值嵌入向量,然后输入自回归 Transformer 解码器中。其中的语言模型部分在数十亿标记上进行了训练,用于预测文档中接下来最可能出现的词。
当图像包含清晰的印刷文本时,视觉标记会引导语言模型。当图像是一片空白的虚无时,视觉嵌入向量无法提供任何指导。解码器并不会直接停止并立即输出序列结束标记,而是陷入一种模糊的潜空间状态,此时其语言先验知识开始主导输出。如果数学概率稍稍偏向某个文档标题或刊头,模型就会输出第一个词。一旦有了第一个词,Transformer 就会发挥其最擅长的本领:预测下一个符合逻辑的标记,进而编织出一整份看似合理的文档,直至达到终止点。
这是计算层面的“空想性错视”。人类大脑仰望云彩时会看出人脸,而轻量级多模态模型审视 800,000 个完全相同的白色像素时,看到的却是一份医生的简历。

在基准测试环境中,看着 AI 凭空捏造出一封 1976 年的 UFO 信件固然有趣,但在生产级文档处理中,这却极其危险。
商业公文中空白页面无处不在。高速双面扫描仪经常会拍下发票、合同、收据和病历档案中未打印的背面;多页 PDF 捆绑包也频繁包含空白分隔页、未印刷的封底以及空白的签名栏。
当引擎处理空白页并输出空内容时,下游系统清楚该如何应对——跳过该页面或标记待人工复核。然而,当视觉模型在空白页上填充一份伪造的病历表、虚构的法律判例或企业开支清单时,下游软件往往难以察觉这种欺骗。生成的文本格式规整、标点正确且毫无错字,轻而易举绕过校验规则,作为“已验证数据”录入数据库。尽管本次评测主要基于英文与拉丁字符,但在面对字符集庞大、排版密集的汉字表意文字场景时,此类多模态幻觉对下游数据管道带来的潜在风险同样不容小觑。
需要说明的是我们本次测试的边界。HallucinationBench 严格聚焦于单页成本在 1 美分及以下的高并发生产级引擎。定价远高于该阈值的高端前沿模型(包括 OpenAI o1 和完整的 Gemini Pro 系列)未包含在本次测试中,它们在空白页上的表现仍有待在未来的数据集中检验。
HallucinationBench 现已成为 OpenOCR 排行榜的固定组成部分。每款受测引擎都拥有满分为 100 分的“空白页得分”,编造文本的模型在综合“质量”评分中最高会被扣除 15 分,且每个模型的详情页都会如实展示其在全部三次尝试中返回的具体内容。在 OpenOCR 排行榜上查看所有引擎的空白页结果。或者直接进入最有趣的部分:查看各个模型究竟幻觉出了什么。

如果你每月需要处理成千上万份扫描页面,速度与低成本固然重要。但在把文档交给声称兼具这两点的引擎之前,不妨先测试一下它能否在面对一张白纸时坦承“这里什么都没有”。如果它坚持要给你念一段维多利亚时代的法院判决,那么你买到的并不是一款 OCR 引擎,而是雇了一位小说家。
Co-authored by Ben Hain. This article was slightly more supervised by Ben Hain than the typical OpenOCR article.
Appendix: every engine that hallucinated
以下是在空白页上至少凭空捏造了一次文本的引擎。点击其中任意一款,即可查看空白图像以及模型在每次尝试中实际“读取”出的内容。
| Engine | Tries with invented text |
|---|---|
| Gemini 3.1 Flash Lite | 3 of 3 |
| Gemini 3.1 Flash Lite Preview | 3 of 3 |
| Google: Gemini 3.1 Flash Lite | 3 of 3 |
| NVIDIA: Nemotron 3.5 Content Safety | 3 of 3 |
| Thinking Machines: Inkling Small | 3 of 3 |
| gpt-4.1-mini | 3 of 3 |
| gpt-4.1-mini-2025-04-14 | 3 of 3 |
| inclusionAI: Ling 3.0 Flash VL | 3 of 3 |
| mistral-large-2512 | 3 of 3 |
| mistral-large-2512 | 3 of 3 |
| Mistral: Mistral Small 3.1 24B | 2 of 2 |
| ByteDance: UI-TARS 7B | 2 of 3 |
| Google: Gemini 3.1 Flash Image Preview (Gemini 3.1 Flash Image Preview) | 2 of 3 |
| Meta: Llama 4 Maverick | 2 of 3 |
| OpenAI: GPT-4.1 Mini | 2 of 3 |
| Qwen: Qwen3.6 Flash | 2 of 3 |
| Google: Gemini 2.5 Flash | 1 of 3 |
| Google: Gemini 3.1 Flash Lite Preview | 1 of 3 |
| MoonshotAI Kimi Latest | 1 of 3 |
| MoonshotAI: Kimi K2.6 | 1 of 3 |
| Qwen: Qwen3.6 27B | 1 of 3 |
| SpaceXAI: Grok 4.6 | 1 of 3 |
| Xiaomi: MiMo-V2.6-Flash | 1 of 3 |
| mistral-small-2506 | 1 of 3 |
所有其他引擎均返回了空白,或明确指出页面为空白。它们的测试结果可在 OpenOCR rankings 上查看。