跳转到主要内容
以下是一些适用于实际场景的示例脚本。

在文档中检查规则错误

下面的脚本会检查处理事务中的文档是否存在任何规则错误。如果至少有一个文档包含规则错误,脚本返回 true;否则返回 false
function hasRuleErrors() {
    for (var i = 0; i < Context.Transaction.Documents.length; i++) {
        var document = Context.Transaction.Documents[i];
        if (document.RuleErrors.length > 0 || document.IsUnknownSkill === true || document.HasSuspiciousSymbols === true)
            return true;
    }
    return false;
}
hasRuleErrors();

检查是否需要人工校验

以下脚本会检查处理事务中的 documents 是否存在错误。如果至少有一个处理事务的 document 符合以下任一情况:
  • 规则错误
  • 文档类型不确定
  • 字段或字段字符识别不确定
脚本将返回 true,并将 documents 发送到人工校验。否则,脚本将返回 false,并将 documents 发送到导出步骤。
function needManualReview() {
    for (var i = 0; i < Context.Transaction.Documents.length; i++) {
        var document = Context.Transaction.Documents[i];
        if (needManualReviewForDocument(document))
            return true;
    }
    return false;
}

function needManualReviewForDocument(document) {
    // 存在规则错误
    if (document.RuleErrors.length > 0)
        return true;
    // 文档类型置信度不足
    if (!document.IsResultClassConfident)
        return true;
    // 某些字段存在异常
    for (var i = 0; i < document.Fields.length; i++) {
        var field = document.Fields[i];
        if (field.IsSuspicious || containSuspiciousFields(field))
            return true;
    }
    return false;
}

function containSuspiciousFields(field) {
    // 检查所有子字段是否存在异常
    if (field.Children) {
        for (var i = 0; i < field.Children.length; i++) {
            var childField = field.Children[i];
            if (childField.IsSuspicious || containSuspiciousFields(childField))
                return true;
        }
    }
    // 检查所有实例字段是否存在异常
    if (field.Instances) {
        for (var i = 0; i < field.Instances.length; i++) {
            var instanceField = field.Instances[i];
            if (instanceField.IsSuspicious || containSuspiciousFields(instanceField))
                return true;
        }
    }

    return false;
}
needManualReview();