Skip to content
← Blog

OCR在处理弯曲和倾斜文本时表现不佳的隐藏原因

Based on: 2D Rotary Position Embedding for Scene Text Recognition with Transformers — Zobeir Raisi

将手机对准一瓶洗发水,尝试阅读环绕瓶身曲线的成分表。你的眼睛会不假思索地完成这一任务:它们会追踪字母随着弯曲、倾斜和向边缘缩小而发生的形变。大多数 OCR 模型在这方面表现远不如人意,而一篇新的预印本给出了相当具体的解释:这些模型从未被告知图像具有二维特性。

对于一个旨在处理图像的系统来说,这听起来荒谬至极。但一旦你理解了其中的原理,这便是一个让你恍然大悟、不禁疑惑为何如此之久无人察觉的“原来如此”时刻。

curved beverage bottle label text

为什么直线假设对真实世界文本是个糟糕的假设

场景文本识别(Scene Text Recognition, STR)是一项专门的任务,旨在读取真实世界照片中的文本,而不是干净的扫描件。路标、产品标签、车牌、在恶劣光照条件下拍摄的餐厅菜单。这与阅读 PDF 或 Word 文档不同,因为文本本身受到物理世界的变形:它沿着瓶子弯曲,以倾斜的角度拍摄,当人们拍摄标志时没有对齐相机,它会倾斜,透视拉伸了离镜头更远的字母。

现代 STR 系统大多是 Transformer,这与大型语言模型背后的架构相同。编码器查看图像并将其分解为小补丁的网格,然后解码器逐个读取字符,就像语言模型预测下一个单词一样。这对于规则、正面的文本效果很好。一旦文本不再像直线那样行为,它就会变得不稳定。

这里有一个容易被忽略的部分:Transformer 没有任何内置的位置感。如果你给 Transformer 一个没有位置信息的图像补丁混乱袋,它无法分辨上下或左右。每个 Transformer 都需要某种位置编码附加上去,而这种编码的选择比大多数人假设的更重要。

Transformer 如何感知位置,以及捷径在何处失效

从语言模型中借用的位置编码方案被称为 RoPE(Rotary Position Embedding,旋转位置嵌入)。它被用于大多数现代开源语言模型中,包括 LLaMA。其核心思想是根据标记在序列中的位置,对每个标记的向量进行相应幅度的旋转,这样在注意力机制比较两个标记时,结果就能自然地反映出它们之间的距离。可以将其想象为时钟的指针:每走一步旋转固定角度,任意两根指针之间的夹角就能告诉你它们的距离,而无需显式存储该距离。

RoPE 最初是为 1D 序列设计的:句子中的单词依次排列。由于图像是 2D 的,研究人员为此构建了一个名为轴向 2D-RoPE 的扩展方案,用于视觉 Transformer。该方案将旋转拆分为两个独立的部分:一部分追踪行位置,另一部分追踪列位置。

这一扩展方案从一开始就内置了两个假设,而本文认为这两个假设在处理场景文本时均会失效。

第一个假设是图像大致为正方形。将旋转预算在行和列之间平均分配,对于人脸或风景照片来说没问题。但一个裁剪出的单词如“STOP”可能宽度是高度的四倍。如果在几乎没有任何显著垂直变化的维度上浪费了一半的位置分辨率,就会导致真正重要的维度——承载字母从左到右顺序的维度——资源匮乏。

第二个假设涉及编码的应用位置。之前的 2D-RoPE 工作仅在编码器内部对向量进行旋转,即图像块相互关注的位置。但 STR 模型是编码器-解码器架构:解码器逐个生成字符,并在每一步通过所谓的交叉注意力(cross-attention)回望编码器中的图像块网格。正是在这一刻,模型决定“根据我已经读取的字母,我接下来应该在图像的哪里寻找?”如果位置计算从未触及这一步,解码器就是在没有指南针的情况下导航 2D 图像。它只能退而求其次,依赖通用的学习位置标签,而这些标签并不包含真正的“上”、“下”、“左”或“右”的概念。

两项修复,无需新增参数

该论文的修复方案直接针对上述两个缺陷,而我认为真正令人称道的是,这两项改动均未给模型引入任何新的权重。这并非一个更大的网络,也不是外挂的新模块,而是对现有旋转数学配置方式的调整。

第一项修复是不均匀地分配旋转维度,使其与实际文本裁剪区域的宽高比相匹配,而不是简单地按 50/50 分割。对于宽而短的裁剪区域,其宽度方向会获得更高的位置分辨率,而高度方向则较低,从而与信息的实际分布位置保持一致。

第二项修复将相同的旋转耦合机制扩展到交叉注意力(cross-attention)中,使解码器的查询(queries)与编码器的二维网格共享一个几何参考系。实际上,这意味着在解码步骤中,模型可以将“即将预测的下一个字符”与“沿着文本曲线、位于上一个字符之后的图像区域”关联起来,而不是将整个图像视为一堆无差别的 token。

在机器学习中,如此具体的“免费午餐”极为罕见,因此在我完全信服之前,我希望看到该修复方案能在作者之外的实验中复现。但其理论逻辑自洽,并且精准对应了任何尝试过对真实商品照片进行 OCR 的人都能立即识别出的一种失败模式。

tilted street sign photograph

一种旨在抵御一厢情愿的协议

这篇论文与典型的“我们的位置编码获得了更好的数值”类成果的不同之处在于,作者们采取了严谨的措施来证明性能提升确实源于他们所声称的来源,而非重新训练带来的某些无关副作用。

三项检查完成了这一验证工作。首先,是一个受控的消融实验对:保持整个模型完全相同,仅替换位置编码模块,将 1D RoPE、2D 正弦编码、2D 可学习编码以及他们提出的新 2D-RoPE-STR 进行相互比较。这隔离了唯一发生变化的变量。

其次,是图像级别的不一致分析。作者没有报告单一的聚合准确率数字(这种数字可能掩盖的问题与揭示的问题一样多,因为简单的平均值可能会掩盖某些图像上的巨大增益被其他图像上的损失所抵消的情况),而是观察在基线方法和新方法之间,哪些特定图像从错误变为正确,哪些则相反。这是一个更难通过技巧操纵的测试,因为它迫使作者证明其增益集中在特定区域,而不是分散且不均匀。

第三,是注意力可视化:在解码过程中实际绘制编码器注意力权重的分布位置,以检查模型是否如预期那样在视觉上跟踪文本的曲线,而不是在基准测试中侥幸得分。

增益究竟体现在哪里

这里使用的六个基准测试集——IIIT5K、SVT、ICDAR 2013、ICDAR 2015、CUTE80 和 SVTP——是该子领域的标准测试集。前三个主要包含简单、正面且水平的文本。后三个则是研究人员专门用来压力测试不规则文本的基准:ICDAR 2015 包含大量倾斜和低质量的标牌文本,CUTE80 充满了弯曲文本,而 SVTP 则严重依赖透视畸变。

根据摘要,改进几乎完全集中在第二组更具挑战性的数据上:即弯曲、旋转和透视扭曲的布局,其中阅读顺序偏离了直的水平线。这是一个连贯的故事,而非零散的现象。这表明该修复方案正如其背后的推理所预测的那样发挥作用,而不是像许多“更好的位置编码”论文那样,让每个基准测试的指标都小幅提升。

我要指出一个显而易见的保留意见:arXiv 摘要并未发布实际的准确率表格,我也无法从列表中获取具体的百分比增益。该论文目前正在《国际文档分析与识别期刊》(International Journal on Document Analysis and Recognition)审稿中,因此在完整数据公开且原始团队之外的人员复现结果之前,请将其视为一个前景良好、机制论证充分的结果,而非定论。

尚未证实的部分

在过于兴奋之前,有几件事值得深思。

这是一篇仍在同行评审阶段、尚未被接受的单作者论文。这并不意味着它是错误的,但这确实意味着常规的社区审查(复现、对抗性审查、有人尝试在不同数据集上打破它)尚未发生。

这六个基准测试都是学术性的、以英语为中心的,并且是在2003年至2016年之间汇编的。它们是“照片中的文本”的合理代理,但它们与生产OCR管道中看到的各种文档并不相同:混合脚本、手机相机噪声、低光照、运动模糊、在凌晨2点用糟糕的手机拍摄收据。这种位置编码修复是否能推广到这种混乱情况,是一个论文并未声称要回答的开放性问题。

同样,值得对范围进行精确界定。这针对的是识别步骤,即读取某个上游检测器已识别为包含文本的裁剪区域中的字符。它不涉及文档布局、表格结构或整页阅读顺序。如果你的OCR问题是扫描发票和合同,这种修复针对的是不同于通常困扰你的失败模式。

为什么这对构建或选择 OCR 的人很重要

如果你输入 OCR 的大多是干净、正面的文档(发票、扫描的合同、表格),不要指望这个特定的修复能显著提高你的准确率。论文本身的结果表明,增益主要集中在不规则布局上,而干净的文档几乎按定义来说就不是不规则的。

但是,如果你的产品涉及物理世界的照片、产品标签、街道标志、包装、用手机从角度拍摄的收据,这正好针对了在演示中往往让 OCR 系统尴尬的失败模式:弯曲、倾斜或因透视而拉伸的文本。这是一个真实且常见的输入类别,“模型实际上没有 2D 位置感”是一个令人满意的、可修复的解释,说明了为什么它在那里不断失败。考虑到中文等表意文字系统具有数千个字符和密集布局的特点,这种对空间几何畸变的敏感性在识别复杂汉字结构时尤为关键。

对任何评估引擎的人来说,最重要的是“没有新参数”的说法。如果它在独立测试中成立,这意味着更好地处理扭曲的文本不必附带一个更大、更慢、更昂贵的模型。如果你试图在追求混乱现实世界图像的准确率的同时保持推理成本合理,这是一个真正有用的属性。目前,明智的做法是关注这条研究路线而不是立即采取行动:关注完整论文的表格,关注独立的复现,并主要根据 OCR 引擎在你自己的用户实际上传中的表现来判断它们。基准测试告诉你该看哪里。它们不能替代针对你的客户实际会发送的奇怪、弯曲、光线不佳的照片进行的测试。