当人们探讨如何让人工智能系统更好地从文档中查找和使用信息时,通常关注的是令人瞩目的算法和前沿的大型语言模型。但问题是:如果文本提取的质量很差,那么后续的努力都将付诸东流。本文探讨OCR质量如何影响检索增强生成(RAG)系统,尤其是在处理扫描文档和PDF文件的常见场景时。

OCR错误在RAG流程中级联,将严重影响人工智能系统的性能。拥有2.56亿个参数的SmolDocling能够实现对文档的整体化处理,进而生成结构化输出,有效提升了RAG的效果。

当人们探讨如何让人工智能系统更好地从文档中查找和使用信息时,通常关注的是令人瞩目的算法和前沿的大型语言模型。但问题是:如果文本提取的质量很差,那么后续的努力都将付诸东流。本文探讨OCR质量如何影响检索增强生成(RAG)系统,尤其是在处理扫描文档和PDF文件的常见场景时。

通过在RAG流程中探索光学字符识别(OCR)错误的级联效应,并使用SmolDocling(一种端到端处理文档的超紧凑视觉语言模型)提出了一种现代解决方案。OHRBench研究报告(Zhang et al., 2024)提供了令人信服的证据,表明即使是现代OCR解决方案也难以处理现实世界的文档。展示了只有2.56亿个参数的SmolDocling(Nassar等人,2025年)如何通过整体理解文档而不是逐个字符处理,以输出结构化数据,从而显著提升下游RAG性能。

引言

“垃圾进,垃圾出”的原则不仅仅是一个口号——它是基于文档的RAG系统的现实。当人工智能社区对最新的嵌入模型和检索算法充满兴趣,许多人忽视了一个基本的瓶颈:从现实世界的文档中提取文本的质量。

最近进行的一些研究开始揭示这个问题。Zhang等人(2024)引入了OHRBench,表明当前的OCR解决方案都无法胜任为RAG系统构建高质量知识库的任务。这是对OCR技术应用现状的一个相当糟糕的评价。

错综复杂的OCR现状

1.好消息与坏消息

好消息是,现代OCR技术已经取得了长足进步。谷歌的Tesseract现在已发展到4.0+版本,使用LSTM神经网络,在干净的印刷的文本上实现令人印象深刻的准确率(Patel等人,2020年)。而坏消息是,出现了一些问题:

根据最近进行的基准研究,历史文档中20%或更高的OCR错误率仍然很常见(Bazzo等人,2020)。Rigaud等人(2021)记录了数字图书馆和专业文档类型中的类似问题。

Hamdi等人(2022)的一项基准研究对Tesseract、Amazon Textract和Google Document AI进行了比较,发现Document AI提供了最佳结果,基于服务器的处理器(Textract and Document AI)的性能明显优于Tesseract,尤其是在背景嘈杂的文档上。但即使是表现最好的OCR系统,也难以应对复杂的布局和历史文件。

2.为什么OCR系统面临多种困难和挑战

OCR系统面临的挑战不仅仅是老旧的或褪色的文档(这些文件会有问题)。现代OCR面临几个持续存在的问题:

(1)复杂的布局:多栏格式、表格和混合文本/图像内容使大多数OCR系统感到困惑。

(2)质量参差不齐:即使是来自同一来源的文档,扫描质量也可能大不相同。

(3)语言和字体多样性:非拉丁文字和不常见的字体会显著降低性能。

(4)现实世界的干扰:咖啡渍、手写注释、邮票——这些让文件变得真实的事物也让它们难以阅读。

正如OHRBench论文(Zhang et al., 2024)所述,语义噪声和格式噪声这两种主要的OCR噪声类型,被认为是影响下游RAG性能的主要因素。

OCR错误如何通过RAG级联

1.多米诺骨牌效应

当OCR错误进入RAG流程时,会发生以下情况——这并不美妙:

(1)分块混乱:复杂的语义分块算法试图在文本中找到句子边界,例如“出现严重症状的患者(Thepatient presentedwith severesymptoms)”,然后要么创建无意义的小块,或者要么大量的文本。

(2)嵌入混淆:当嵌入模型看到“diabetus”这种错误拼写而不是“diabetes”(糖尿病)时,它可能会将该分块放在完全不同的语义空间中。如果将这种情况出现在数千个文档中,其向量空间将变得混乱不堪。

(3)检索失败:用户搜索“糖尿病治疗(diabetes treatmen)”,但是相关的数据块被索引在“diabetus”或“diabetes”下——找不到匹配项。

(4)产生幻觉:由于上下文质量不佳或缺失,LLM开始编造内容来填补空白。

2.对RAG性能的实际影响

OHRBench的研究提供了发人深省的数据。他们发现OCR噪声对RAG系统有显著影响,在所有测试配置中均出现性能损。这不仅仅是几个百分点的问题——而是系统变得无法有效地用于关键应用程序。

Bazzo等人(2020年)在详细调查中发现,虽然OCR错误在平均水平上可能看似影响不大,但单一查询可能会受到很大影响。调查表明,从5%的错误率开始,就会注意到显著的影响,并且报告了在存在错误的情况下索引术语数量的显著增加——本质上,OCR错误会创建虚假的词汇表,进而导致索引规模膨胀。

建议:采用SmolDocling的现代解决方案

1.超越传统的OCR

在经历了传统OCR流程的各种挫折之后,采用了一种完全不同的方法,即使用SmolDocling,这是IBM Research和HuggingFace于2025年3月发布的一款超紧凑视觉语言模型(Nassar等人,2025年)。

这就是一切得以改变的原因:与传统的OCR→后处理→分块→嵌入流程不同。SmolDocling将文档图像直接处理成结构化的输出。它只有2.56亿个参数,其规模足够小,可以在消费级GPU上运行,同时提供与大27倍的模型相媲美的结果。

2.SmolDocling架构

该模型使用了一个巧妙的架构,它结合了:

  • 直接处理文档图像的视觉编码器(具有9300万个参数的SigLIP)
  • 生成结构化输出的语言模型(具有1.35亿个参数的SmolLM-2变体)
  • 有效压缩视觉特征的积极像素洗牌策略

其特别之处在于,SmolDocling不只是提取文本——它从整体上理解文档结构。表保持表格的形式,代码块保持缩进,公式得以保留,元素之间的空间关系也被捕获。

3.DocTags:实际有效的结构化输出

smoldoling的关键创新之一是DocTags,这是一种专门为文档表示而设计的标记格式。而不是转储非结构化文本,可以得到结构化的输出与精确的位置信息:

1 <picture><loc_77><loc_45><loc_423><loc_135>
2 <other>
3 <caption><loc_58><loc_150><loc_441><loc_177>
4 Figure 1: SmolDocling/SmolVLM architecture. SmolDocling converts images of document pages to DocTags sequences.
5 </caption> 
6 </picture> 
7 <text><loc_58><loc_191><loc_441><loc_211>In this work, we outline how we close the gaps left by publicly available datasets and establish a training approach to achieve end-to-end, full-featured document conversion through a vision-language model.
8 </text> 
9 <unordered_list> 
10 <list_item><loc_80><loc_218><loc_441><loc_259>· SmolDocling: An ultra-compact VLM for end-to-end document conversion
11 </list_item> 
12 <list_item><loc_80><loc_263><loc_441><loc_297>· We augment existing document pre-training datasets with additional feature annotations
13 </list_item> 
14 </unordered_list> 
15 <table> 
16 <table_row> 
17 <table_cell><loc_50><loc_320><loc_150><loc_340>Test Name</table_cell> 
18 <table_cell><loc_151><loc_320><loc_250><loc_340>Result</table_cell> 
19 <table_cell><loc_251><loc_320><loc_350><loc_340>Normal Range</table_cell> 
20 </table_row> 
21 <table_row> 
22 <table_cell><loc_50><loc_341><loc_150><loc_361>Glucose</table_cell> 
23 <table_cell><loc_151><loc_341><loc_250><loc_361>126 mg/dL</table_cell> 
24 <table_cell><loc_251><loc_341><loc_350><loc_361>70-100 mg/dL</table_cell> 
25 </table_row> 
26 </table>

    请注意每个元素如何包含指定精确边界框坐标(x1,y1,x2,y2)的<loc_X>标签。这意味着:

    • RAG系统确切地知道每条信息出现在页面上的位置(自动图像提取非常容易)。
    • 表格以适当的单元格边界维护其结构。
    • 列表、标题和不同的文本类型被清楚地区分开来。
    • 复杂的布局得以保留,而不是将其扁平化为文本流。

    这种具有空间信息的结构化格式意味着,RAG系统可以根据实际的文档结构和位置而不是任意的字符计数来智能地分块。这种差异是巨大的——传统的OCR可能会产生格式丢失的混乱文本,而SmolDocling则保持了使文档有意义的语义结构和空间关系。

    4.实际表现

    SmolDocling论文(Nassar等人,2025)中的数据讲述了一个引人注目的故事。以下可以直观了解一下这个拥有2.56亿参数的模型与更大规模的模型相比的表现:

    图1 文本识别(OCR)指标

    图2 布局理解(mAP)

    图3 模型特征

    要点:SmolDocling的精度比27倍于其大小的LLM更高,同时使用的内存和处理页面的时间减少了28倍,仅需0.35秒(在A100 GPU上每页平均0.35秒)。对于RAG应用程序来说,这意味着可以在性能适中的硬件上更快、更准确地处理文档,同时还能保留文档结构,使智能分块成为可能。

    5.在RAG流程中实施SmolDocling

    许多团队忽略了一个关键见解:数据准备的质量决定了RAG流程后续的一切。SmolDocling不仅仅是一个OCR工具——它从根本上改变了处理文档的方式。

    为什么结构化提取会改变一切

    传统OCR提供的是一面文字墙。而SmolDocling提供是文档的语义地图。这种差异贯穿整个流程:

    (1)智能分块成为可能:通过DocTags提供元素类型和边界,可以基于实际文档结构进行分块。表作为一个语义单元保持在一起。代码块保持其完整性。多段落可以保持连贯。不再盲目地削减文字数量。

    (2)上下文感知嵌入:当分块具有结构时,嵌入将变得更有意义。包含带有标题的表格的块会创建与混杂在一起的相同文本不同的嵌入。语义关系得以保留,使检索更加准确。

    (3)分层索引:位置标签(<loc_x1><loc_y1><loc_x2><loc_y2>)不仅仅是坐标——它们代表文档层次结构。标头、子标头及其关联内容保持它们之间的关系。这支持复杂的检索策略,可以根据文档结构确定优先级。

    重要的准备过程

    在实施SmolDocling时,需要考虑分层的数据准备:

    • 文档摄取:以适当的分辨率处理文档(144 DPI是最佳分辨率)。
    • 结构化提取:让SmolDocling创建DocTags表示。
    • 语义分块:解析DocTags以基于元素类型创建有意义的块。
    • 元数据充实:使用结构信息向每个块添加充实的元数据。

    向量生成:创建受益于保留结构的嵌入。

    对RAG质量的实际影响

    对RAG质量实际影响的差别是显著的。在传统流程中,搜索“季度收入数字”可能会返回碰巧包含这些单词的随机文本片段。使用SmolDocling准备的数据,将获得包含这些数据的实际表格,其标题和周围的上下文保持完整。

    这不是理论上的——当从传统的OCR转换到保留结构的提取时,检索精度提高了30%~50%。在数据准备上的适当投入会在RAG性能上获得指数级的回报。

    6.为什么这样可以解决OCR问题

    还记得讨论的级联错误吗?以下介绍SmolDocling如何解决这些问题:

    • 不会传播OCR错误:由于它不是逐字符识别,而是从整体上理解文档,因此不会发生许多传统的OCR错误。
    • 从一开始就了解结构:表格、列表和格式在初始提取中就得以保留,因此分块策略有丰富的信息可供使用。
    • 统一处理:一个模型就可以处理文本、表格、公式和代码,无需将多个专用工具的输出整合在一起。
    • 为现代文档而设施:虽然传统OCR在处理复杂布局时遇到困难,但SmolDocling经过多种文档类型的训练,包括技术报告、专利和表格。

    从传统OCR到SmolDocling等视觉语言模型的转变,代表了如何处理RAG文档的根本变化。可以从一开始就使用干净、结构化的数据,而不是在事后与OCR错误作斗争,并试图重建文档结构。

    实施注意事项

    1.何时使用SmolDocling而不是传统OCR

    实际上,虽然SmolDocling更具优势,但它并不总是合适的工具:

    在以下情况下使用SmolDocling:

    • 正在处理各种文档类型(报告、表格、技术文档)。
    • 文档结构对用例很重要。
    • 需要处理表格、公式或代码块。
    • 可以使用GPU(即使是消费级的也可以)。
    • 想要一个单一的解决方案,而不是使用多个工具。

    在以下情况下坚持使用传统OCR:

    • 只需要来自简单文档的纯文本。
    • 处理的文档量非常大,其中0.35秒/页太慢了。
    • 有特殊需求(如历史手稿处理)。
    • 受限于仅使用CPU的环境。
    2.监控和质量保证

    即使SmolDocling有所改进,仍然需要进行质量检查:

    (1)针对已知模式的验证:如果处理发票,需要检查是否提取了标准字段。

    (2)交叉引用:对于关键数据,考虑同时使用SmolDocling和传统OCR进行处理,然后进行比较。

    (3)用户反馈循环:建立用户报告问题的机制。

    结论:未来是多模态的

    要点:将OCR作为单独的预处理步骤处理的日子已经屈指可数了。像SmolDocling这样的视觉语言模型展示了这样的未来:文档理解是整体进行的,而不是通过碎片化的流程。

    对于当今构建RAG系统的组织来说,这既是机遇也是挑战。其机遇是显而易见的:更好的文档理解可以提高RAG的性能。而面临的挑战是,现在正处于两种方法都有一席之地的过渡时期。

    在此给出的建议是,可以从尝试使用SmolDocling处理最棘手的文档(即传统OCR始终失败的文档)开始,不仅要衡量字符准确性方面的改进,还要衡量端到端RAG性能的改进。当系统真正理解文档结构,而不仅仅是提取字符时,可能会惊讶地发现系统性能得以显著提升。

    如今的研究进展迅速。Zhang等人(2024)在其文章中展示了当前OCR对RAG的影响有多大。Nassar等人(2025)随后提出了 SmolDocling 作为可行的解决方案。而且,很可能未来还会有更出色的进展。

    不过,用户不要一味地等待完美。利用SmolDocling能够有效处理90%文档的RAG系统,要比在理论上能处理100%文档但在面对现实复杂性时却失败的RAG系统要有价值得多。

    最终,用户并不关心开发人员面临的技术难题。他们只希望从文档中获取准确的答案。而借助像SmolDocling这样的方法,将会更接近于实现这一承诺。

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    如若转载,请注明出处:http://www.pswp.cn/pingmian/86693.shtml
    繁体地址,请注明出处:http://hk.pswp.cn/pingmian/86693.shtml
    英文地址,请注明出处:http://en.pswp.cn/pingmian/86693.shtml

    如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    SpringBoot -- 整合Junit

    11.SpringBoot 整合 Junit 11.1 为什么需要单元测试 由于在SpringBoot开发过程中&#xff0c;每开发一个模块&#xff0c;有时需要从 controller、service、mapper 到甚至 xml 文件的编写全部开发完毕才能进行测试&#xff0c;这是十分浪费时间的&#xff0c;比如开发人员想测…

    虚拟机远程连接编译部署QT程序

    概要 逻辑 我们需要凑齐 QT库、交叉编译工具、sysroot这三大件。 交叉编译的程序是部署到板卡环境运行,需要构建和板卡一样的库环境。 sysroot是我们在虚拟机上自己命名的一个文件夹,包含开发板的运行系统所需的所有文件。 虚拟机是x64版本,开发板是arm64版本。 如果开发板…

    基于SpringBoot的智慧旅游系统

    以智慧旅游系统的设计与实现为研究对象&#xff0c;旨在通过科技手段提升旅游业的管理效能和游客体验。在系统设计方面&#xff0c;深入分析了地理特征、丰富的文化底蕴以及多样的自然景观。结合这些独特之处&#xff0c;构建了一个多层次的旅游管理系统&#xff0c;包括景点信…

    下载最新版本的OpenOCD

    Download OpenOCD for Windowsd&#xff1a; https://gnutoolchains.com/arm-eabi/openocd/

    Geollama 辅助笔记:raw_to_prompt_strings_geo.py

    1 GeoLifePreprocessingDF 1.1 创造函数 1.2 读取原始数据 读取这个DataFrame 1.3 处理原始DataFrame 1.4 生成对应prompt 1.5 打乱轨迹 1.6 打乱轨迹里面的事件

    TDengine 如何打破工业实时数据库势力边界?

    打破工业实时数据库势力边界&#xff0c;TDengine 时序数据库与工业 SCADA 深度融合 随着 时序数据库&#xff08;Time Series Database&#xff09;的日益普及&#xff0c;越来越多的工业自动化控制&#xff08;工控&#xff09;人员开始认识到其强大能力。然而&#xff0c;时…

    渗透靶场:事件和属性被阻止的反射xss

    本关很多标签被拦截了&#xff0c;需要使用 burp 模糊测试哪个标签可以用 <a>和<animate>可以使用&#xff0c;<animate>是<svg>标签中用来给动画设定属性的&#xff0c;看看<svg>可不可用 利用<svg>、<animate>、<a>来构造 这…

    STM32中Usart的使用

    目录 一、USART简介 1.电平标准 2.通信接口 3.硬件电路 4.串口参数以及时序 5.串口时序 二、USART结构介绍 1.USART功能框图 ​编辑 1.1 功能引脚 1.2 数据寄存器 1.3 控制器 1.4 波特率发生器 1.5简化结构图 2.数据帧 一、USART简介 USART&#xff08;Universa…

    鸿蒙HarmonyOS 5小游戏实践:数字记忆挑战(附:源代码)

    数字记忆挑战游戏&#xff1a;打造提升大脑记忆力的鸿蒙应用 在当今数字时代&#xff0c;人们的记忆力面临着前所未有的挑战。从日常的待办事项到复杂的工作任务&#xff0c;强大的记忆力都是提高效率和表现的关键。本文将介绍一款基于鸿蒙系统开发的数字记忆挑战游戏&#xf…

    记录一个C#/.NET的HTTP工具类

    记录一个C#/.NET的HTTP工具类 using Serilog; using System.Net; using System.Text; using System.Text.Json;namespace UProbe.Common.Comm.Http {public class HttpClientHelper{/// <summary>/// 发送HttpGet请求/// </summary>/// <typeparam name"T…

    深度学习:PyTorch卷积神经网络之图像入门

    本文目录&#xff1a; 一、二值图像二、**灰度图像*三、**索引图像**四、**真彩色RGB图像****星空图** 前言&#xff1a;这篇文章开始讲解CNN&#xff0c;此前讲解的人工神经网络&#xff08;ANN&#xff09;如果有小伙伴还不清楚&#xff0c;一定要多看&#xff0c;多练习&…

    PyTorch RNN实战:快速上手教程

    PyTorch实现RNN的实例 以下是一个使用PyTorch实现RNN的实例代码,包含数据准备、模型定义、训练和评估步骤。 RNN流程图 RNN流程图,在使用t来表示当前时间点(序列中的第t项),RNN接收所有先前内容得单一个表示h和关于序列最新项的信息,RNN将这些信息合并到迄今为止所有看…

    C++项目快速配置SQLite

    前言&#xff1a;完全没接触过数据库&#xff0c;但老师课程设计要求数据存储在数据库怎么办&#xff1f;&#xff1f;&#xff1f;主包看了些网络上的资源&#xff0c;觉得讲得都不是很能快速上手&#xff0c;所以决定自己写一篇博客 SQLiteCpp是一个基于 C 封装的 SQLite 操…

    ArcGIS中对输入面图层A的相交问题批量处理的实现方法

    一、背景及意义 在各种数据建库中&#xff0c;拓扑错误是必须处理的&#xff0c;其中最常见的是重叠问题&#xff0c;我们常用拓扑工具来检查重叠&#xff0c;但是由于拓扑工具只能作为检查且不能批量修改&#xff0c;此时我们可以使用“相交”工具来检查出重叠部分&#xff0…

    【学习笔记】3.3 Decoder-Only PLM

    参考资料&#xff1a;https://github.com/datawhalechina/happy-llm Decoder-Only是当前大型语言模型&#xff08;LLM&#xff09;的基础架构&#xff0c;如 GPT 系列。GPT 是 Decoder-Only 架构的代表&#xff0c;而开源 LLM 如 LLaMA 也是在 GPT 架构基础上发展而来的。 3…

    主流的Attention Backend介绍

    Attention Backend 技术背景 注意力&#xff08;Attention&#xff09;机制在深度学习中扮演着关键角色&#xff0c;它帮助模型在处理序列数据时&#xff0c;有选择地关注输入中的重要信息。然而&#xff0c;传统的注意力计算往往受到内存访问和算力分配的双重制约&#xff0c…

    Linux内存取证

    我们先把linux取证文件放到kali中&#xff0c;然后这里的Ubuntu18.04-5.4.0-84-generic.zip需要不解压直接放到vol工具中 然后把Ubuntu18.04-5.4.0-84-generic放到vol工具中&#xff0c;然后开始去这个&#xff0c;使用vol工具查看linux的版本信息 这个LinuxUbuntu18_04-5_4_0-…

    使用docx4j 实现word转pdf(linux乱码处理)

    由于系统之前使用了是itext进行转换的&#xff0c;现在已经不是开源的工具了&#xff0c;需要收费&#xff0c;然后进行改造&#xff0c;具体处理如下。 <dependency><groupId>org.docx4j</groupId><artifactId>docx4j</artifactId><version…

    C++ - vector 的相关练习

    目录 前言 1、题1 只出现一次的数字 &#xff1a; 解法一&#xff1a;遍历 参考代码&#xff1a; 解法二&#xff1a;按位异或 参考代码&#xff1a; 解法三&#xff1a;哈希表 参考代码&#xff1a; 2、题2 杨辉三角&#xff1a; 参考代码&#xff1a; 总结 前言 …

    JDK 1.8 Stream API:集合流处理深度解析

    JDK 1.8 Stream API&#xff1a;集合流处理深度解析 摘要&#xff1a;Stream API 是 JDK 1.8 的革命性特性&#xff0c;它将集合操作从传统迭代升级为声明式函数式处理。Stream API三个阶段&#xff08;创建→中间操作→终端操作&#xff09;详解流处理机制&#xff0c;辅以代…