简介:本文围绕多模态大模型新上线的识图模式,给出一套可复用的OCR评测方法:以统一提示词控制变量,选取竖排繁体碑文、遮挡文字、复杂排版海报三类高难度场景实测,并通过人工校对闭环定位典型错误。文章进一步分析大模型“感知+推理”相对传统OCR引擎的增益与风险,附评测流水线示意代码,帮助开发者快速判断模型能否满足业务落地要求。
当一个多模态大模型上线识图模式后,开发者最关心的问题往往不是“它能把图片描述得多优美”,而是“它能否在真实业务图像中稳定、准确地抽取文字”。原因很朴素:票据录入、文档数字化、街景招牌索引、古籍整理、内容审核等场景中,文字识别是刚需,而且是所有能力维度中最容易量化验证的一项——对就是对,错就是错,不存在“回答得很有道理”这类模糊空间。
这里先澄清一个常见误解:不少团队此前已经接入过专用OCR引擎或开源OCR模型,它们在规整印刷体上的表现已经相当成熟。因此,评测多模态大模型时,真正值得关注的不是“能不能读白底黑字的文档”,而是“能不能读传统引擎读不了的图”——竖排书法、艺术字、遮挡干扰、多区域混合排版。这些难例恰恰是多模态大模型区别于专用引擎的增量价值所在,也应当成为评测集的主体。
动手之前,先固定两件事,否则结论不可复现:
另外建议给每个测试样本打上难度标签(版式复杂度、是否遮挡、字体类型),便于后续分层统计,而不是只看一个总分。
第一组样本是一张传统书法碑文,难度集中在三点:
实测中,模型正确识别了竖排方向与列序,并按“第一列(最右)→最后一列(最左)”的结构化方式逐列输出,说明其对全局版式有真实理解,而不是把字符逐个检出后机械拼接。
但校对发现一处典型错误:其中一个字被误识为“馬”,结合上下文语义校验,应为虚词“焉”。这类形近字错误在书法场景中出现频率极高——草书、碑刻中二字笔势相近,纯字形匹配极易混淆。这个案例说明两点:其一,模型输出必须经人工或规则校验后才能入库;其二,可以引入“文言句式合理性”这类语言侧约束做二次校对,把识别从纯视觉问题升级为“视觉+语言”的联合判断。
第二组样本是一张含遮挡的街景类图片:部分英文字符被前景物体挡住,画面中还存在招牌、编号、日期等多层文字信息。结果呈现两个鲜明特征:
这组对比给出了重要启示:评测报告应把“感知型正确”与“推理型正确”分开统计,同时警惕推理带来的副作用——过度补全会产生“看起来合理”的错误,这类错误在校对时最容易被漏掉,在业务里却往往最致命(例如编号、金额、日期)。
第三组样本是一张艺术展览海报:主标题为图形化艺术字,右侧有一段竖排短文,左上、左下散布策展、参展等小字信息,中英文混排,文字与背景图案高度交叠。
低水平识别的表现是“按行硬拼”,输出一串语序混乱的文字。而实测中,模型将结果按排版位置归类输出:顶部图形化大字、右侧竖排短文、左侧署名区各自成组,对图形化主标题也给出了合理转写。这说明模型具备了区域感知能力——先对画面做空间划分,再在每个语义区域内完成识别。
对下游应用而言,这种结构化输出价值巨大:海报数字化、素材归档、内容审核都需要“文字+位置+角色”三元组,而不是一坨纯文本。评测时建议专门设计此类样本,检查输出是否按语义区域组织,而非仅统计字符准确率。
综合三组实测,可以抽象出两条技术路线的本质差异:
工程上更稳妥的做法是混合路由:常规文档走传统引擎,命中“难例标签”(竖排/书法/遮挡/图形化排版)时路由到多模态模型,并对后者输出强制执行与原文的逐字比对校验。
下面给出评测流水线的示意代码,核心思路是:图片集+标注真值+统一提示词,输出分层指标。
import jsonfrom pathlib import PathPROMPT = "识别图片中的文字" # 统一提示词,控制变量def compute_cer(gt: str, pred: str) -> float:"""字符错误率:编辑距离 / 真值长度"""n, m = len(gt), len(pred)dp = list(range(m + 1))for i in range(1, n + 1):prev, dp[0] = dp[0], ifor j in range(1, m + 1):cur = min(dp[j] + 1, dp[j-1] + 1,prev + (gt[i-1] != pred[j-1]))prev, dp[j] = dp[j], curreturn dp[m] / max(n, 1)def run_eval(image_dir, gt_path, infer_fn):cases = json.loads(Path(gt_path).read_text(encoding="utf-8"))report = []for c in cases:pred = infer_fn(Path(image_dir) / c["file"], PROMPT)cer = compute_cer(c["text"], pred)report.append({"file": c["file"],"tags": c["tags"], # 难度标签:竖排/遮挡/艺术字"cer": round(cer, 4),"pass": cer <= c.get("thr", 0.05),})return report
几点工程细节值得强调:
tags字段用于分组输出“遮挡样本CER”“竖排样本CER”等,比单一总分更能暴露能力短板;若评测需要规模化执行,可将图片集托管在百度智能云的对象存储中,用GPU算力实例完成批量推理,再借助日志服务与监控告警跟踪每轮评测结果——以通用云服务类别搭建评测底座,能省去大量自建与运维成本,让团队精力聚焦在标注质量与难例设计上。
识图能力的真正价值,不在于“看图说话”多么流畅,而在于“读难图、读对图”。竖排碑文考察版式理解,遮挡样本考察推理补全,复杂海报考察区域组织——三类难例各指向一种独立能力,缺一不可。而统一提示词、人工校对闭环与分层难度标签,构成了让评测结论可复现、可比较的最小方法论。对任何准备将多模态识图能力接入生产环境的团队而言,先搭好这套评测体系,再谈选型与落地,才是风险最低的路径。