Pular para o conteúdo principal
Se você usa o ABBYY Vantage em seu próprio sistema, provavelmente também vai querer utilizar os recursos de revisão manual. Esta seção orientará você na integração da revisão manual. Depois de enviar alguns documentos para processamento via Vantage API, monitore o status da transação conforme descrito em Como processar documentos usando a Vantage API. Se um documento precisar ser revisado por um operador humano, a resposta de status da transação conterá a chave manualReviewLink com um link seguro, que permitirá ao revisor acessar somente os dados daquela transação específica. Incorpore um iframe com o conteúdo desse link na página da web do seu serviço:
<iframe src="manual-review-link"></iframe>
Observe que o link expirará 168 horas após a sua criação. Se precisar continuar a revisão, solicite um novo link enviando uma solicitação GET ao recurso transactions, como antes.

Aparência do iframe

Você pode simplificar a aparência do serviço removendo o logotipo do Vantage ou ocultando alguns painéis na interface do cliente de revisão manual. Para remover o logotipo do Vantage, adicione um parâmetro de consulta displayMode com o valor iframe ao link da seguinte forma:
<iframe src="manual-review-link&displayMode=iframe"></iframe>
Use as seguintes opções para configurar a interface do cliente de revisão manual:
KeyDescription
features
batchEditorDefina como false para ocultar o painel de miniaturas da página.
batchEditor.toolbarDefina como false para exibir o painel de miniaturas da página, mas ocultar o painel da barra de ferramentas.
batchEditor.autoCollapseDefina como true para exibir o painel de miniaturas da página, mas recolhê-lo quando a interface do cliente de revisão manual for aberta.
docEditorDefina como false para ocultar o painel de imagem da página.
docEditor.toolbarDefina como false para exibir o painel de imagem da página, mas ocultar sua barra de ferramentas.
formEditorDefina como false para ocultar o painel da lista de campos extraídos.
rulesReportDefina como false para ocultar o painel da lista de erros de regra.
sendToStageAvailableDefina como true para exibir o botão Send to Stage….
Essas opções são organizadas em um único objeto JSON. O código de exemplo a seguir exibirá um iframe com o painel de erros de regra oculto e o painel de miniaturas da página recolhido:
"features": {
   "batchEditor": {
      "autocollapse": true,
   },
   "rulesReport": false,
}
Adicione um parâmetro de consulta settings com o conteúdo deste objeto JSON ao seu link de revisão manual:
<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>

Eventos do iframe

O objeto iframe enviará mensagens para a janela principal para informar as ações do revisor na interface do cliente de revisão manual, para que você possa avançar para a próxima etapa no momento apropriado. Os eventos são enviados com o parâmetro targetOrigin=parent. A seguir está uma lista de eventos a serem monitorados:
  • ManualReviewWasPaused. Enviado quando o revisor clica no botão Reject.
  • ManualReviewWasCompleted. Enviado quando o revisor clica no botão Complete.
  • ManualReviewWithdrawn. Enviado quando o revisor fica inativo por algum tempo e a tarefa do cliente de revisão manual é retirada e devolvida à fila geral de tarefas.
O código de exemplo abaixo mostra como exibir um iframe para revisão manual e ocultá-lo assim que qualquer um dos eventos acima for acionado. Exemplo de código para escutar eventos do iframe:
<html style="min-height: 100%; height: 100%;">
<head>
  <script>
    var manualReviewLink; // o link da resposta de status da transação
    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>