Pular para o conteúdo principal
Se você estiver usando ABBYY Vantage dentro do seu próprio sistema, provavelmente também vai querer utilizar os recursos de revisão manual. Esta seção orienta você sobre como integrar a 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á um campo manualReviewLink com um link seguro, que permitirá ao revisor acessar apenas os dados daquela transação em particular. 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 sua criação. Se você precisar continuar a revisão, solicite um novo link enviando uma solicitação GET para o 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>