在文档智能处理领域,传统 OCR 与独立布局分析的分阶段方案正在被端到端的视觉语言模型(VLM)架构所取代。Chandra OCR 2 是由 Datalab 团队开源的新一代文档理解模型,在 olmocr 基准测试中以 85.9 分位居开源模型首位,其核心设计思路是将 OCR 文本、2D 布局信息与视觉特征深度融合,通过统一的 transformer 架构完成从图像到结构化输出的端到端推理。本文将从工程实现角度解析其架构设计与落地参数,为文档处理系统的选型与部署提供可操作的参考。

视觉语言融合的模型架构

Chandra OCR 2 采用典型的 DocVLM 风格架构,即在视觉语言模型中嵌入专用的 OCR 编码器。与传统两阶段方案(先运行 OCR 提取文本,再使用规则或模型分析布局)不同,Chandra 在单一 forward 过程中同时处理图像视觉 tokens 与 OCR 派生的文本 tokens,通过跨模态注意力机制实现文本内容与空间位置的联合建模。

这种设计的核心优势体现在三个方面。首先,模型能够在生成过程中直接利用布局线索,例如识别多栏排版的阅读顺序、表格的行列边界、表单中勾选框与填入内容的对应关系。其次,视觉与文本特征的深度融合使得手写内容的识别精度显著提升,因为模型可以从笔迹的视觉形态与上下文文本语义两个维度联合推断。第三,输出格式的构造被嵌入模型内部,直接生成 Markdown、HTML 或带有坐标信息的 JSON,无需后处理阶段的规则拼接。

根据 Chandra 项目文档,模型支持三种输出格式:Markdown 适合纯文本与简单结构的对齐需求;HTML 保留更丰富的样式与布局语义;JSON 则包含每页的详细元数据(页码、token 计数、边框坐标等),便于下游系统做进一步的结构化处理。输出结构的设计充分考虑了与 RAG 管道、数据库导入等场景的兼容性。

布局分析与结构化输出

文档布局分析是 Chandra 区别于通用 OCR 引擎的关键能力。在复杂表格识别方面,模型在基准测试中达到 89.9 分,能够处理跨列合并、嵌套表头、财务报表中的数字对齐等典型难点。对于表单场景,Chandra 支持勾选框状态识别(选中 / 未选中)以及填入内容的精确提取,在租赁合同、注册表单等场景中表现出较高的准确率。

手写识别是另一个工程难点。Chandra 2 在基准测试中对手写数学公式的识别率接近 90%,这一成绩得益于训练数据中大量手写样本的覆盖以及视觉 - 文本联合推理能力的提升。需要注意的是,手写识别的精度高度依赖书写风格与图像质量,对于极度潦草或扫描质量较差的输入,建议结合图像预处理(如对比度增强、倾斜校正)来提升识别效果。

多语言支持方面,Chandra 2 支持超过 90 种语言的文档处理,在 43 种主流语言的平均准确率达到 77.8%,在中文、德语、法语、意大利语等语言上表现尤为突出。对于低资源语言(如乌尔都语、卡纳达语),模型表现相对较弱,实际部署时可根据目标语言选择合适的模型版本或结合后校验机制。

推理模式与部署参数

Chandra OCR 2 提供两套推理后端,分别面向不同的部署场景。第一种是 HuggingFace 本地推理模式,通过 pip install chandra-ocr[hf] 安装,依赖 PyTorch 和 Transformers 库,适合开发测试或小批量处理场景。该模式下默认 batch size 为 1,便于逐页调试但吞吐量有限。

第二种是 vLLM 服务器模式,也是官方推荐的的生产部署方案。通过 Docker 容器启动 vLLM 服务,可以充分利用 GPU 的 Tensor 并行与连续批处理能力。官方基准测试在单张 NVIDIA H100 80GB GPU 上使用 96 个并发序列进行推理,测得吞吐量为 1.44 页每秒,平均延迟 60 秒,P95 延迟 156 秒,失败率为 0%。官方同时指出,在真实文档场景下吞吐量可达约 2 页每秒,因为基准测试集包含了大量复杂的数学公式与陈旧扫描件。

关键的部署参数包括以下几个方面。--batch-size 控制每批次处理的页数,默认值 vLLM 模式下为 28,HuggingFace 模式下为 1;增大该值可以提升吞吐量,但会相应增加显存占用。--max-output-tokens 限制单页输出的最大 token 数,默认 12384,这一参数在处理长文档或包含大量表格的页面时可能需要调高。--max-workers 参数控制 vLLM 后端的并发工作线程数,默认值与 GPU 数量相关。--page-range 支持指定 PDF 的页码范围(如 "1-5,7,9-12"),便于对多页文档进行分段处理。

环境变量配置方面,VLLM_API_BASE 指定 vLLM 服务的地址(默认 http://localhost:8000/v1),`VLLM_MODEL_NAME` 设置模型名称(默认 chandra),VLLM_GPUS 指定使用的 GPU 设备 ID(默认 0)。对于多卡部署场景,需要正确配置 GPU ID 列表以启用 Tensor 并行。

性能基准与选型建议

在公开基准测试中,Chandra 2 的综合得分为 85.9 分,超越 dots.ocr 1.5(83.9 分)与 olmOCR 2(82.4 分)。分项来看,模型在 ArXiv 论文(90.2 分)、数学公式(89.3 分)、表格(89.9 分)、基础文本识别(99.6 分)等任务上表现优异,而在陈旧扫描件的识别(49.8 分)方面仍有提升空间,这一弱点与图像预处理质量密切相关。

选型建议方面,如果业务场景以结构化文档(表单、报表、合同)为主,且对布局保持有较高要求,Chandra 2 是当前开源方案中最具竞争力的选择。如果对吞吐量要求极高且可以接受一定的格式损失,可以考虑基于 vLLM 的批量部署并根据文档复杂度调整 batch-size 与 max-output-tokens 参数。对于以陈旧扫描件或低质量图像为主的场景,建议在 Chandra 之前集成图像增强预处理管道,以充分释放模型的识别潜力。

资料来源

本文技术细节与基准数据主要引自 Chandra 官方 GitHub 仓库(https://github.com/datalab-to/chandra)。