SmolDocling:一种超紧凑的视觉语言模型,用于端到端多模态文档转换

paper地址:SmolDocling: An ultra-compact vision-language model for
end-to-end multi-modal document conversion
Huggingface地址:SmolDocling-256M-preview
代码对应的权重文件:SmolDocling-256M-preview权重文件

一、摘要

以下是文章摘要的总结:

SmolDocling 是一个超紧凑型的视觉-语言模型,用于端到端的文档转换。它通过生成一种名为 DocTags 的新标记格式,捕捉文档中所有元素的内容、结构和位置。SmolDocling 在多种文档类型(如商务文档、学术论文、技术报告等)上表现出稳健的性能,能够准确重现代码、表格、公式、图表等复杂元素。与更大规模的模型相比,它在性能上具有竞争力,同时显著降低了计算需求。此外,该研究还贡献了多个公开数据集,用于支持图表、表格、公式和代码识别等任务。

(1)以下是 SmolDocling 模型支持的所有要素:

  1. 代码列表:识别和解析代码片段,包括缩进和行号等细节。
  2. 表格:识别表格结构,包括单元格合并、表头信息等。
  3. 公式:识别和解析数学公式,支持 LaTeX 格式。
  4. 图表:识别图表并将其转换为表格形式。
  5. 列表:识别有序列表和无序列表,支持嵌套列表。
  6. 页眉和页脚:识别页面的页眉和页脚内容。
  7. 图片:识别图片并提供分类信息。
  8. 段落文本:识别普通文本内容,包括换行和格式。
  9. 标题:识别文档中的标题和章节标题。
  10. 脚注:识别脚注内容。
  11. 文档索引:识别文档索引部分。
  12. 化学分子结构:识别化学分子图像并转换为 SMILES 格式(扩展功能)。

这些要素涵盖了文档中常见的各种内容类型,使得 SmolDocling 能够全面、准确地处理和转换复杂的文档。
(2) DocTags 输出格式
DocTags 是 SmolDocling 的核心输出格式,用于统一表示文档的内容、结构和布局。以下是 DocTags 支持的主要标签和格式:

文档块类型
  • <text>:普通文本内容。
  • <title>:标题或章节标题。
  • <section_header>:章节标题。
  • <list_item>:列表项。
  • <ordered_list>:有序列表。
  • <unordered_list>:无序列表。
  • <code>:代码片段,支持缩进和行号。
  • <formula>:数学公式,支持 LaTeX 格式。
  • <picture>:图片,支持分类信息。
  • <caption>:标题或说明文字(通常嵌套在图片或表格中)。
  • <footnote>:脚注。
  • <page_header>:页眉。
  • <page_footer>:页脚。
  • <document_index>:文档索引。
  • <otsl>:表格结构,使用 OTSL 标签表示。
位置标签
  • <loc_x1><loc_y1><loc_x2><loc_y2>:表示元素在页面中的位置(边界框),左上角坐标和右下角坐标。
表格结构(OTSL 标签)
  • <fcel>:包含内容的单元格。
  • <ecel>:空单元格。
  • <ched>:列标题单元格。
  • <rhed>:行标题单元格。
  • <srow>:表格部分的行。
代码分类
  • <_programming-language_>:编程语言分类标签(如 Python、Java 等)。
图片分类
  • <image_class>:图片分类标签(如 pie_chart、bar_chart、natural_image 等)。

2. 其他格式

SmolDocling 的输出可以通过 DocTags 转换为其他常见格式,具体取决于下游任务的需求:

LaTeX
  • 用于数学公式(<formula> 标签)的输出。
  • 示例:<formula>E = mc^2</formula> 可以转换为 LaTeX 格式。
HTML
  • 用于表格(<otsl> 标签)和其他结构化内容的输出。
  • 示例:<otsl> 标签可以转换为 HTML 表格。
Markdown
  • 用于文本、列表、标题等的输出。
  • 示例:<text>, <list_item>, <title> 等标签可以转换为 Markdown 格式。
SMILES
  • 用于化学分子结构的输出(扩展功能)。
  • 示例:分子图像可以转换为 SMILES 格式。

SmolDocling 的主要输出格式是 DocTags,它是一种高效的标记语言,能够统一表示文档的内容、结构和布局。此外,DocTags 可以轻松转换为其他常见格式(如 LaTeX、HTML、Markdown 等),以满足不同的应用需求。这种灵活性使得 SmolDocling 能够适应多种文档处理任务。

二、背景介绍

1、文档转换的背景与挑战

  • 技术挑战:将复杂的数字文档(如 PDF)转换为结构化的、可机器处理的格式是一项长期的技术难题。
  • 主要问题
    • 文档布局和样式的多样性。
    • PDF 格式本身不透明,优化用于打印而非语义解析。
    • 复杂的布局样式和视觉挑战元素(如表格、图表、表单)会影响文档的阅读顺序和理解。

2、现有方法的局限性

  • 传统流水线方法
    • 依赖多个专门模型(如 OCR、布局分析、表格结构识别等)。
    • 虽然结果质量高,但难以调优和泛化。
  • 大型多模态模型(LVLMs)
    • 能够端到端解决文档转换问题。
    • 存在幻觉(hallucinations)、计算资源消耗大等问题。
    • 缺乏高质量的公开数据集。

3、SmolDocling 的提出

  • 目标:通过一个紧凑的模型实现端到端的文档转换,同时保持高效性和高质量输出。
  • 核心创新
    • DocTags 格式:一种新的标记语言,用于统一表示文档的内容、结构和布局。
    • 超紧凑模型:基于 Hugging Face 的 SmolVLM-256M,参数量仅为 256M。
    • 数据集贡献:公开了多个高质量数据集,用于支持图表、表格、公式和代码识别等任务。

4、SmolDocling 的优势

  • 性能:在多种文档类型(如商务文档、学术论文、技术报告等)上表现出稳健的性能。
  • 效率:显著减少了计算需求,与更大规模的模型相比具有竞争力。
  • 灵活性:支持多种文档元素(如代码、表格、公式、图表等)的识别和转换。

5、数据集的贡献

  • DocLayNet-PT:140 万页的多模态文档预训练数据集,包含丰富的标注(如布局、表格、代码、图表等)。
  • 任务特定数据集:针对表格、代码、公式、图表等任务生成了多个高质量数据集(如 PubTables-1M、SynthChartNet、SynthCodeNet 等)。

三、相关工作

主要分为两个方面:大型视觉-语言模型(LVLMs)文档理解领域的研究现状。以下是详细总结:

1. 大型视觉-语言模型(LVLMs)

  • 专有模型
    • GPT-4oGeminiClaude 3.5 等专有模型展示了在多种模态(包括视觉)上的卓越能力。
  • 开源方法
    • BLIP-2:最早将视觉编码器与冻结的大型语言模型(如 OPT 或 FlanT5)结合,使用轻量级的 Q-former。
    • MiniGPT-4:在 BLIP-2 的基础上,将冻结的视觉编码器与冻结的 LLM(如 Vicuna)结合,使用 Q-Former 网络和单个投影层。
    • LLaVA:使用最小的适配层,结合视觉编码器和 LLM。
    • LLaVA-OneVisionLLaVA-NeXTInterleave:支持多图像、更高分辨率和视频理解。
    • InternLM-XComposer:专门设计用于处理高分辨率和文本-图像组合与理解。
    • Qwen-VL:引入位置感知适配器,解决视觉编码器生成的长图像特征序列带来的效率问题。
    • Qwen2.5-VL:使用窗口注意力和 2D 旋转位置嵌入,高效处理原生分辨率输入,并引入视觉-语言合并器进行动态特征压缩。

2. 文档理解领域的研究现状

  • 文档理解任务
    • 包括文档分类、OCR、布局分析、表格识别、键值对提取、图表理解、公式识别等。
  • 现有解决方案
    • 商业云服务:如 Amazon Textract、Google Cloud Document AI、Microsoft Azure AI Document Intelligence。
    • 前沿模型:如 GPT-4o、Claude。
    • 开源库:如 Docling、GROBID、Marker、MinerU 或 Unstructured。
  • 流水线系统
    • 实现了源代码中的流水线,根据输入文档有条件地应用专门的单任务模型,并将预测结果组合成有意义的文档表示。
    • 每个任务通常涉及人工设计的预处理和后处理逻辑(如设置布局检测的置信度阈值、匹配布局元素与文本单元格等)。
  • 多任务模型
    • 旨在提供一个能够同时处理多种文档理解相关任务的单一模型,利用跨任务共享的上下文和表示。
    • OCR 依赖方法:如 LayoutLM 和 UDOP,使用从外部 OCR 引擎提取的文本,以及图像和文本边界框位置作为输入。
    • 无 OCR 方法:如 Donut、Dessurt、DocParser、Pix2Struct,基于变换器的模型,端到端训练以直接从图像输出文本。
    • 大型视觉语言模型(LVLMs):如 LLaVA、LLaVA-OneVision、UReader、Kosmos-2 和 Qwen-VL,利用各种视觉编码器、投影适配器和 LLM。
    • 评估数据集:如 DocVQA 和 mPLUG-DocOwl 1.5 数据集,主要关注问答和推理。

3. 与 SmolDocling 相关的最接近的工作

  • Nougat:专注于学术文档的精确转换和结构识别。
  • DocOwl 2:使用动态形状自适应裁剪模块处理高分辨率图像,并通过 ViT 视觉编码器和 LLaMa 基础的 LLM 进行处理。
  • GOT:专注于将多种元素(如文本、公式、分子图、表格、图表、乐谱和几何形状)转换为结构化格式。
  • Qwen2.5-VL:引入 Omni-Parsing 策略,将多种文档元素整合到一个统一的基于 HTML 的表示中。

四、SmolDocling 模型

在这里插入图片描述
图1展示了SmolDocling的端到端流程:输入文档图像,经视觉编码器提取特征,与文本提示嵌入结合,通过LLM自回归生成DocTags序列输出。

1、SmolDocling 的模型架构

SmolDocling 的模型架构通过紧凑的视觉编码器和轻量级语言模型设计,结合激进的像素洗牌策略和视觉嵌入投影与池化技术,实现了高效的多模态融合,能够快速、准确地将文档图像转换为结构化的 DocTags 格式,显著减少了计算需求,同时在多种文档任务上表现出色。

2、DocTags格式

DocTags格式是一种结构化的标记语言,用于高效表示文档内容、结构和布局,通过明确标签(如文本、标题、列表项、代码、公式、图片等)和位置信息标签,支持表格结构和代码、图片分类,结合图2展示其如何描述文档元素的关键特征,包括元素类型、位置和内容,从而实现文档的高效转换和解析。
在这里插入图片描述
图2:DocTags格式描述了文档元素的关键特征:元素类型(文本、图片、表格、代码等)、页面位置和内容。嵌套标签传达额外信息:图片和表格可以嵌套标题,表格结构用OTSL标签表示,列表嵌套列表项,代码和图片带有分类。所有DocTags输出均来自SmolDocling预测,人为插入了换行符和点(…)以提高可读性。

3、模型训练

SmolDocling的模型训练采用课程学习方法,通过三个阶段逐步提升模型性能。
初始阶段将DocTags标记引入tokenizer,冻结视觉编码器,单独训练语言模型以适应新输出格式。

联合训练阶段解冻视觉编码器,同时训练视觉和语言部分,实现多模态融合。

最后使用所有数据集进行微调,确保模型在多种任务上的泛化能力。训练数据涵盖DocLayNet-PT预训练数据集和多个任务特定数据集,全面覆盖多种文档类型和任务。最终,SmolDocling在A100 GPU上实现单页转换时间0.35秒,内存占用仅0.489 GB,展现出高效、准确的文档转换能力。

五、数据

1、预训练数据集
  • DocLayNet-PT:包含140万页的文档图像,从CommonCrawl、Wikipedia和商业文档中提取,涵盖方程式、表格、代码和彩色布局等内容。通过PDF解析和增强处理,提供布局元素、表格结构、语言、主题和图形分类的弱标注。
  • Docmatix:包含130万文档,采用与DocLayNet-PT相同的弱标注策略,并增加了将多页文档转换为DocTags的指令。
2、任务特定数据集
  • 布局数据集
    • DocLayNet v2:从DocLayNet-PT中采样76K页,经人工标注和质量审查,用于微调。
    • WordScape:提取63K包含文本和表格的页面,作为可靠的真实标注源。
    • SynthDocNet:合成250K页,使用Wikipedia内容生成,增强模型对不同布局、颜色和字体的适应性。
  • 表格数据集:包括PubTables-1M、FinTabNet、WikiTableSet和从WordScape文档中提取的表格信息,转换为OTSL格式并与文本内容交织,形成紧凑序列。
  • 图表数据集:包含250万张不同类型的图表(线图、饼图、柱状图等),使用三个可视化库生成,确保视觉多样性。
  • 代码数据集:包含930万段渲染代码片段,涵盖56种编程语言,使用LaTeX和Pygments生成视觉多样化的代码渲染。
  • 公式数据集:包含550万条独特公式,从arXiv源LaTeX代码中提取并规范化,使用LaTeX渲染,确保模型训练基于正确和标准化的代码。
3、文档指令调优数据集
  • 使用DocLayNet-PT页面样本,通过随机采样布局元素生成指令,如“在特定边界框内执行OCR”、“识别页面元素类型”等,并结合Granite-3.1-2b-instruct LLM避免灾难性遗忘。
    在这里插入图片描述
    表2:结构化文档文本识别。我们在DocLayNet上评估OCR性能和文档格式,重点关注文本元素,排除表格。文本准确性通过多个指标(编辑距离、F1分数、精确度、召回率、BLEU和METEOR)进行衡量。
4、数据集贡献
  • SmolDocling团队贡献了多个高质量数据集,包括DocLayNet-PT、Docmatix、SynthChartNet、SynthC

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

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

相关文章

MySQL SQL Mode

SQL Mode 是 MySQL 中一个重要的系统变量&#xff0c;它决定了 MySQL 应遵循的 SQL 语法规则和数据验证规则。 什么是 SQL Mode SQL Mode 定义了 MySQL 应该支持的 SQL 语法以及执行数据验证的方式。通过设置不同的 SQL Mode&#xff0c;可以让 MySQL 在不同程度上兼容其他数据…

Java bs架构/反射

bs架构 规定的格式是要换行&#xff0c;而打印流天然换行 线程池可以直接处理thread&#xff0c;thread继承自runnable 在Java中&#xff0c;线程池的pool.execute()方法用于提交一个任务给线程池执行。这个方法接受一个Runnable对象作为参数。Runnable是一个函数式接口&…

C++手撕单链表及逆序打印

在学习数据结构的过程中&#xff0c;链表是一个非常重要的基础数据结构。今天&#xff0c;我们将通过C手动实现一个单链表&#xff0c;并添加一个逆序打印的功能&#xff0c;帮助大家更好地理解链表的实现和操作。 一、链表简介 链表是一种线性数据结构&#xff0c;其中每个元…

netty中的ChannelPipeline详解

Netty中的ChannelPipeline是事件处理链的核心组件,负责将多个ChannelHandler组织成有序的责任链,实现网络事件(如数据读写、连接状态变化)的动态编排和传播。以下从核心机制、执行逻辑到应用场景进行详细解析: 1. 核心结构与组成 双向链表结构 组成单元:ChannelPipeline…

智能物联网网关策略部署

实训背景 某智慧工厂需部署物联网网关&#xff0c;实现以下工业级安全管控需求&#xff1a; 设备准入控制&#xff1a;仅允许注册MAC地址的传感器接入&#xff08;白名单&#xff1a;AA:BB:CC:DD:EE:FF&#xff09;。协议合规性&#xff1a;禁止非Modbus TCP&#xff08;端口…

前端-vue2核心

官网网址Vue2 安装 — Vue.js 搭建环境 第一种方式&#xff08;刚开是接触Vue&#xff09; 我们看官网&#xff0c;可以直接在script引入vue版本。这里有两个版本&#xff0c;开发版和生产版本。我们两个都下载。 然后创建一个项目&#xff0c;将下载的生产版本和开发版本粘…

【BUG】远程连接阿里云服务器上的redis报错

出现 Redis Client On Error: Error: connect ECONNREFUSED 47.100.XXX.XX:6379 错误&#xff0c;表明 Redis 客户端无法连接到指定的 Redis 服务器&#xff0c;可按以下步骤排查解决&#xff1a; 1. 检查 Redis 服务器是否运行 操作&#xff1a;在 Redis 服务器所在终端执行…

mongodb--用户管理

文章目录 MongoDB 用户管理1. 连接到 MongoDB2. 用户创建2.1 创建管理员用户2.2 创建特定数据库用户2.3 常用内置角色 3. 用户管理操作3.1 查看所有用户3.2 查看特定用户信息3.3 更新用户密码3.4 添加用户角色3.5 移除用户角色3.6 删除用户 4. 权限修改4.1 创建自定义角色4.2 将…

DeepSeek与搜索引擎:AI生成内容如何突破“语义天花板”

一、搜索引擎的“内容饥饿症”与AI的“产能悖论” 2024年&#xff0c;全球每天新增470万篇网络文章&#xff0c;但搜索引擎的索引拒绝率高达68%。这一矛盾的根源在于&#xff1a;算法对“高质量原创”的定义已从“形式独特性”转向“认知增值性”。传统AI生成内容&#xff08;…

YOLO目标检测应用——基于 YOLOv8目标检测和 SAM 零样本分割实现指定目标分割

概述 在当前的计算机视觉领域&#xff0c;目标分割技术正变得越来越重要。市面上有许多分割模型&#xff0c;它们的工作原理大致相似&#xff0c;通常包括收集数据、配置模型以及训练分割模型等步骤。最终目标是实现精确的目标分割。而随着 SAM&#xff08;Segment Anything M…

在Flutter中使用BottomNavigationBar和IndexedStack可以实现一个功能完整的底部导航栏

在Flutter中&#xff0c;使用BottomNavigationBar和IndexedStack可以实现一个功能完整的底部导航栏。BottomNavigationBar用于显示底部的导航按钮&#xff0c;而IndexedStack则用于管理页面的切换&#xff0c;确保每个页面的状态得以保留&#xff08;即页面不会因为切换而重新构…

【10】数据结构的矩阵与广义表篇章

目录标题 二维以上矩阵矩阵存储方式行序优先存储列序优先存储 特殊矩阵对称矩阵稀疏矩阵三元组方式存储稀疏矩阵的实现三元组初始化稀疏矩阵的初始化稀疏矩阵的创建展示当前稀疏矩阵稀疏矩阵的转置 三元组稀疏矩阵的调试与总代码十字链表方式存储稀疏矩阵的实现十字链表数据标签…

微服务篇——SpringCloud

服务注册 Spring Cloud5大组件有哪些&#xff1f; 服务注册和发现是什么意思&#xff1f;Spring Cloud如何实现服务注册发现&#xff1f; nacos与eureka的区别 负载均衡 如何实现负载均衡&#xff1f; Ribbon负载均衡的策略有哪些&#xff1f; 如何自定义负载均衡的策略&…

【小沐杂货铺】基于Three.JS绘制三维数字地球Earth(GIS 、WebGL、vue、react,提供全部源代码)

&#x1f37a;三维数字地球系列相关文章如下&#x1f37a;&#xff1a;1【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;456:OpenGL、glfw、glut&#xff09;第一期2【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;456:OpenGL、glfw、glut&#xff09;第二期3【小沐…

Cursor 在前端需求开发工作流中的应用|得物技术

一、引言 很高兴与大家分享现阶段 Cursor 在我的工作中的使用体验。首先是预期管理&#xff0c;本篇文章不会分享 x 个你可能不知道的小技巧&#xff0c;也不会让你拥有无需自行编码的能力&#xff0c;同时不涉及 Cursor 工程化方面内容。仅仅是围绕个人开发流程中的已有问题&…

PyQt学习记录

PyQt学习记录 要在界面上 创建一个控件&#xff0c;就需要在程序代码中 创建 这个 控件对应类 地一个 实例对象。 在Qt系统中&#xff0c;控件&#xff08;widget&#xff09;是 层层嵌套 的&#xff0c;除了最顶层的控件&#xff0c;其他的控件都有父控件。 几个函数 函数mo…

react: styled-components实现原理 标签模版

styled-components是针对react中一个前端广泛使用的css-in-js样式库B站 利用标签模版 利用ES6中的 标签模版文档标签模板其实不是模板&#xff0c;而是函数调用的一种特殊形式。“标签”指的就是函数&#xff0c;紧跟在后面的模板字符串就是它的参数。 let a 5; let b 10;…

网络安全应急响应之文件痕迹排查:从犯罪现场到数字狩猎的进化论

凌晨3点&#xff0c;某金融企业的服务器突然告警&#xff0c;核心数据库出现未知进程访问。安全团队紧急介入时&#xff0c;攻击者已抹去日志痕迹。在这场与黑客的时间赛跑中&#xff0c;文件痕迹排查成为破局关键。本文将带您深入数字取证的"案发现场"&#xff0c;揭…

多模态大语言模型arxiv论文略读(七)

MLLM-DataEngine: An Iterative Refinement Approach for MLLM ➡️ 论文标题&#xff1a;MLLM-DataEngine: An Iterative Refinement Approach for MLLM ➡️ 论文作者&#xff1a;Zhiyuan Zhao, Linke Ouyang, Bin Wang, Siyuan Huang, Pan Zhang, Xiaoyi Dong, Jiaqi Wang,…

idea插件:AICommit,智能生成Git提交信息

AICommit&#xff1a;智能生成Git提交信息的IDEA插件指南 一、AICommit插件介绍 AICommit是一款专为开发者设计的IntelliJ IDEA插件&#xff0c;它利用人工智能技术自动生成清晰、规范的Git提交信息(Commit Message)。该插件能够分析你的代码变更&#xff0c;理解修改的上下文…