SmolDocling技术解析:2亿参数胜过70亿参数的轻量级文档处理模型

360影视 欧美动漫 2025-05-15 10:18 1

摘要:文档理解与转换技术已成为现代数字化流程中的核心组成部分。SmolDocling作为该领域的前沿发展,代表了一种专为端到端文档转换设计的超紧凑视觉模型。该技术创新由HuggingFace与IBM联合研发,相关论文已于2025年3月发表。本文将深入分析SmolDo

文档理解与转换技术已成为现代数字化流程中的核心组成部分。SmolDocling作为该领域的前沿发展,代表了一种专为端到端文档转换设计的超紧凑视觉模型。该技术创新由HuggingFace与IBM联合研发,相关论文已于2025年3月发表。本文将深入分析SmolDocling的核心技术架构及其实现机制。

SmolDocling基于Hugging Face SmolVLM-256M模型开发而来,是一款体积显著小于同类产品的紧凑型模型。与主流视觉模型相比,其体积减小了5-10倍,仅包含2.56亿个参数。尽管规模较小,其性能水平却足以与参数量为其27倍的大型视觉模型相媲美。

SmolDocling的关键技术优势在于其全面表示文档页面内容与结构的能力。该模型不仅能够精确捕获文本内容,还能识别文档的整体结构以及页面元素的空间位置关系,为文档理解提供了更为完整的解决方案。

SmolDocling采用名为"DocTags"的专用格式进行文档转换。DocTags本质上是一种类XML标记语言,专门用于定义文档元素的核心属性。该格式具有以下技术特性:

DocTags定义了文档元素的三个基本属性:元素类型、页面位置和内容。元素类型涵盖文本、图像、表格、代码、标题、脚注等内容组件;页面位置精确标识元素在页面上的空间坐标;内容则表示元素所包含的实际信息,可为文本或结构化数据。

DocTags中的基本文档元素均由XML风格的标签封装。每个元素可附带额外的位置标签,用于表示其在页面上的精确位置。这种位置信息以边界框形式呈现,采用格式,其中:

x1, y1:表示边界框左上角的坐标x2, y2:表示边界框右下角的坐标

DocTags通过标签嵌套提供多层级信息表示。图像和表格可包含由专用标题标签表示的标题信息;表格结构由OTSL标签定义,用于精确表达表格数据的组织形式;列表可嵌套列表项,实现信息的层次化组织;代码块和图像可携带分类信息(如编程语言或内容类型),为视觉或代码内容提供上下文语义。

相较于HTML或Markdown等标准格式,DocTags具有显著技术优势。其清晰的标签结构减少了文档元素定义的歧义性;结构与内容的明确分离提高了处理效率;位置标签精确保留了原始页面布局;令牌优化机制最小化了总令牌数,提升了处理效率;此外,其结构化的一致数据格式显著增强了图像到序列模型的建模性能,实现了更高质量的输出生成。

SmolDocling采用了全面的端到端处理架构,用于将文档图像精确转换为DocTags格式。该架构包含以下关键技术模块:

输入处理模块接收页面图像(待处理的文档页面)和文本提示(提供转换指令,如"转换为Docling")。视觉处理模块利用专用视觉编码器将页面图像转换为视觉嵌入表示,随后通过投影和池化操作将这些视觉嵌入转换为更为紧凑的数据格式。

嵌入集成模块将经投影处理的视觉嵌入(即视觉信息的结构化表示)与从文本提示生成的文本嵌入进行融合,生成模型的综合输入表示。输出生成模块采用语言模型(LLM)处理这些嵌入,生成DocTags格式的结构化输出。

此架构有效整合了图像理解与文本生成能力,通过端到端处理流程保留了文档的内容与结构特性。特别值得注意的是,LLM的自回归特性使系统能够精确地将复杂文档结构转换为DocTags格式,确保了高质量的输出。

SmolDocling的技术架构适用于多种文档理解任务。其文档分类功能支持自动对不同类型文档进行精确分类;光学字符识别(OCR)能力实现了图像中文本的机器编码转换;布局分析功能可识别文档的结构组织及各部分之间的关联关系;表格识别功能能够保留结构完整性的同时提取表格数据。

在高级应用方面,SmolDocling在键值提取任务中表现出色,能够识别文档中的关键信息对;其图形理解功能可解析数据可视化表示及其语义;数学方程识别能力支持将复杂公式转换为结构化格式。值得特别注意的是,该模型在提取代码、表格、图形和方程等复杂文档元素方面展现了卓越性能,这使其能够有效处理具有复杂结构的专业文档。

SmolDocling的开发团队充分利用了现有数据集资源,并针对数据不足的领域创建了专用数据集并开源发布。在模型训练过程中,研究人员应用了数据增强技术,并专门准备了特定数据集以增强模型对代码列表、数学方程和图形的理解能力。这种综合的数据策略显著提升了模型在多类型文档处理中的性能表现。

SmolDocling在多方面展现了技术创新,使其区别于其他文档理解模型:

阅读顺序保留机制:对于富含表格和图形等元素的内容,文档内的阅读顺序至关重要。SmolDocling通过专门设计的算法保留了这种语义完整性,确保了信息解析的连贯性。

整体处理方法:与将转换问题分解为子任务的传统系统不同,SmolDocling提供了端到端的综合解决方案,克服了系统适应性和泛化能力的限制。

位置感知技术:该模型采用边界框编码方式保留页面布局信息,实现了文档空间结构的精确表示。

SmolDocling在DocLayNet数据集上进行了全面评估,采用编辑距离、F1分数、精确率、召回率、BLEU和METEOR等多种评价指标。测试结果表明其在文本准确性方面表现卓越。下表展示了其与其他模型的性能对比:

基于DocLayNet的评估结果显示,SmolDocling模型在整页文档转换方面达到了最低的编辑距离(0.48)和最高的F1分数(0.80)。在精确率、召回率、BLEU和METEOR等指标上,SmolDocling同样优于其他对比模型。

在专项任务评估中,SmolDocling在代码列表处理方面取得了显著成果,编辑距离为0.11,F1分数达0.92。在方程识别任务中,其性能与GOT模型相当,编辑距离为0.11,F1分数为0.95,精确率达0.96。

尤为值得关注的是,与参数量显著更大的模型(如7B参数的Qwen2.5 VL)相比,SmolDocling仍然取得了更优的评估结果。这充分证明了其架构设计的有效性以及DocTags格式在结构化文档识别任务中的技术优势。

以下代码示例展示了SmolDocling的实际应用实现。需要特别注意的是,确保PIL库版本为最新,以避免潜在的兼容性问题。

# /// 脚本 # requires-python = ">=3.12" # 需要 Python 版本 >= 3.12# dependencies = [ # 依赖项# "docling-core", # "mlx-vlm", # "pillow", # ] # /// from io import BytesIO from pathlib import Path from urllib.parse import urlparse import requests from PIL import Image from docling_core.types.doc import ImageRefMode from docling_core.types.doc.document import DocTagsDocument, DoclingDocument from mlx_vlm import load, generate from mlx_vlm.prompt_utils import apply_chat_template from mlx_vlm.utils import load_config, stream_generate ## 设置 SHOW_IN_BROWSER = True # 将输出导出为 HTML 并在 Web 浏览器中打开。## 加载模型 model_path = "ds4sd/SmolDocling-256M-preview-mlx-bf16" model, processor = load(model_path) config = load_config(model_path) ## 准备输入 prompt = "Convert this page to docling." image = "sample.png" # 加载图像资源 if urlparse(image).scheme != "": # 它是一个 URLresponse = requests.get(image, stream=True, timeout=10) response.raise_for_status pil_image = Image.open(BytesIO(response.content)) else: pil_image = Image.open(image) # 应用聊天模板 formatted_prompt = apply_chat_template(processor, config, prompt, num_images=1) ## 生成输出 print("DocTags: \n\n") output = "" for token in stream_generate( model, processor, formatted_prompt, [image], max_tokens=4096, verbose=False ): output += token.text print(token.text, end="") if "" in token.text: break print("\n\n") # 填充文档 doctags_doc = DocTagsDocument.from_doctags_and_image_pairs([output], [pil_image]) # 创建一个 docling 文档 doc = DoclingDocument(name="SampleDocument") doc.load_from_doctags(doctags_doc) ## 导出为任何格式 # Markdown print("Markdown: \n\n") print(doc.export_to_markdown) # HTML if SHOW_IN_BROWSER: import webbrowser out_path = Path("./output.html") doc.save_as_html(out_path, image_mode=ImageRefMode.EMBEDDED) webbrowser.open(f"file:///{str(out_path.resolve)}")

此代码实现了完整的图像内容分析流程,并通过DocTags生成结构化表示。代码主要执行以下技术步骤:

导入必要库:引入了请求处理、图像处理和文档生成所需的核心组件。初始化模型配置:加载预训练的SmolDocling模型及其配置参数。准备输入数据:设置处理提示和目标图像路径。图像处理:实现了URL和本地文件两种图像加载方式。应用提示模板:将用户提示格式化为符合模型要求的输入格式。生成DocTags输出:通过流式生成方式逐步构建结构化文档表示。构建文档对象:将生成的DocTags与原始图像关联,创建完整的文档对象。多格式导出:提供了Markdown和HTML两种导出选项,支持文档的多场景应用。

以下是一个实际文档处理示例:

SmolDocling的处理结果如下:

从表格处理效果来看,模型表现相当出色。尽管原始文档中的模拟器级别值采用居中对齐方式导致了轻微的数据偏移,但整体表格结构得到了准确保留,充分展示了模型的结构化数据处理能力。

SmolDocling作为文档处理领域的技术创新,以其紧凑的参数规模和卓越的性能表现树立了新的标准。通过采用DocTags格式和端到端架构设计,该模型能够高精度地表示文档的内容和结构特征。在资源受限环境或需要高可扩展性的应用场景中,SmolDocling提供了显著的技术优势。

性能评估结果证明,SmolDocling在整页文档转换、代码列表分析和方程识别等多项任务中均展现出优异性能。即使与参数量远大于其的模型相比,SmolDocling仍能取得具有竞争力的结果,这充分证明了其模型设计理念和DocTags格式的技术有效性。

在数字化转型加速的背景下,采用SmolDocling这类轻量高效的文档处理模型,将通过平衡性能与资源消耗,为文档处理系统的广泛应用提供可靠的技术支持。

作者:Buse Şenol

来源:deephub

相关推荐