Datalab
前沿的文档智能模型
Datalab的Chandra OCR 2是一个先进的OCR(光学字符识别)模型,能够将图像和PDF转换为结构化的HTML、Markdown或JSON格式,同时保留原始布局信息。其卓越的性能使其在多个应用场景中极为有用。
重要更新
- 2026年3月 - Chandra 2发布,显著增强了对数学、表格、布局和多语言OCR的支持
- 2025年10月 - Chandra 1推出
功能特点
Chandra OCR 2具备众多强大的特性,使其在OCR领域表现出色:
- 在外部olmocr基准测试中名列前茅,并在内部多语言基准中取得显著提升
- 能够将文档转换为Markdown、HTML或JSON格式,同时提供详细的布局信息
- 支持90多种语言,为多语言处理提供了极大的便利
- 对手写体的出色支持,能够准确重建包含复选框的表单
- 在处理表格、数学公式和复杂布局时表现优越
- 可从文档中提取图像和图表,并添加标题及结构化数据
- 提供两种推理模式:本地(HuggingFace)和远程(vLLM服务器)
托管API
我们提供Chandra的托管API,访问更为准确和快速。您还可以在免费试玩平台上体验Chandra,无需安装。
快速入门
要快速开始,可以使用命令行工具:
shell
pip install chandra-ocr
# 使用推荐的轻量级vLLM安装
chandra_vllm
chandra input.pdf ./output
# 使用HuggingFace(需要torch)
pip install chandra-ocr[hf]
chandra input.pdf ./output --method hf
# 启动交互式Streamlit应用
pip install chandra-ocr[app]
chandra_app
基准测试
Chandra 2重点关注多语言性能。由于缺乏良好的公共多语言OCR基准,我们创建了自己的基准测试,涵盖表格、数学、排序、布局和文本精度。
实际应用示例
以下是Chandra在不同类型文档处理的应用实例:
| 类型 | 名称 | 链接 |
|---|---|---|
| 数学 | CS229教科书 | 查看 |
| 数学 | 手写数学 | 查看 |
| 数学 | 中文数学 | 查看 |
| 表格 | 统计分布 | 查看 |
| 表格 | 财务表格 | 查看 |
| 表单 | 注册表单 | 查看 |
| 表单 | 租赁表单 | 查看 |
| 手写体 | 草书 | 查看 |
| 手写体 | 手写笔记 | 查看 |
| 语言 | 阿拉伯语 | 查看 |
| 语言 | 日语 | 查看 |
| 语言 | 印地语 | 查看 |
| 语言 | 俄语 | 查看 |
| 其他 | 图表 | 查看 |
| 其他 | 化学 | 查看 |
安装指南
使用包安装
bash
# 基础安装(用于vLLM后端)
pip install chandra-ocr
# 使用HuggingFace后端(包含torch、transformers)
pip install chandra-ocr[hf]
# 完整安装所有额外功能
pip install chandra-ocr[all]
如果您使用HuggingFace方法,建议还安装flash attention以提高性能。
从源代码安装
bash
git clone https://github.com/datalab-to/chandra.git
cd chandra
uv sync
source .venv/bin/activate
使用方法
命令行接口(CLI)
处理单个文件或整个目录:
bash
# 单个文件,使用vllm服务器
chandra input.pdf ./output --method vllm
# 处理目录中的所有文件(使用本地模型)
chandra ./documents ./output --method hf
CLI选项:
--method [hf|vllm]:推理方法(默认:vllm)--page-range TEXT:PDF的页码范围(例如,"1-5,7,9-12")--max-output-tokens INTEGER:每页的最大令牌数--max-workers INTEGER:vLLM的并行工作者数量--include-images/--no-images:提取并保存图像(默认:包含)--include-headers-footers/--no-headers-footers:包含页眉/页脚(默认:不包含)--batch-size INTEGER:每批页面数量(vllm默认28, hf默认1)
输出结构:
每个处理的文件会创建一个子目录,其中包括:
.md- Markdown输出.html- HTML输出_metadata.json- 元数据(页信息、令牌计数等)- 提取的图像直接保存在输出目录中
Streamlit Web应用
启动交互式演示以处理单个页面:
bash
chandra_app
vLLM服务器(可选)
用于生产部署或批处理时,可使用vLLM服务器:
bash
chandra_vllm
这将启动一个优化推理设置的Docker容器。可以通过环境变量进行配置:
VLLM_API_BASE:服务器URL(默认:http://localhost:8000/v1)VLLM_MODEL_NAME:服务器模型名称(默认:chandra)VLLM_GPUS:GPU设备ID(默认:0)
您还可以启动自己的vllm服务器,使用datalab-to/chandra-ocr-2模型。
配置
通过环境变量或local.env文件配置设置:
bash
# 模型设置
MODEL_CHECKPOINT=datalab-to/chandra-ocr-2
MAX_OUTPUT_TOKENS=12384
# vLLM设置
VLLM_API_BASE=http://localhost:8000/v1
VLLM_MODEL_NAME=chandra
VLLM_GPUS=0
商业使用
此代码采用Apache 2.0许可证,模型权重使用修改过的OpenRAIL-M许可证(适用于研究、个人使用以及资金/收入不超过200万美元的初创企业,不能与我们的API竞争使用)。想要移除OpenRAIL许可证要求或者进行更广泛的商业授权,可以访问我们的定价页面。
基准表
| 模型 | ArXiv | 老扫描数学 | 表格 | 老扫描 | 页眉和页脚 | 多列 | 长小文本 | 基础 | 综合 | 源 |
|---|---|---|---|---|---|---|---|---|---|---|
| Datalab API | 90.4 | 90.2 | 90.7 | 54.6 | 91.6 | 83.7 | 92.3 | 99.9 | 86.7 ± 0.8 | 自家基准 |
| Chandra 2 | 90.2 | 89.3 | 89.9 | 49.8 | 92.5 | 83.5 | 92.1 | 99.6 | 85.9 ± 0.8 | 自家基准 |
| dots.ocr 1.5 | 85.9 | 85.5 | 90.7 | 48.2 | 94.0 | 85.3 | 81.6 | 99.7 | 83.9 | dots.ocr repo |
| Chandra 1 | 82.2 | 80.3 | 88.0 | 50.4 | 90.8 | 81.2 | 92.3 | 99.9 | 83.1 ± 0.9 | 自家基准 |
| olmOCR 2 | 83.0 | 82.3 | 84.9 | 47.7 | 96.1 | 83.7 | 81.9 | 99.6 | 82.4 | olmocr repo |
| dots.ocr | 82.1 | 64.2 | 88.3 | 40.9 | 94.1 | 82.4 | 81.2 | 99.5 | 79.1 ± 1.0 | dots.ocr repo |
| olmOCR v0.3.0 | 78.6 | 79.9 | 72.9 | 43.9 | 95.1 | 77.3 | 81.2 | 98.9 | 78.5 ± 1.1 | olmocr repo |
| Datalab Marker v1.10.0 | 83.8 | 69.7 | 74.8 | 32.3 | 86.6 | 79.4 | 85.7 | 99.6 | 76.5 ± 1.0 | 自家基准 |
| Deepseek OCR | 75.2 | 72.3 | 79.7 | 33.3 | 96.1 | 66.7 | 80.1 | 99.7 | 75.4 ± 1.0 | 自家基准 |
| Mistral OCR API | 77.2 | 67.5 | 60.6 | 29.3 | 93.6 | 71.3 | 77.1 | 99.4 | 72.0 ± 1.1 | olmocr repo |
| GPT-4o (Anchored) | 53.5 | 74.5 | 70.0 | 40.7 | 93.8 | 69.3 | 60.6 | 96.8 | 69.9 ± 1.1 | olmocr repo |
| Qwen 3 VL 8B | 70.2 | 75.1 | 45.6 | 37.5 | 89.1 | 62.1 | 43.0 | 94.3 | 64.6 ± 1.1 | 自家基准 |
| Gemini Flash 2 (Anchored) | 54.5 | 56.1 | 72.1 | 34.2 | 64.7 | 61.5 | 71.5 | 95.6 | 63.8 ± 1.2 | olmocr repo |
多语言基准表
下表涵盖了43种最常用语言,并对多种模型进行了基准测试。有关90种语言的更全面评估(Chandra 2与Gemini 2.5 Flash的比较),请查看完整的90语言基准。
| 语言 | Datalab API | Chandra 2 | Chandra 1 | Gemini 2.5 Flash | GPT-5 Mini |
|---|---|---|---|---|---|
| 阿拉伯语 | 67.6% | 68.4% | 34.0% | 84.4% | 55.6% |
| 孟加拉语 | 85.1% | 72.8% | 45.6% | 55.3% | 23.3% |
| 加泰罗尼亚语 | 88.7% | 85.1% | 84.2% | 88.0% | 78.5% |
| 捷克语 | 88.2% | 85.3% | 84.7% | 79.1% | 78.8% |
| 丹麦语 | 90.1% | 91.1% | 88.4% | 86.0% | 87.7% |
| 德语 | 93.8% | 94.8% | 83.0% | 88.3% | 93.8% |
| 希腊语 | 89.9% | 85.6% | 85.5% | 83.5% | 82.4% |
| 西班牙语 | 91.8% | 89.3% | 88.7% | 86.8% | 97.1% |
| 波斯语 | 82.2% | 75.1% | 69.6% | 61.8% | 56.4% |
| 芬兰语 | 85.7% | 83.4% | 78.4% | 86.0% | 84.7% |
| 法语 | 93.3% | 93.7% | 89.6% | 86.1% | 91.1% |
| 古吉拉特语 | 73.8% | 70.8% | 44.6% | 47.6% | 11.5% |
| 希伯来语 | 76.4% | 70.4% | 38.9% | 50.9% | 22.3% |
| 印地语 | 80.5% | 78.4% | 70.2% | 82.7% | 41.0% |
| 克罗地亚语 | 93.4% | 90.1% | 85.9% | 88.2% | 81.3% |
| 匈牙利语 | 88.1% | 82.1% | 82.5% | 84.5% | 84.8% |
| 印度尼西亚语 | 91.3% | 91.6% | 86.7% | 88.3% | 89.7% |
| 意大利语 | 94.4% | 94.1% | 89.1% | 85.7% | 91.6% |
| 日语 | 87.3% | 86.9% | 85.4% | 80.0% | 76.1% |
| 爪哇语 | 87.5% | 73.2% | 85.1% | 80.4% | 69.6% |
| 卡纳达语 | 70.0% | 63.2% | 20.6% | 24.5% | 10.1% |
| 韩语 | 89.1% | 81.5% | 82.3% | 84.8% | 78.4% |
| 拉丁语 | 78.0% | 73.8% | 55.9% | 70.5% | 54.6% |
| 马拉雅拉姆语 | 72.4% | 64.3% | 18.1% | 23.8% | 11.9% |
| 马拉地语 | 80.8% | 75.0% | 57.0% | 69.7% | 20.9% |
| 荷兰语 | 90.0% | 88.6% | 85.3% | 87.5% | 83.8% |
| 挪威语 | 89.2% | 90.3% | 85.5 |