type
status
date
slug
summary
tags
category
icon
password
URL
Link
Publish Time
Podcast

背景

在信息检索领域,检索增强生成 (RAG) 已成为从大量文本数据中提取知识的强大工具,然而,尽管 RAG 获得了相当大的吸引力,但它在更广泛的内容类型(包括表格和图像)中的应用仍然相对未被探索。虽然传统的 RAG 模型擅长处理文本,但它们难以有效地集成和理解多模态内容。这种局限性阻碍了RAG充分捕捉这些文件本质的能力,可能导致不完整或不准确的表述。在真实的金融问答场景下,对于图表的理解,公司大多还是采取人工标注的方式,往往由于人力不足或者专业性有限极大的影响了标注的数量和质量。
跨不同数据类型的无缝问答是RAG追求的目标之一。面对业务复杂文本类型,我们也探索了多模态文档解析模块,主要是针对图片和表格的识别。本文就在实际业务场景中遇到的复杂图片(以流程图和架构图等结构类图居多)的理解问题,我们介绍当前探索的解决方案。

方案探索

OCR是指是指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。OCR基本流程可分为图片输入、二值化、图像降噪、倾斜校正、版面分析、字符分割、字符识别和输出等多个环节。我们最初的思路就是通过OCR模型直接识别图片文字内容后,将其嵌入到文档图片对应的位置,用于更完整的召回图片内容。我们调研了主流的OCR框架,包括EasyOCR、Pix2text、PPStructure和PaddleOCR等。下面对其优缺点做了简单对比:
  • EasyOCR:一个简单易用的OCR工具,支持多语言和多种字体的文本识别。它可以快速部署和做简单的文本识别,并提供简单的API和界面,便于集成和使用,但是模型较大,内存占用较高,识别速度较慢;
  • Pix2text: P2T是一个免费且开源的Python工具,旨在替代商业软件Mathpix,实现截图转文字的功能。它支持多种语言,具有易于使用的界面和强大的文字识别能力,可以识别布局、表格、图像、文本和数学公式;
  • PaddleOCR: 一个基于飞桨深度学习平台的OCR工具,具有多语言支持和较高的准确率。它提供了多种预训练模型和自定义训练的功能,适用于复杂的文本识别任务。然而PaddleOCR的安装和配置相对复杂一些。
我们在自己的真实数据下做了一些实验,对比了这几种工具的效果:
任务
模型
问题/效果
PPstructure-SER(语义实体识别)
VI-LayoutXLM-base
可以识别出完整的实体,但漏检率较高
PPstructure-SER
LayoutXLM-base
同上,识别框的召回率比上面的高一些
OCR
PP-OCRv4
文本识别很全,但是是按行识别,需要合并文本框
OCR
Pix2text
文本识别准,但是版面信息丢失严重
考虑到流程图和框架图的结构信息在图片的语义理解上有着较大的作用,因此单纯通过OCR文字识别平铺嵌入的方式,会完全丢失图片结构信息,对当前召回精度来说,还有很大的提升空间。

(2)OCR+传统CV方法思路

在上述的方案中,如何获取图片的结构信息是我们遇到的难点。而从图片本身来看,其结构信息主要由边框和线段组成,因此识别框和线是我们要解决的问题。我们通过尝试opencv的一些方法,来识别框线的数量和位置,从而进一步理解图的结构。

自适应阈值法:用于二值化处理图像,对于对比大的图像有较好效果,opencv中固定阈值化操作,自适应阈值中图像每一个像素点的阈值是不同的,该阈值由其领域中图像像素带点加权平均决定,其渲染较为自然,但检测准确度低;

边缘/形态检测:图像的边缘检测可以帮助我们分析图像中的结构信息,如物体的形状、大小、方向等。这些信息对于图像理解、场景重建等任务至关重要。常用的边缘检测算法包括Sobel、Canny、 Roberts和Laplacian等,我们通过实验发现几何形状需要自己设置最佳参数,检测精度相对很差;

角点检测:角点检测(Corner Detection)是计算机视觉系统中获取图像特征的一种方法,广泛应用于运动检测、图像匹配、视频跟踪、三维重建和目标识别等,也可称为特征点检测。常用的角点检测方法包括Harris和Shi-Tomasi角点检测,但在测试的图片里无法准确识别对应的规则。

总结来说,仅通过传统的opencv方法解决结构信息的获取,其检测精度远远不能满足实际的需求。

(3)OCR+小模型思路

为了解决传统方法在图结构分析上的瓶颈问题,我们调研了当前主流的目标检测和线段检测的专用模型,包括Clip、SAM和LETR等,下面是关于它们的一些介绍。
  • CLIP(Contrastive Language-Image Pre-Training)模型是一种多模态预训练神经网络,由OpenAI在2021年发布,是从自然语言监督中学习的一种有效且可扩展的方法。该模型的核心思想是使用大量图像和文本的配对数据进行预训练,以学习图像和文本之间的对齐关系。
  • SAM(Segment Anything Model)源自于 2023 年 Meta 的 Segment Anything (SA) 项目。它是一个开创性的图像分割模型,可以根据任何提示生成有效的分割掩码。
  • LETR(LinE segment transformers)是一种使用Transformer进行线段检测的端到端算法,无需后处理或中间处理。该方法在Wireframe和YorkUrban基准上展现出优越性能,解决了边缘元素检测、感知分组和整体推理问题。
我们的整体思路是:通过对图像中的形状/节点/箭头进行分类提取,构建一个有向图或者无向图,然后用OCR算法提取图像中的文本,再通过图的遍历算法,遍历节点,用OCR提取的文本进行填充,最终得到一个流程图或者架构图的描述。下图是基于小模型的方案流程。
notion image
针对各个文本框关系的构建,主要难点在识别箭头或者线段,我们进行了四种策略的实验。(1)霍夫变换识别线段+PCA识别方向,由于霍夫变换识别的是直线,导致有很多冗余识别,策略实用性较差;(2)GroundingDINO+SAM,首先用GroundingDINO识别文本或者线段,然后用SAM进行实例分割来确定方向。但受限于GroundingDNIO的能力,无论是文本框、箭头还是线段,都无法准确识别;(3)CLIP注意力图+SAM,由于CLIP的注意力噪声太多,导致SAM分割结果很差,而且SAM本身就对形状很敏感,导致分割出来很多不同的结果。我们尝试先把图像切分,然后用角点作为prompt输入SAM分割,结果是SAM也无法很好的识别框和箭头的区别;(4)颜色空间转换+轮廓识别+形状识别,这个策略可以识别出箭头的尾部,但是无法确定箭头的头部,因为整张流程图各个框之间都是相连接的,搜索的话总是会成为一个环。
总结来说,小模型思路可以满足简单结构图的理解,但不适用于复杂流程图,描绘不了太复杂的关系,只能作为大模型的辅助来进行,如果需要较为精细的描述,可以先用小模型把边、框的数量和定位给出,来实现一个视觉上的prompt,由多模态大模型给出最终的图片描述。

(4)OCR+小模型+大模型思路

在多模态大模型的选型上,我们先对比了主流大模型的一些特点。
  • DeepSeek-VL:在不丢失语言能力的情况下融入多模态能力,能够对绝大多数现实场景下的问题给出细致而有条理的回复。能够接受大尺寸分辨率图片作为输入,高达1024x1024,识别图片中的细小物体。同时具备通用多模式理解能力,能够处理逻辑图、网页、公式识别、科学文献、自然图像,以及在复杂场景中体现智能。
  • Qwen-VL:Qwen-VL系列模型是大规模的视觉语言模型,包含两个版本:Qwen-VL和Qwen-VL-Chat。Qwen-VL是一个预训练模型,通过视觉编码器的连接,它扩展了Qwen-7B(Qwen, 2023)语言模型的视觉能力。相比Deepseek的训练数据,少了纯文本和表格等结构化数据,所以在我们的数据上表现不好。
  • Internlm-Xcomposer2.5-VL:是一款基于 InternLM2.5-7B 的先进视觉语言大模型(VLLM)。它能够根据大纲、详细文本要求和参考图片灵活生成含图文章,并精准处理各种视觉语言问答任务。
  • Internvl2-8B:中文名称为"书生·万象”,它在关键评测指标比肩国际顶尖商用闭源模型,支持图像、视频、文本、语音、三维、医疗多种模态,百种下游任务性能媲美任务专用模型。其架构是VIT+MLP+LLM,训练分为两个阶段,先训练MLP,再训练全部参数。
我们使用MLLM来直接进行图生文的任务,为prompt做以下增强:
  1. 先通过小模型用红框标注出文本框,进行OCR文本提取,然后在prompt中加入文本描述:“我在感兴趣的区域中标注了红框,表示我感兴趣的节点,请你根据节点和边的关系为我描述这张图。”
  1. 拿到上文信息,具体做法是,通过相关模型把pdf转化成markdown文件,定位其中的url位置,以这个位置为锚点,把距离这个位置最近的上面的第一段内容加入提示中,比如:这张图的上文信息如下:XXX,请你为我描述…。下图展示了我们基于大小模型协同的识别方案。
notion image
在实验中,我们选择了多张结构图作为样本,对比了不同大模型的解析效果。下面展示其中部分的效果。
notion image
Qwen-VL无法回答这个问题,DeepSeek-VL只描述了流程,没有描述文本信息,Internlm-x2出现了幻觉。
notion image
可以看到除了Internlm-x2之外都出现了重复。
notion image
Qwen-VL出现幻觉,DeepSeek-VL描述的侧重点有点偏差,Qwen-VL-Chat出现重复。
通过对比,我们对以上多模态大模型做了一下性能总结。
notion image

展望

多模态下的图表识别问题作为RAG框架内的难点之一,未来仍然是我们研究的重点方向之一。本文我们通过探索OCR、传统CV方法、多模态大小模型及其协同的方案,在复杂图片的理解上取得了一定进展,解决了一定的业务难题。
对于真实场景下的金融数据来讲,一个图像筛选模型很重要,过滤掉不需要识别的图像数据、流程图和架构图以及折线图等,进行分别不同的处理流程。我们的图像数据中还有很多折线图,这些图像非常依赖上下文信息,可以考虑把这些图像和上下文一起送入模型,生成一个整体的描述。另外图像像素问题和图像不完整问题仍然是我们后续需要攻克的地方。