在现代企业中,每天都有海量的文档需要处理——无论是合同、报告、学术论文还是技术手册。传统的光学字符识别(OCR)技术虽然能够提取文字,却常常丢失文档的核心结构:表格变得混乱,数学公式无法识别,代码段格式错乱,甚至段落顺序都可能错位。这不仅降低了信息检索的效率,也为后续的自动化处理带来了巨大挑战。
IBM 最近推出的 Granite-Docling-258M,正是为了彻底解决这些问题而诞生的。这是一个完全开源的、基于 Apache 2.0 许可证的多模态视觉-语言模型,专门用于端到端的文档转换。它不仅仅是一个OCR工具,更是一个能理解文档整体结构的AI模型。
什么是 Granite-Docling-258M?
Granite-Docling-258M 是一个具有 2.58 亿参数的多模态模型,能够接收图像和文本输入,并输出结构化的文本结果。它的最大特点在于能够保持文档的原始布局,准确提取表格、代码、数学公式、列表、题注等元素,并输出一种名为 DocTags 的中间表示格式。这种格式可以轻松转换为 Markdown、HTML 或 JSON,从而为下游任务(如检索增强生成RAG或数据分析)提供高质量的结构化输入。
你可以把它想象成一位不仅“看得见”文字,还能“理解”文档结构的智能助手。
与前代模型 SmolDocling 相比,有哪些提升?
Granite-Docling-258M 是此前 SmolDocling-256M 预览版的正式生产级版本。IBM 在这一版本中做出了多项关键改进:
-
更强的语言模型:将原有的语言模型替换为 Granite 165M,显著提升了文本理解和生成能力。 -
更先进的视觉编码器:采用 SigLIP2 作为视觉编码器,大幅提升了对图像内容的理解精度。 -
更高的稳定性:修复了此前版本中可能出现的重复输出或无限循环问题,使其更适合企业级部署。
在实际评估中,新模型在多项任务上均表现出显著提升:
任务类型 | Granite-Docling-258M | SmolDocling-256M |
---|---|---|
布局分析 (MAP) | 0.27 | 0.23 |
全文OCR (F1) | 0.84 | 0.80 |
代码识别 (F1) | 0.988 | 0.915 |
数学公式识别 (F1) | 0.968 | 0.947 |
表格识别 (TEDS-结构) | 0.97 | 0.82 |
多模态理解 (MMStar) | 0.30 | 0.17 |
综合OCR能力 (OCRBench) | 500 | 338 |
这些数据表明,新模型不仅在各项任务中表现更优,尤其是在代码和表格识别方面几乎接近完美,而且在综合评估中也体现出更强的整体能力。
模型是如何构建的?
架构概述
Granite-Docling-258M 的架构基于 Idefics3,但做出了两处关键改动:
-
视觉编码器:使用 siglip2-base-patch16-512
替代原模型组件,显著提升图像理解能力。 -
语言模型:采用 IBM 自研的 Granite 165M 模型作为文本生成核心。
连接视觉与语言模块的,是一个基于像素重排(pixel-shuffle)的投影器,确保视觉信息能高效地传递给语言模型。
训练数据与方法
模型训练使用了以下数据集:
-
SynthCodeNet:包含50多种编程语言的合成代码片段。 -
SynthFormulaNet:合成生成的数学公式及其LaTeX表示。 -
SynthChartNet:图表图像及对应的结构化表格数据。 -
DoclingMatix:来自真实场景的多样化文档页面。
训练是在 IBM 的 Blue Vela 超级计算集群上完成的,该集群基于 NVIDIA H100 GPU,提供了强大的算力支持。
训练框架采用 nanoVLM,这是一个轻量级的、纯 PyTorch 实现的视觉-语言模型训练工具包,适合高效迭代与实验。
为什么说 DocTags 改变了文档AI的游戏规则?
传统的文档处理流程通常是:先使用OCR提取文本,再尝试用规则或小模型修复结构,最终输出为 Markdown 或 HTML。这个过程不仅繁琐,还容易丢失大量结构化信息。
Granite-Docling-258M 提出了一个更优雅的解决方案:它直接输出 DocTags——一种由 IBM 设计的、用于精确描述文档结构的标记语言。DocTags 能够明确表示:
-
元素的类型(标题、段落、表格、公式等); -
元素在页面中的坐标位置; -
元素之间的逻辑关系(如所属章节、阅读顺序等)。
这意味着,下游系统可以直接基于 DocTags 进行更精确的检索、转换或分析,而无需担心信息丢失或误解。
如何开始使用 Granite-Docling-258M?
方法一:通过 Docling 库(推荐给大多数用户)
最简单的方式是使用 docling
命令行工具或Python库:
# 安装
pip install docling
# 将PDF转换为HTML和Markdown
docling --to html --to md --pipeline vlm --vlm-model granite_docling "你的文档.pdf"
你也可以在Python中调用:
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
doc = converter.convert("你的文档.pdf").document
markdown_output = doc.export_to_markdown()
方法二:直接使用 Transformers 库
如果你希望更直接地控制推理过程,也可以使用 transformers
库:
from transformers import AutoProcessor, AutoModelForVision2Seq
from PIL import Image
processor = AutoProcessor.from_pretrained("ibm-granite/granite-docling-258M")
model = AutoModelForVision2Seq.from_pretrained("ibm-granite/granite-docling-258M")
image = Image.open("你的文档.png")
inputs = processor(images=image, text="Convert this page to docling.", return_tensors="pt")
outputs = model.generate(**inputs)
doctags = processor.decode(outputs[0], skip_special_tokens=True)
方法三:使用 vLLM 进行批量推理
对于需要处理大量文档的用户,可以使用 vLLM
来提升推理速度:
from vllm import LLM, SamplingParams
llm = LLM(model="ibm-granite/granite-docling-258M")
sampling_params = SamplingParams(temperature=0.0, max_tokens=8192)
outputs = llm.generate(batched_prompts, sampling_params=sampling_params)
方法四:在 Apple Silicon 上使用 MLX 版本
IBM 还提供了专门的 MLX 版本,针对 Apple Silicon 芯片进行了优化,适合在 MacBook 或 Mac Studio 上本地运行:
# 安装 MLX 版本
pip install mlx-vlm
具体使用方式可参考 👉Hugging Face 上的 MLX 模型页面。
支持哪些语言?
虽然 Granite-Docling-258M 主要针对英语文档进行优化,但它也初步支持日语、阿拉伯语和中文。不过需要注意的是,多语言支持目前仍处于实验阶段,处理效果可能不如英语稳定。
可以在哪些场景下使用?
这个模型特别适合以下应用场景:
-
企业文档数字化:将历史纸质文档或扫描件转换为结构化数字格式。 -
学术论文处理:准确提取论文中的公式、图表和参考文献。 -
法律与合同分析:保持合同条款的原始结构和格式。 -
技术文档转换:处理包含代码、表格和图示的技术手册。 -
检索增强生成(RAG):为知识库系统提供高质量的结构化文档来源。
需要注意哪些限制?
尽管 Granite-Docling-258M 功能强大,但仍有一些使用上的注意事项:
-
它不是通用的视觉-语言模型,不适合处理自然图像或一般性的视觉问答任务。 -
多语言支持尚不完善,非英语文档的处理质量可能有所波动。 -
如同所有AI模型,它可能在某些情况下产生错误或幻觉输出,建议在关键应用中加入人工审核环节。
IBM 也强调了负责任使用的原则,建议用户避免将其用于可能带来偏见、误导或自动决策的场景。
总结
Granite-Docling-258M 代表了文档AI领域的一次重要进步。它通过结合先进的视觉编码器、强大的语言模型和创新的 DocTags 表示法,提供了一个既高效又实用的文档转换解决方案。最重要的是,它以开源形式发布,允许任何企业或个人免费使用和改进这一技术。
无论你是希望构建智能文档处理系统的研究人员,还是需要处理大量企业文档的开发者,Granite-Docling-258M 都值得一试。它的出现,让我们离真正“智能”的文档理解又近了一步。
常见问题(FAQ)
Q: Granite-Docling-258M 可以处理手写文档吗?
A: 该模型主要针对印刷体文档优化,对手写体的识别能力有限。
Q: 模型支持哪些文档格式?
A: 通过 Docling 库,它可以处理 PDF、Word、PPT 等多种格式,也支持直接输入图像文件。
Q: 我需要多少计算资源才能运行这个模型?
A: 模型仅需 258M 参数,可以在消费级GPU甚至CPU上运行,也提供了针对 Apple Silicon 的优化版本。
Q: DocTags 是什么格式?如何将其转换为常见格式?
A: DocTags 是 IBM 设计的一种结构化表示法,可通过 Docling 库轻松转换为 Markdown、HTML 或 JSON。
Q: 模型训练数据包含哪些内容?
A: 训练数据包括公开数据集和IBM内部合成的文档数据,涵盖代码、公式、图表等多种元素。
Q: 是否支持批量处理?
A: 是的,可以通过 vLLM 或其他批处理工具高效处理大量文档。
如果你对 Granite-Docling-258M 感兴趣,可以直接访问 👉Hugging Face 模型页面 体验在线演示,或查看 👉Docling 项目文档 了解更多集成方式。