简介:机器识别能力越来越强,模糊、加噪等传统手段已难以阻止图中文字被OCR提取,且往往连人眼可读性一起牺牲。本文介绍一条更聪明的路线:利用人机视觉感知差异,通过彩色对接光栅、轮廓形变与对抗扰动,让人眼可正常阅读、机器识别率大幅下降,并给出核心实现思路、评估方法与工程落地建议。
图片中的文字正在被越来越多地“机器化消费”:电商图片里的价格与活动规则被爬虫批量提取;社交截图中的联系方式被自动化脚本收集;企业以图片形式外发的报价单、内部通知,可能被第三方批量索引,甚至流入多模态模型的训练语料。
面对这些场景,很多人的第一反应是“把文字糊掉”。但糊掉是一种对称破坏——机器读不了的同时,人也读不了,信息本身的价值被一起消灭。更理想的目标是一种非对称干扰:人眼阅读几乎不受影响,而 OCR 与多模态模型的识别率显著下降。本文围绕这个目标,给出一套可落地的完整技术路线。
在讲新方法之前,先说清楚老方法为什么失效:
这些路径走不通的共同原因是:它们都在像素层面破坏图像,而破坏是不分对象的。要打破僵局,就要换一个攻击面——不破坏图像本身,而是攻击机器读取图像的方式。
近期多模态安全方向的一篇学术研究给出了很有启发性的路线,其核心洞察是:人类视觉系统与神经网络编码器,对同一幅图的“读取方式”存在系统性差异。
据此,防护可以分成两层:感知层,构造人眼能“脑补”出、但机器特征提取器难以稳定还原的文字形态;特征层,叠加对抗性扰动,主动把编码器特征推向错误语义。下文分别展开。
把文字区域与背景区域,分别填充为两组空间频率相同、方向相同、但相位相差半个周期的彩色光栅。用公式表达:
G(x, y) = B + A · sin( 2πf · (x·cosθ + y·sinθ) + φ + π · M(x, y) )
其中 M(x, y) 为文字二值掩码(文字区取 1,背景取 0)。由于掩码内外恒定相差半个周期:
人眼面对这种错位条纹时,会按格式塔原则把局部不连续组织成完整字符轮廓,阅读毫无障碍;而卷积类编码器需要从细微的条纹相位关系中还原字符形状,一旦图像经过缩放或特征下采样,相位线索即被破坏,识别随之失稳。这正是“人能读、机器读不出”的关键机制。
# 伪代码:表达核心逻辑,矩阵运算与图像读写可基于任意主流图像库实现# 1) 提取文字二值掩码gray = to_gray(img)thr = otsu_threshold(gray) # 自适应阈值mask = gray < thr # True = 文字区域# 2) 轻微局部形变:正弦 + 低频随机位移场dx = amp * sin(2*pi*f_s*y/H + p1) + low_freq_random_field()dy = amp * sin(2*pi*f_s*x/W + p2) + low_freq_random_field()img, mask = warp_bilinear(img, dx, dy), warp_bilinear(mask, dx, dy)# 3) 多通道光栅填充:掩码内外相位相差半个周期channels = {"R": (0, f_r), # 水平条纹"G": (pi/3, f_g), # 斜向条纹"B": (2*pi/3, f_b), # 另一方向斜条纹}for ch, (theta, f) in channels.items():proj = X*cos(theta) + Y*sin(theta) # 各像素的条纹相位坐标out[ch] = B + A * sin(2*pi*f*proj + pi * mask)# 4) 局部条纹扰动并合成jitter = local_stripe_jitter(strength) # 小幅、低频的条纹错动result = clip(out + jitter, 0, 255)
关于参数的经验:光栅周期要明显小于字符笔画宽度,保证笔画内部包含若干完整条纹周期,人眼补全才自然;又不能小到接近采样极限,否则图像压缩后条纹本身先被抹掉,干扰随之失效。具体取值不存在普适常数,应按目标分辨率实测调优。
光栅方案让机器“读不出形状”,对抗扰动则更进一步:让机器“读出错误内容”。
做法是在光栅图像上再叠加一层幅度受限的对抗扰动,使视觉编码器提取的特征偏向指定的错误语义(例如一段与真实文字无关的描述)。这样即使模型输出了文本,内容也是被诱导的。按对目标模型的掌握程度,分两种实施路径:
无论哪种场景,扰动幅度都必须严格受限(逐像素微小变化),确保人眼基本无法察觉——这正是“错觉”一词的由来:干扰被藏在人眼不敏感的维度里。
需要清醒认识的是:对抗扰动的迁移性天然有限,且识别端一旦做针对性加固(如对抗训练),效果就会衰减。因此工程上更合理的定位是光栅方案做主力、对抗扰动做增强,而不是单独依赖后者。
一套严肃的方案必须可度量,建议按以下维度搭建评估流程:
最后必须说清楚两件事:
“防止图中文字被 OCR 识别”这件事,正确的打开方式不是与机器比拼谁更能忍受模糊,而是利用人机感知的结构性差异做非对称设计:感知层用彩色对接光栅制造“人能脑补、机器失稳”的字符形态,特征层用对抗扰动诱导错误输出,再辅以规范的效果评估与工程化落地。这条路线防护上限更高、对人的代价更小,也更符合“保护信息而非销毁信息”的初衷。