简介:多模态大模型的识图能力正从“能看”走向“能读懂”。本文围绕文字识别、复杂排版解析与遮挡鲁棒性三条主线,系统梳理识图模式的技术评价维度,剖析竖排碑文、票据遮挡、艺术化排版等典型场景的表现与边界,并给出可复用的评测思路与工程实践建议,帮助开发者建立客观的能力评估框架。
多模态大模型的能力版图大致可分为三条主线:图像理解(场景与语义)、空间推理(位置与结构关系)以及文字识别(OCR 及其延伸)。其中,文字识别看似是最“传统”的任务,实则最能暴露模型的综合功底——它同时要求像素级的细节感知、版面结构的还原能力,以及基于语言先验的纠错推理。
近期上线的识图模式在灰度阶段引发了广泛讨论。一个常见的误解是:既然此前已有独立的 OCR 模型,新模型的 OCR 表现是否只是重复建设?事实上,独立 OCR 模型与多模态大模型内置的识图能力在技术路径上并不相同:前者通常针对检测与识别任务专门优化,追求字符级准确率;后者则依托统一的视觉-语言表征,在识别的同时具备上下文推理与语义校正能力。因此,考察新识图模式的 OCR 表现,本质上是考察“识别 + 推理”的融合能力,而非单一任务的重复评测。
本文将从三个维度展开:竖排繁体碑文的识别、存在遮挡的票据类图像解析、以及复杂版面的结构化还原,并在此基础上提炼一套可复用的评测方法。
评价一个识图模式,不应只看“字认对了多少”。建议从以下四个层次构建评测矩阵:
这四个层次逐级递进,越往后越能体现多模态模型的差异化价值。下面结合具体场景逐一分析。
竖排繁体碑文是 OCR 的“硬骨头”:文字为书法字体,笔画连带、结构变形;排版为从右至左的竖列;且大量使用异体字(如“襃”通“褒”)。传统 OCR 在此类场景下往往出现列序错乱与字形误判。
实测中,模型能够正确还原竖排从右至左的阅读顺序,并输出完整的六列文本。值得注意的细节有两处:
对于碑文、古籍类识别任务,建议在流水线中保留“模型识别 + 规则/人工校对”双阶段。模型负责结构还原与初稿生成,规则层可针对高频异体字建立映射表,进一步压低错误率。
票据类图像的特点是字段密集、中英混排、字号差异大,且真实拍摄中常出现手指、印章、折痕等遮挡。遮挡场景最能检验模型的推理补全能力——被遮挡的字符在像素层面已不可见,只能依靠上下文推断。
实测样本包含地址、人名、日期、编号等多类字段。模型整体还原了主要字段,其中有两处值得展开:
这组结果清晰划出了能力的边界:有语义上下文的字段,推理可以补全;无语义约束的编号、代码类字段,仍是弱点。实践中建议:
艺术展海报类图像的特点是排版自由:大字图形化、文字沿路径分布、中英文与符号混排、阅读顺序非线性。这类场景考察的不是单字识别,而是版面理解——模型需要判断哪些文字属于同一语义块,以及块与块之间的层级关系。
实测中,模型按版面位置对文字进行了归类输出:顶部图形化大字、主标题、右侧竖排短文、左侧辅助文字等均被分离并归位。这种“按位置归类”的输出方式,实际上已经超出了纯 OCR 的范畴,接近于文档结构理解。对于公式类符号(如物理公式中的能量表达式),模型也能正确识别其符号构成。
需要指出的是,艺术化排版中字体变形极大,个别文字的识别仍存在不确定性,且语义块的边界划分依赖模型对版面意图的猜测,并非总是与设计者意图一致。
对于海报、宣传物料类识别,建议将输出视为“结构化草稿”而非最终结果:利用模型给出的位置归类作为初始分区,再结合业务规则做二次归并。若下游需要结构化数据,可要求模型以带坐标的 JSON 格式输出,便于程序化处理。
综合三类场景,可以归纳出当前识图模式的几个特征:
为便于团队内部建立一致的评测标准,下面给出一个简化的评测脚本骨架,核心思路是将模型输出与金标准做字段级比对,并按维度统计:
from dataclasses import dataclass, fieldfrom typing import List, Dict@dataclassclass EvalCase:name: strimage_path: strground_truth: str # 金标准文本category: str # vertical / occluded / layoutkey_fields: List[str] = field(default_factory=list) # 关键字段,如编号、金额def normalize(text: str) -> str:# 去除空白与标点差异,统一全半角,便于字符级比对return "".join(ch for ch in text if ch.strip())def char_level_accuracy(pred: str, gt: str) -> float:# 简化实现:基于编辑距离的字符准确率import difflibratio = difflib.SequenceMatcher(None, normalize(pred), normalize(gt)).ratio()return round(ratio, 4)def field_hit_rate(pred: str, case: EvalCase) -> float:# 关键字段命中率:字段需完整出现在预测文本中if not case.key_fields:return 1.0hits = sum(1 for f in case.key_fields if f in pred)return round(hits / len(case.key_fields), 4)def run_eval(cases: List[EvalCase], infer_fn) -> Dict[str, Dict]:report: Dict[str, Dict] = {}for case in cases:pred = infer_fn(case.image_path)bucket = report.setdefault(case.category, {"acc": [], "field": []})bucket["acc"].append(char_level_accuracy(pred, case.ground_truth))bucket["field"].append(field_hit_rate(pred, case))return {cat: {"avg_char_acc": round(sum(v["acc"]) / len(v["acc"]), 4),"avg_field_hit": round(sum(v["field"]) / len(v["field"]), 4),"samples": len(v["acc"]),}for cat, v in report.items()}
该框架的价值在于:按场景分类统计,避免“总体准确率”掩盖短板;引入关键字段命中率,贴近业务真实诉求;将归一化与比对逻辑解耦,便于后续替换为更严格的指标。
多模态识图能力的评价,应超越“能不能认字”的单一视角,转向“结构还原是否准确、推理补全是否可靠、边界是否清晰”的系统性判断。从实测看,新一代识图模式在版面理解与语义纠错上确有明显进步,但在无上下文约束的精确字段识别上仍需工程手段兜底。对开发者而言,理性的做法是:把模型放在感知层,用规则与校验构建确定性,让“识别 + 推理 + 校验”各司其职——这才是当前阶段释放多模态能力价值的稳妥路径。