跳转到主要内容
如果你在自有系统中使用 ABBYY Vantage,你很可能也希望利用人工校验功能。本文将指导你集成人工校验。 通过 Vantage API 提交文档进行处理后,请按照如何使用 Vantage API 处理文档中的说明监控处理事务状态。如果某个文档需要由人工审核,处理事务状态的响应中会包含名为 manualReviewLink 的键及其安全链接。审核员可通过该链接仅访问该笔处理事务的数据。 将该链接的内容以 iframe 的形式嵌入到你的服务网页中:
<iframe src="manual-review-link"></iframe>
请注意,链接将在创建后 168 小时到期。若需继续审阅,请按之前的方式向 transactions 资源发送 GET 请求以获取新的链接。

Iframe 外观

您可以通过移除 Vantage 徽标,或在人工校验客户端界面中隐藏某些窗格来简化服务的外观。 要移除 Vantage 徽标,请在链接中添加一个 displayMode 查询 Parameter,并将其值设为 iframe,如下所示:
<iframe src="manual-review-link&displayMode=iframe"></iframe>
使用以下选项设置人工校验客户端界面:
说明
features
batchEditor设为 false 可隐藏页缩略图窗格。
batchEditor.toolbar设为 false 可显示页缩略图窗格,但隐藏工具栏窗格。
batchEditor.autoCollapse设为 true 可显示页缩略图窗格,但在打开人工校验客户端界面时将其折叠。
docEditor设为 false 可隐藏页图像窗格。
docEditor.toolbar设为 false 可显示页图像窗格,但隐藏其工具栏。
formEditor设为 false 可隐藏已提取字段列表窗格。
rulesReport设为 false 可隐藏规则错误列表窗格。
sendToStageAvailable设为 true 可显示“Send to Stage…”按钮。
这些选项组织在一个 JSON 对象中。以下示例代码将显示一个 iframe,其中规则错误窗格被隐藏,且页缩略图窗格被折叠:
"features": {
   "batchEditor": {
      "autocollapse": true,
   },
   "rulesReport": false,
}
在用于人工校验的链接中,添加一个名为 settings 的查询参数,参数值为此 JSON 对象的内容:
<iframe src="manual-review-link&settings=%7B%22features%22%3A%7B%22batchEditor%22%3A%7B%22autoCollapse%22%3Atrue%7D%2C%22rulesReport%22%3Afalse%7D%7D"></iframe>

Iframe 事件

iframe 对象会向父窗口发送消息,用于在 Manual Review 客户端界面中通知你审核者的操作,便于你在合适的时机进入下一步。 事件会带有 targetOrigin=parent Parameter。以下是需要关注的事件列表:
  • ManualReviewWasPaused。当审核者点击 Reject 按钮时发送。
  • ManualReviewWasCompleted。当审核者点击 Complete 按钮时发送。
  • ManualReviewWithdrawn。当审核者一段时间未操作,且 Manual Review 客户端任务被撤回到通用任务队列时发送。
下面的示例代码展示了如何显示用于人工校验的 iframe,并在上述任一事件被触发后将其隐藏。 用于监听 iframe 事件的示例代码:
<html style="min-height: 100%; height: 100%;">
<head>
  <script>
    var manualReviewLink; // 事务状态响应中的链接
    window.addEventListener("DOMContentLoaded", init, false);
    function init() {
      var iframe = document.createElement("iframe");
      iframe.src = getUrl();
      iframe.style.width = "100%";
      iframe.style.height = "95%";
      try {
        document.getElementById("main").removeChild(document.querySelector("iframe"));
      } catch (e) { }
      document.getElementById("main").appendChild(iframe);
      window.addEventListener("message", receiveMessage, false);
    }
    function getUrl() {
      return manualReviewLink + "&displayMode=iframe";
    }
    function receiveMessage(event) {
      console.log(event.data);
      if (event.data.target === "parent") {
        if (event.data.eventName === "ManualReviewWithdrawn" || 
            event.data.eventName === "ManualReviewWasPaused" || 
            event.data.eventName === "ManualReviewWasCompleted" ) {
          document.getElementById("iframe").style.display = "none";
        }
      }
    }
  </script>
</head>
<body
  style="background-color: #999999; min-height: 100%; height: 100%; position: relative; margin: 0; padding: 0; background: linear-gradient(to bottom right, #4380bc, #5ba484);">
  <div id="main"
    style="height: 100%; position: relative; padding:20px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;">
  </div>
</body>
</html>