文档处理完成后——无论是通过 API 还是 web UI——Vantage 都会返回结构化数据,其中包含提取的字段值、置信度分数和校验标志。本页将介绍如何解读这些输出结果。
每个结果都具有相同的层级结构:
ExtractedDataTransaction
├── SkillName, SkillId
├── Documents[]
│ ├── ExtractedData
│ │ ├── DocumentDefinition ← 字段架构(可提取的内容)
│ │ └── RootObject ← 字段值(已提取的内容)
│ │ └── Fields[]
│ │ ├── Name
│ │ └── List[]
│ │ ├── Value
│ │ ├── Annotation (Confidence, RawValue, ...)
│ │ ├── NeedVerification
│ │ └── isVerified
│ └── ClassificationResult ← 文档类型(如已应用分类)
└── SourceFiles[]
对于大多数用例,你只需转到 Documents[0].ExtractedData.RootObject.Fields,即可访问提取出的值。
下面是一个简化示例,来自使用 ABBYY Invoice 技能处理的发票:
{
"SkillName": "ABBYY Invoice",
"SkillId": "a1b2c3d4-...",
"Documents": [
{
"ExtractedData": {
"RootObject": {
"Fields": [
{
"Name": "InvoiceNumber",
"List": [
{
"Value": "INV-2024-0042",
"Annotation": {
"Confidence": 97,
"RawValue": "INV-2024-0042",
"Source": "Text"
},
"NeedVerification": false,
"isVerified": false
}
]
},
{
"Name": "InvoiceDate",
"List": [
{
"Value": "2024-03-15",
"Annotation": {
"Confidence": 94,
"RawValue": "March 15, 2024",
"Source": "Text"
},
"NeedVerification": false,
"isVerified": false
}
]
},
{
"Name": "TotalAmount",
"List": [
{
"Value": "1,250.00",
"Annotation": {
"Confidence": 62,
"RawValue": "1.250,00",
"Source": "Image"
},
"NeedVerification": true,
"isVerified": false
}
]
}
]
}
}
}
]
}
每个字段包含:
| Property | 含义 |
|---|
Name | 由技能定义的字段名称 (例如:“InvoiceNumber”、“VendorName”) |
Value | 规范化后的提取值——日期会转换为 ISO 格式,数字会被标准化 |
Annotation.Confidence | 0 到 100 之间的整数,表示 Vantage 对提取结果的置信程度 |
Annotation.RawValue | OCR 识别出的原始文本,尚未经过任何规范化 |
Annotation.Source | 该值是来自文档的 Text 层,还是从 Image 读取的 |
NeedVerification | 如果该字段被标记为需要人工审核 (例如置信度较低或未通过验证规则) ,则为 true |
isVerified | 如果人工操作员已在人工审核中确认该值,则为 true |
请注意,上面的 TotalAmount 的 Confidence: 62,并且 NeedVerification: true。原始值 1.250,00 (欧洲格式) 已规范化为 1,250.00,但较低的置信度表明 Vantage 对 OCR 结果并不完全确定。这正是需要人工审核的典型字段。
提取表格 (如发票明细项) 的技能会将其表示为包含重复组的字段。每一行都会在该字段的 List 数组中表示为一个 ExtractedObject,并带有自己的子字段:
{
"Name": "LineItems",
"List": [
{
"Fields": [
{ "Name": "Description", "List": [{ "Value": "Consulting services", ... }] },
{ "Name": "Quantity", "List": [{ "Value": "10", ... }] },
{ "Name": "UnitPrice", "List": [{ "Value": "100.00", ... }] },
{ "Name": "Amount", "List": [{ "Value": "1,000.00", ... }] }
]
},
{
"Fields": [
{ "Name": "Description", "List": [{ "Value": "Travel expenses", ... }] },
{ "Name": "Quantity", "List": [{ "Value": "1", ... }] },
{ "Name": "UnitPrice", "List": [{ "Value": "250.00", ... }] },
{ "Name": "Amount", "List": [{ "Value": "250.00", ... }] }
]
}
]
}
每一行都具有相同的字段结构,因此便于在代码中进行迭代处理。
置信度分数反映了 Vantage 对提取值的把握程度。影响置信度的因素有多种:
- 文档质量 — 模糊的扫描件、低分辨率图像或手写内容通常会导致分数较低
- 版面复杂度 — 不常见的表格版面或重叠的字段可能会降低准确率
- 训练数据匹配度 — 与技能训练模式越接近的值,分数通常越高
如何通过编程使用置信度:
- 高置信度 (90–100) — 自动接受该值
- 中等置信度 (70–89) — 谨慎接受,或将关键字段转到审核流程
- 低置信度 (低于 70) — 转到人工审核进行人工核验
带有 NeedVerification: true 的字段,表示 Vantage 已根据技能中配置的置信度阈值和验证规则将其标记为需要核验。
每个技能都会定义自己的一组字段名称。以下是常用技能中最常见的字段:
| 技能 | 关键字段 |
|---|
| 发票 | InvoiceNumber, InvoiceDate, VendorName, TotalAmount, TaxAmount, LineItems |
| 收据 | ReceiptNumber, Date, VendorName, Total, Tax, PaymentMethod, LineItems |
| 采购订单 | PONumber, OrderDate, BuyerName, SupplierName, TotalAmount, LineItems |
| 身份证件 | FirstName, LastName, DateOfBirth, DocumentNumber, ExpirationDate, Nationality |
以上是最常见的字段。每个技能都可能包含其他字段。浏览技能目录可查看任何技能的完整字段列表。
完整 JSON 架构
JSON 输出中所有对象和属性的完整参考文档。
XML 输出
另一种输出格式,使用 XML 结构呈现相同的提取数据。
下一步学习内容
根据你的目标,选择适合你的 Vantage 文档学习路径。