一、前言
在人工智能领域,文档处理一直是研究的热点之一。随着多模态技术的发展,如何高效地将图像文档转换为结构化文本,同时保留文档的布局和复杂元素,成为了一个重要的研究方向。SmolDocling 正是在这一背景下应运而生的轻量级多模态文档处理模型。它以其高效的处理能力和灵活的应用场景,为文档处理领域带来了新的突破。
二、项目概述
SmolDocling 是一个由 IBM 研究院 Docling 团队开发的开源视觉语言模型,专为文档光学字符识别(OCR)和转换而设计。
该模型具有 256M 参数,能够在消费级 GPU 上快速处理文档,每页文档的处理时间仅需 0.35 秒,使用不到 500MB 的显存。SmolDocling 的目标是通过端到端的方式将图像文档转换为结构化文本,同时保留文档的原始布局和复杂元素,如代码块、数学公式、图表等。
三、技术原理
-
轻量级设计
SmolDocling-256M-preview 是一个仅包含 256M 参数的视觉语言模型,专为文档 OCR 和转换而设计。这种轻量级设计使得模型能够在消费级 GPU 上快速运行,同时保持高效的处理能力。相比其他大型模型,SmolDocling 在资源占用和处理速度上具有显著优势,能够更好地适应移动设备和资源受限的环境。 -
视觉骨干网络
模型采用了 SigLIP base patch-16/512 作为视觉骨干网络,网络参数量为 93M。通过像素压缩技术,每个 512×512 的图像块被压缩为 64 个视觉标记,显著降低了计算资源需求。这种高效的视觉信息处理能力,使得 SmolDocling 能够准确地从图像中提取文本和布局信息。 -
文本编码器
SmolDocling 使用 SmolLM-2 作为文本编码器,编码器参数量为 135M。它能够处理文本输入并与视觉信息进行融合,从而实现多模态的文档处理。文本编码器的设计使得模型能够理解和处理复杂的文本结构和语义信息。 -
多模态融合与输出
SmolDocling 能够接收图像和文本的多模态输入,并生成结构化的文本输出。它支持多种文档处理功能,包括将文档图像转换为结构化文本、提取图表和表格信息、将数学公式转换为 LaTeX 格式等。通过多模态融合技术,SmolDocling 能够更全面地理解和处理文档内容。 -
优化的数据集与训练策略
SmolDocling 的训练数据集包括科学和非科学文档,文档理解占比达到 41%。训练过程中采用了更高的像素标记率(4096 像素/标记),相比之前的 1820 像素/标记,显著提升了效率。这种优化的数据集和训练策略,使得模型在处理各种类型的文档时都能表现出色。
四、功能特点
-
多模态文档转换
SmolDocling 能够高效地将图像文档转换为结构化文本,支持科学和非科学文档。它能够识别和提取文档中的关键信息,如公式、图表和表格。 -
快速推理
在 A100 GPU 上处理一页文档仅需 0.35 秒,使用不到 500MB 的显存。这种高效的处理能力使得 SmolDocling 非常适合在移动设备或资源受限的环境中运行。 -
OCR 与布局识别
SmolDocling 提供高效的光学字符识别(OCR)功能,能够从图像中准确提取文本,同时保留文档的结构和元素边界框。 -
复杂元素识别
模型能够识别代码块、数学公式、图表、表格等复杂文档元素。这使得 SmolDocling 在处理学术论文和技术报告等复杂文档时表现出色。 -
与 Docling 无缝集成
SmolDocling 支持将结果转换为多种格式(如 Markdown、HTML 等),并兼容 Docling。这种无缝集成使得用户可以轻松地将 SmolDocling 的输出与其他工具和平台结合使用。 -
指令支持
SmolDocling 支持多种指令,如将页面转换为 Docling 格式、将图表转换为表格、将公式转换为 LaTeX 等。
五、应用场景
-
文档转换与数字化
SmolDocling 能够高效地将图像形式的文档转换为结构化的文本格式,同时保留文档的原始布局和复杂元素。支持多种输出格式,包括 Markdown、HTML 等,适用于文档的数字化处理。 -
科学与非科学文档处理
SmolDocling 能够处理非科学内容(如商业文档、专利文件等),识别和提取文档中的关键信息。这使得它在学术研究和商业文档处理中都具有广泛的应用前景。 -
快速 OCR 与布局识别
SmolDocling 提供高效的光学字符识别(OCR)功能,能够从图像中准确提取文本,同时保留文档的结构和元素边界框。这种能力使其在文档扫描和数字化领域具有显著优势。 -
移动与低资源设备支持
SmolDocling 可以在移动设备或资源受限的环境中运行。例如,智能手机或便携式计算机可以轻松地利用 SmolDocling 进行文档处理。
六、快速使用
下面是使用 Transformers 进行单页图像推理示例
# Prerequisites:
# pip install torch
# pip install docling_core
# pip install transformers
import torch
from docling_core.types.doc import DoclingDocument
from docling_core.types.doc.document import DocTagsDocument
from transformers import AutoProcessor, AutoModelForVision2Seq
from transformers.image_utils import load_image
# 检查设备是否支持 CUDA,若支持则使用 GPU,否则使用 CPU
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
# 加载图像
# 注意:由于网络原因,链接解析可能失败。如果需要该网页的解析内容,请检查链接的合法性,并适当重试。
# 如果链接无法访问,可以尝试更换为本地图像路径或其他可访问的图像链接。
image = load_image("https://upload.wikimedia.org/wikipedia/commons/7/76/GazettedeFrance.jpg")
# 初始化处理器和模型
# 使用 Hugging Face 提供的预训练模型 SmolDocling-256M-preview
processor = AutoProcessor.from_pretrained("ds4sd/SmolDocling-256M-preview")
model = AutoModelForVision2Seq.from_pretrained(
"ds4sd/SmolDocling-256M-preview",
torch_dtype=torch.bfloat16, # 使用 bfloat16 数据类型以提高效率
_attn_implementation="flash_attention_2" if DEVICE == "cuda" else "eager", # 根据设备选择注意力实现方式
).to(DEVICE) # 将模型移动到指定设备(GPU 或 CPU)
# 创建输入消息
# 定义用户请求,包含图像输入和文本指令
messages = [
{
"role": "user",
"content": [
{"type": "image"}, # 图像输入
{"type": "text", "text": "Convert this page to docling."} # 文本指令
]
},
]
# 准备输入数据
# 使用处理器将消息模板化为模型输入
prompt = processor.apply_chat_template(messages, add_generation_prompt=True)
inputs = processor(text=prompt, images=[image], return_tensors="pt") # 将图像和文本输入转换为张量
inputs = inputs.to(DEVICE) # 将输入数据移动到指定设备
# 生成输出
# 调用模型生成文本输出
generated_ids = model.generate(**inputs, max_new_tokens=8192)
prompt_length = inputs.input_ids.shape[1] # 获取输入提示的长度
trimmed_generated_ids = generated_ids[:, prompt_length:] # 去掉输入提示部分,仅保留生成的内容
doctags = processor.batch_decode(
trimmed_generated_ids,
skip_special_tokens=False, # 不跳过特殊标记,保留完整的输出
)[0].lstrip() # 去掉前导空格
# 创建 DocTagsDocument 对象
# 从生成的 doctags 和图像对中创建文档对象
doctags_doc = DocTagsDocument.from_doctags_and_image_pairs([doctags], [image])
print(doctags) # 打印生成的 doctags
# 创建 DoclingDocument 对象
doc = DoclingDocument(name="Document") # 初始化 DoclingDocument 对象
doc.load_from_doctags(doctags_doc) # 从 doctags 文档加载数据
# 导出为 Markdown 格式
# 将文档导出为 Markdown 格式并打印
print(doc.export_to_markdown())
# 导出为其他格式(如 HTML)
# 如果需要导出为 HTML 格式,可以取消注释以下代码
# doc.save_as_html(output_file)
七、结语
SmolDocling 以其轻量级的设计和强大的多模态文档处理能力,为文档处理领域带来了新的可能性。它不仅能够高效地将图像文档转换为结构化文本,还支持多种复杂元素的识别和提取。无论是在学术研究、商业文档处理还是移动设备应用中,SmolDocling 都展现出了巨大的潜力。随着技术的不断发展,我们期待 SmolDocling 能够在未来发挥更大的作用。
如何学习AI大模型 ?
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓
CSDN粉丝独家福利
这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】
读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
👉1.大模型入门学习思维导图👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过AI大模型的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。(全套教程文末领取哈)
👉2.AGI大模型配套视频👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。
👉3.大模型实际应用报告合集👈
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(全套教程文末领取哈)
👉4.大模型落地应用案例PPT👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(全套教程文末领取哈)
👉5.大模型经典学习电子书👈
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(全套教程文末领取哈)
👉6.大模型面试题&答案👈
截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(全套教程文末领取哈)
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习
CSDN粉丝独家福利
这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】
读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈