跳轉到主要內容
如果您在自己的系統中使用 ABBYY Vantage,您很可能也會希望運用手動審核功能。本節將引導您完成手動審核的整合。 在您透過 Vantage API 將一些文件送交處理之後,請依照如何使用 Vantage API 處理文件中的說明來監控處理作業狀態。如果某份文件需要由人工人員審核,處理作業狀態回應會包含一個 manualReviewLink 鍵,其中帶有安全連結,審核者可以透過此連結僅存取該特定處理作業的資料。 將指向該連結內容的 iframe 內嵌到您服務的網頁中:
<iframe src="manual-review-link"></iframe>
請注意,連結會在建立後 168 小時失效。若您需要繼續審閱,請如前所述向 transactions 資源送出 GET 請求以取得新的連結。

Iframe 外觀

您可以透過移除 Vantage 標誌,或在手動審核用戶端介面中隱藏部分窗格,來精簡服務的外觀。 若要移除 Vantage 標誌,請在連結中新增一個 displayMode 查詢參數,並將其值設為 iframe,如下所示:
<iframe src="manual-review-link&displayMode=iframe"></iframe>
使用下列選項來設定手動審核用戶端介面:
KeyDescription
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 參數傳送。以下是可監聽的事件清單:
  • 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>