GRPO强化学习缓解多模态大模型OCR任务的幻觉思路及数据生成思路

多模态大模型在"看不清"文字时瞎编答案,称为"OCR幻觉",如下图,主要有几点:(1)预训练阶段缺乏相关数据:关键信息提取(KIE)数据以及退化视觉场景的清晰标注显著不足,限制了模型处理复杂视觉输入的能力。指令微调阶段忽视退化场景:现有研究通常假设 OCR 任务输入为非退化图像,导致模型缺乏处理真实世界退化文档(如模糊、遮挡、低对比度)所需的推理能力。

下面来看看一个思路。供参考。

数据集

数据生成方法

主要思路如下:

数据生成方法 分三步走,目的是构造一个专门用于训练模型"看清模糊文字、不乱编答案"的冷启动数据集,核心逻辑是:用现有模型生成"人类式思考"的链式推理(CoT)数据,再与图像配对,形成多模态训练样本。流程如下:

Step 1:图像→文本描述(借助GPT-4o)

输入一张退化文档图像(如模糊的发票)+ 问题(如"这张发票的总金额是多少?"),用GPT-4o将图像内容转为纯文本描述(包括文字内容、退化情况、空间位置等)。 目的是把多模态信息"翻译"成语言模型能理解的文本。

  • 例如:GPT-4o会描述"图像中'总金额'一栏的数字'100'被污渍遮挡,仅能看到'1'和'00'的轮廓"。
Step 2:文本→链式推理(借助DeepSeek-R1)

输入Step 1中生成的纯文本描述 + 问题,用推理模型DeepSeek-R1生成人类式的思考链(CoT),模拟人如何一步步判断,让模型学会"看不清时不硬猜",而是用逻辑推理标记不确定部分。

  • 示例CoT
    "观察到'总金额'栏的数字有污渍遮挡,但'1'的竖线清晰,'00'的轮廓部分可见,结合上下文'人民币符号¥',推断金额为'100元',但需标记'00'为不确定区域。"
Step 3:合成多模态数据

输入原始图像(带退化)和Step 2生成的CoT文本(含推理和不确定标记),输出一个完整的多模态训练样本(图像+问题+CoT答案)。

数据增强

  • 对图像随机添加退化(模糊、遮挡、低对比度)。
  • 用OCR模型(如Qwen2.5-VL-72B)验证退化后的字符是否仍可见,确保标注准确。

最终效果生成的数据集覆盖身份证、发票、处方等场景。每个样本都附带:

  • 像素级退化标注(哪些字符被遮挡)
  • OCR可靠性得分(模型对字符可见性的置信度)
  • CoT推理链(如何从不确定信息中得出结论)

方法

基于GRPO强化学习+多目标奖励函数的框架,解决OCR幻觉问题。

奖励函数设计

带OCR奖励的强化学习:设计基于规则的三级奖励函数 ,强制模型根据视觉可见性输出答案,避免幻觉。

奖励函数设计

将字符按可见性分为三类,不同处理策略:

  1. 清晰字符(如"B, a, u"):必须准确识别,奖励高。
  2. 部分遮挡字符(如"e"被污渍盖住30%):需标记为异常(如"e[部分可见]"),保留但提示不确定。
  3. 完全不可见字符(如"t, i"被完全遮挡):必须输出空格,避免幻觉。

奖励计算流程

对模型预测和真实值计算编辑距离,生成三个指标:

  • clear_metric:清晰字符的准确率
  • not_clear_metric:模糊/遮挡字符的处理合理性
  • final_metric:最终答案与真实值的匹配度

复合奖励

其中c₁, c₂, c₃为权重,确保模型优先视觉忠实度,而非盲目追求字符准确率。

训练阶段

冷启动SFT:用前文生成的CoT数据微调Qwen2.5-VL-7B,学习"退化场景下的推理范式"。

GRPO强化学习

  • 输入退化图像(如模糊处方),模型生成多个候选答案。
  • 奖励函数评估每个答案是否**"不幻觉"**(如遮挡区域是否输出空格)。
  • 通过GRPO优化策略,使模型逐渐学会**"无法识别时拒绝回答"**。

实验性能

参考文献:Seeing is Believing? Mitigating OCR Hallucinations in

Multimodal Large Language Models,https://arxiv.org/pdf/2506.20168v1

相关推荐
冬奇Lab10 分钟前
一天一个开源项目(第39篇):PandaWiki - AI 驱动的开源知识库搭建系统
人工智能·开源·资讯
大模型真好玩44 分钟前
LangChain DeepAgents 速通指南(三)—— 让Agent告别混乱:Tool Selector与Todo List中间件解析
人工智能·langchain·trae
孟祥_成都1 小时前
【全网最通俗!新手到AI全栈开发必读】 AI 是如何进化到大模型的
前端·人工智能·全栈
牛奶2 小时前
AI辅助开发的基础概念
前端·人工智能·ai编程
东坡肘子2 小时前
OpenClaw 不错,但我好像没有那么需要 -- 肘子的 Swift 周报 #125
人工智能·swiftui·swift
风象南9 小时前
普通人用AI加持赚到的第一个100块
人工智能·后端
牛奶10 小时前
2026年大模型怎么选?前端人实用对比
前端·人工智能·ai编程
牛奶10 小时前
前端人为什么要学AI?
前端·人工智能·ai编程
罗西的思考13 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
冬奇Lab13 小时前
OpenClaw 源码精读(2):Channel & Routing——一条消息如何找到它的 Agent?
人工智能·开源·源码阅读