Heidi Labs
Hugging FaceAI 领域最新发展约 12 分钟4,777 字

Dharma 字段提取器:任意文档输入,结构化字段 JSON 输出

本文目录

Dharma-AI 团队(Gabriel Pimenta de Freitas Cardoso、Paulo Henrique de Medeiros Araujo、Bruno Duarte、Francisco de Almeida Rocha Alves)

发布于 2026 年 11 月 4 日

一个 20 亿参数的模型,能从任意文档类型中精确提取你指定的字段,在我们测试过的所有前沿大语言模型(Large Language Model,LLM)中表现最佳,而成本只是它们的一小部分。

今年 4 月,我们发布了 DharmaOCR-LITE——一个专门面向多种文档的光学字符识别(Optical Character Recognition,OCR)模型,覆盖合同、法院文书、发票、身份证件和表单。其背后的论文为一个范围狭窄、测量严谨的论点提供了依据:在特定任务上,一个更接近任务训练的小模型可以击败通用前沿 API。

OCR 给你页面上的文本,忠实于原始排版。当你处理的是整份文档时——比如要通读的合同,或正在数字化的手稿——这正是你想要的。

然而还有另一种用例:你不想要整个页面,你想要从中取出特定字段,并组织成下游系统可消费的形状。发票上的每一个行项目,作为一个列表;医疗申请单上的患者姓名、检查类型和日期,准备用于排程;身份证件上的字段,映射到员工记录的列。

把那份文档跑一遍 OCR,你拿回的是页面上印着的一切,逐行返回,却不告诉你哪个字符串是检查类型、哪个是日期、哪个数字是总额。仍然得有人写代码,把每个值映射到正确的字段,再送进数据库。

今天,通用 LLM 配合精心设计的提示词就能完成这项工作。但按前沿 API 的价格和延迟,在一个许多企业需要高并发运行的任务上,这会迅速变成解决一个定义明确问题的昂贵方式。

所以我们为此专门构建了一个模型。字段提取器(Field Extractor)接收一张文档图像,以及一个“找出所有能找的东西”的请求,或一份要填充的精确模式(schema),然后返回结构化 JSON:带类型、逐字段、按文档的嵌套结构嵌套。一张发票返回时,每个行项目都是有序列表,各自带有数量和金额,并与总计并列。一张身份证件返回时,就是你将要存储的那些字段,并使用你系统已经在用的字段名。同一个检查点处理所有这些,无需按文档类型微调。

你可以在这里亲自试用。

模型能做什么#

假设每天早上都会到一批供应商发票,你需要从每张上取四样东西推入系统:供应商、发票号、到期日、总额。医疗申请单进入排程系统、合同进入合规系统也是同样的故事——真正重要的是当事方、期限、罚则和罚款金额。你不需要那一页,你需要某些字段。使用字段提取器,有两种请求方式:

开放模式(Open):不提供模式。模型阅读页面,结合上下文与版面判断哪些部分是结构化字段(标签后跟值、带表头行的表格),而不是依据固定字段名清单,然后把找到的一切作为键值对返回。

模式驱动模式(Schema-directed):你逐字段指定想要的确切形状,为每个字段给出类型(字符串、数字或布尔值),并使用系统已有的键名。请求 service_provider 和 client_company,返回的就是这两个确切的键。请求一张表,它会逐行逐列填充,把每个单元格匹配到所属的键。请求一个文档上不存在的字段,它会返回 null,而不是编造一个值。

如何选择取决于你已经知道什么。当你不清楚文档里有什么时,发送开放请求。当输出必须匹配别处已经存在的形状时,发送模式。

无论哪种方式,返回的都是 JSON:字段作为键,值按请求的类型,文档中没有你要求的内容时为 null。当你发送模式时,输出严格遵循它,键完全相同,没有多余字段,因此可以直接进入下一个系统。

如何训练#

基础模型是 DharmaOCR-LITE v1.1,这是一个新的 20 亿参数版本,基于论文中的版本优化,并且已经通过监督微调(Supervised Fine-Tuning,SFT)和直接偏好优化(Direct Preference Optimization,DPO)专门针对 OCR 做了训练。在这个检查点之上,我们在 43,384 个训练样本上训练了一个低秩适配(Low-Rank Adaptation,LoRA)适配器,覆盖两种请求模式。

数据组织为三个流:

  • 英语多领域数据:从公开网络收集的多样文档,涵盖多种文档类型。
  • 巴西领域数据:内部获取的真实巴西文档,葡萄牙语。
  • 多语言数据:较小比例,覆盖其他欧洲和亚洲语言,以便在英语和葡萄牙语之外获得更广的泛化能力。

三个数据流都在字段级别做了标注。混合比例刻意保持多领域:收据、商业发票、表单、银行对账单、身份证件和合成文档,而不是单一申报类型。

基准测试的边界#

完整基准覆盖 546 份文档、三种请求场景,共 1,638 个用例:无模式提取所有字段;只命名真实字段的部分模式;以及还包含故意不存在的字段的模式。分数是字段级 F1(按路径匹配,包括表格内的位置),乘以匹配值的莱文斯坦相似度(Levenshtein similarity),再乘以返回有效 JSON 的输出占比。

我们在四种通用前沿配置上运行了同一基准。

与通用 LLM 相比,质量差距从 1.8 分(Claude Opus 5,最接近)到 9.3 分(GPT-5.6 Luna,差距最大)。

成本则低约 6 倍(GPT-5.6 Luna)到约 147 倍(GPT-5.6 Sol)。两者的定价方式不同。前沿模型的数字来自每页实测的平均输入和输出 token 数(包含推理 token),对照各供应商公布的标价。所有前沿模型都以 reasoning 设为 low 运行;Claude Opus 5 使用自适应努力(adaptive effort),对较简单的页面可以跳过推理,同时保持在 low 级别。我们的模型不按 token 计费:模型自托管,所以这个数字是单块 L40S、每小时 2.24 美元的 GPU 时间。

这不是销售价格。自托管成本取决于硬件、调用量和每个部署所需的延迟。这里的比较是为了说明:一个部署在你自己基础设施上的主权专用小语言模型(specialized small language model,SSLM),是前沿 API 的真实替代方案。

一次泛化测试#

SROIE 和 FUNSD 是我们基准中的两个公开数据集,未用于训练。下面是各自的一个例子。

在一张 SROIE 收据上,我们要求提取上面印着的全部 18 个字段(这次没有幽灵字段),每一个都正确返回:多行、无标签的账单地址被捕获为一个字段;两个空白字段(salesperson 和 ref)正确返回 null;收据上的每个数字都精确到分。

在一张 FUNSD 复印差异表上——一份包含十二个布尔字段的检查清单,其中有一组五个子选项嵌套——模型把唯一被勾选的框(原件质量差,旁边有手写的“faded”注释)标为 true,其余十一个标为 false,与表单完全一致。它还正确读出了页面上的手写 Bates ID,并为两个留空字段返回 null。

质量与成本兼得#

一个 20 亿参数模型得分 0.834,高于我们测试的每一种前沿配置,从 Claude Opus 5 的 0.816 到 GPT-5.6 Luna 的 0.741;同时它运行在单块 L40S 上,每次提取的成本低于对比中的每一个 API。同一基准、同一次运行中测得:更高质量,更低成本。

这不是我们第一次测量这一点。我们的 OCR 论文把第一代 DharmaOCR-LITE(一个 30 亿参数模型)置于所有测试过的商业前沿 API 之上(针对巴西葡萄牙语);三个月后,更新、资源更充足的模型出现了,差距依然存在。现在,一个 20 亿参数模型在字段提取上做到了同样的事。每个结果都在为我们创办 Dharma-AI 时的论点增加证据:在一个边界明确的任务上,接近该任务训练的小模型,胜过被要求以通用方式做同一件事的前沿模型。在这个基准中,它的运行成本也低 6 到 147 倍。

参数量决定上限;训练决定模型在任务上能触及多少上限。你的业务不需要可用的最大模型。它需要一个为你的问题训练的模型。

在你自己文档上试用。要了解更多关于 Dharma-AI 和我们构建的专用模型,请访问 dharma-ai.com。

来源#

BID. 巴西身份证件数据集。Soares、Neves Jr.、Bezerra(2020),《BID Dataset: a challenge dataset for document processing tasks》,Anais Estendidos XXXIII SIBGRAPI。github.com/ricardobnjunior/Brazilian-Identity-Document-Dataset

CORD. Park 等,NAVER CLOVA(2019)。huggingface.co/datasets/naver-clova-ix/cord-v2

DocVQA. Mathew 等,WACV 2021(ICDAR 2019)。huggingface.co/datasets/lmms-lab/DocVQA

WildReceipt. Sun 等,IJCAI 2021。huggingface.co/datasets/Theivaprakasham/wildreceipt

SROIE(ICDAR 2019)。训练中留出,仅用于评估。huggingface.co/datasets/darentang/sroie(镜像);上游 rrc.cvc.uab.es/?ch=13

FUNSD. Jaume 等。训练中留出,仅用于评估。huggingface.co/datasets/nielsr/funsd(镜像);guillaumejaume.github.io/FUNSD

Zenodo Invoices(PT)。Cruz & Castelli,NOVA IMS(2022)。zenodo.org/records/6371710

line_items. Sagarjha456,Hugging Face。huggingface.co/datasets/Sagarjha456/line_items

Katanaml Invoices (Donut). Kozłowski & Weichbroth(2021),Mendeley Data doi:10.17632/tnj49gpmtz.2。huggingface.co/datasets/katanaml-org/invoices-donut-data-v1

HumynLabs 巴西账单与发票。huggingface.co/datasets/HumynLabs/Brazilian_Bills_and_Invoices_Dataset

Tech4Humans BR-Doc Extraction。huggingface.co/datasets/tech4humans/br-doc-extraction

Cardoso, Gabriel Pimenta de Freitas, et al. "DharmaOCR: Specialized Small Language Models for Structured OCR that outperform Open-Source and Commercial Baselines." arXiv preprint arXiv:2604.14314 (2026).

延伸阅读#

  • 如何将 SLM 的词表专用化,在真实应用中把推理成本降低 77%
  • 同一集群,利用率提高 33 个百分点:改变的是顺序
  • GPU 管理:为什么闲置 GPU 是新的停场飞机
  • 更新的模型,同样的优势
  • 为什么专用化不可避免
  • 专用化胜过规模:大多数 AI 采购决策忽视的一个战略变量
  • 文本退化:大多数基准都不追踪的一种生产故障模式
  • 聊天机器人之外的直接偏好优化
  • 在 Hugging Face 上探索 Dharma AI,试用交互式演示、下载开源模型,了解专用 AI 系统如何在真实企业应用中胜过通用模型。

本文提到的模型 1

本文提到的数据集 8

本文提到的 Spaces 1