返回

文章详情

文档审查与 Unsiloed 和 TypeSafe Jev

Hacker News2026年10月13日 08:24

一个提取管道可以正确读取一个值,但仍然可能将不良数据传递到下游。一个明显打印的额外零在优秀的光学字符识别 (OCR) 中仍然存在。结合使用 Unsiloed 和 TypeSafe 的 Jev 可以帮助我们检查文档中的 OCR 失败和一般错误。Unsiloed 提取结构化字段并定位它们在页面上的位置。Jev 根据专注的问题评估提取的信息。我们可以结合这些结果来决定哪些字段需要审查。Jev 将专注的问题转化为类型答案。Jev 请求将其认为的信息(状态)与其做出的决策(问题)分开。在我们的工作流程中,状态包含 Unsiloed 提取的记录以及解释它们所需的上下文。每个问题告诉 Jev 需要检查什么以及要返回的答案类型;它还可以定义可能答案的标准。类型决定我们的代码接收什么。一个 Noul 返回某个陈述为真的概率。一个 Choice 从命名的选项中选择;一个 Score 评估一个有序级别的标准。Choice 和 Score 还返回概率分布和概括其集中度的置信值。Noul 没有单独的置信字段。这三种类型可以在一个请求中共享状态,如图所示。稍后,我们将仅在示例中使用 Noul。Noul 值 0.04 意味着我们的问题有 4% 的“是”的概率,即强烈的“否”。这并不意味着“Jev 只有 4% 的信心”。靠近任一端的值表示明确的方向;靠近中间的值值得谨慎。将 Unsiloed 提取的字段发送给 Jev,然后路由结果。Unsiloed 保留打印内容并提供置信分数,有助于识别模糊的读取。在我们的示例中,我们使用包含六行的药物清单。一种咖啡渍遮挡了一剂,而另一行则包含一个明显打印但不合理的数量。我们将跟踪这两者在提取和 Jev 检查中的过程。我们的提取模式定义了 Unsiloed 应该为每种药物返回的字段。它请求完整的剂量单元,包括数量和单位,而不纠正令人惊讶的数量或猜测从通常的开立实践中遮挡的文本。启用源引文并等待提取作业完成后再构建 Jev 的状态。每个字段都有两个 Unsiloed 置信分数:extraction_score 评估提取值的置信度,而 grounding_score 评估值在文档中定位的置信度。两个分数都在 0 到 1 之间。引文标识其页面和边界框,即源文本周围的矩形。以下是保存的响应中受污染的 cetirizine 剂量,原始 1200 × 1500 图像上的像素坐标:{ "value": "1 tablet", "score": { "grounding_score": 0.76, "extraction_score": 0.74 }, "citation": { "page": 1, "bbox": [582, 975, 649, 994], "page_width": 1200, "page_height": 1500 }} 为每个药物行分配一个 ID,例如 row-5,并与提取的字段及其引文一起保留。这允许我们的代码稍后将 Jev 的答案与同一行匹配。保留引文,以便审查者可以在原始页面上找到每个提取的字段。将提取的值和上下文发送给 Jev。它将提取的指令视为提取内容,而无需查看图像或 Unsiloed 分数。我们对每一行问一个 Noul 问题:该剂量和频率对该药物是否合理?所有六行共享一个请求,每个问题单独评估。在连接这两个 API 的服务器端模块中,构建此请求(显示一行及其问题):const request = { model: "jev-1.13.0", state: { context: "检查是否有明显的数量、单位或频率错误。" + "剂量是每次服用的数量,而不是供应数量。" + "不评估特定患者的安全性或提出修正。", careContext: "52岁的成人门诊药物调和", medications: [{ id: "row-5", medicine: "Cetirizine 10 mg tablet", dose: "1 tablet", frequency: "按需每天一次", route: "口服", instructions: "用于过敏症状。" }] }, questions: { "row-5": { type: "noul", instructions: { question: "在没有明显数量或频率转录错误的情况下,该提取的剂量和频率对于这药物和剂量在所述成人门诊上下文中是否合理?", row_id: "row-5" }, criteria: { true: "在表面上合理;没有明显的数量、单位或频率错误。", false: "明显不合理;值得对原处方进行审核。" } } } }; 上下文和标准在这里缩短;记录的请求包含确切的文本和所有六行。我们使用 row-5 作为问题 ID,以便我们的代码可以将答案与该行匹配。我们还在指令中将它作为 row_id 包含,以便 Jev 知道要评判哪个记录:问题 ID 不会发送到模型。将请求以 JSON 形式发布到 https://api.typesafe.ai/v1/systemone。用您的 TypeSafe API 密钥在 Authorization: Bearer <API_KEY> 标头中进行身份验证,保持

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

☕请我喝杯咖啡