메인 콘텐츠로 건너뛰기
자체 시스템 내에서 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>
수동 검토 클라이언트 인터페이스를 설정하려면 다음 옵션을 사용합니다:
KeyDescription
features
batchEditorfalse로 설정하면 페이지 썸네일 창을 숨깁니다.
batchEditor.toolbarfalse로 설정하면 페이지 썸네일 창은 표시하지만 도구 모음 창을 숨깁니다.
batchEditor.autoCollapsetrue로 설정하면 페이지 썸네일 창은 표시하지만 수동 검토 클라이언트 인터페이스가 열릴 때 축소됩니다.
docEditorfalse로 설정하면 페이지 이미지 창을 숨깁니다.
docEditor.toolbarfalse로 설정하면 페이지 이미지 창은 표시하지만 해당 도구 모음을 숨깁니다.
formEditorfalse로 설정하면 추출된 field 목록 창을 숨깁니다.
rulesReportfalse로 설정하면 규칙 오류 목록 창을 숨깁니다.
sendToStageAvailabletrue로 설정하면 Send to Stage… 버튼을 표시합니다.
이 옵션은 하나의 JSON 객체로 구성됩니다. 다음 샘플 코드는 규칙 오류 목록 창을 숨기고 페이지 썸네일 창이 축소된 상태에서 iframe을 표시합니다:
"features": {
   "batchEditor": {
      "autocollapse": true,
   },
   "rulesReport": false,
}
수동 검토용 링크에 이 JSON 객체의 내용을 담은 settings 쿼리 Parameter를 추가하세요:
<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 객체는 수동 검토 클라이언트 인터페이스에서 검토자가 수행하는 작업을 상위(부모) 창으로 메시지로 보내 검토자의 동작을 알리며, 이를 통해 적절한 시점에 다음 단계로 진행할 수 있습니다. 이벤트는 targetOrigin=parent Parameter와 함께 전송됩니다. 다음은 확인해야 할 이벤트 목록입니다.
  • ManualReviewWasPaused. 검토자가 Reject 버튼을 클릭하면 전송됩니다.
  • ManualReviewWasCompleted. 검토자가 Complete 버튼을 클릭하면 전송됩니다.
  • ManualReviewWithdrawn. 검토자가 일정 시간 동안 활동하지 않아 Manual Review 클라이언트 작업이 일반 작업 대기열로 다시 회수되면 전송됩니다.
아래 샘플 코드는 수동 검토용 iframe을 표시하고, 위의 이벤트 중 하나가 트리거되면 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>