For the complete documentation index, see llms.txt. This page is also available as Markdown.

DocumentDetector v7 ou inferior (Descontinuado)

Documentos suportados

Atualmente, os documentos suportados no iOS são:

Document.RG_FRONT, // frente do RG, onde fica a foto
Document.RG_BACK, // verso do RG, onde ficam os dados
Document.RG_FULL, // RG aberto, mostrando a frente e o verso
Document.CNH_FRONT, // frente da CNH, onde fica a foto
Document.CNH_BACK, // verso da CNH, onde fica a assinatura
Document.CNH_FULL, // CNH aberta, mostrando a frente e o verso
Document.CRLV, // CRLV
Document.RNE_FRONT, // frente do RNE e do RNM, a parte com os dados
Document.RNE_BACK, // verso do RNE e do RNM, a parte com a foto
Document.PASSPORT, // Passaporte
Document.CTPS_FRONT, // frente da CTPS
Document.CTPS_BACK, // verso da CTPS
Document.OTHERS, // outros documentos de identificação em geral, como RNE, carteira militar, OAB e CRLV
Document.ANY; // permite enviar qualquer captura

Permissões obrigatórias

No info.plist arquivo, adicione as permissões abaixo:

Permissão

Motivo

Obrigatório?

Privacidade - Descrição de Uso da Câmera

Para capturar a(s) foto(s) do documento

Não, apenas necessário no fluxo de captura pela câmera

Privacidade - Descrição de Uso da Biblioteca de Fotos

Para realizar a abertura da galeria.

Não, necessário apenas no fluxo de upload

NSPhotoLibraryUsageDescription

Utilização

Primeiro, instancie um objeto do tipo DocumentDetectorSdk:

DocumentDetectorSdk.Builder

Parâmetro

Obrigatório?

String mobileToken

Token de uso associado à sua conta CAF

Sim

.setDocumentDetectorFlow(flow :[DocumentDetectorStep])

Define o fluxo de captura de documentos, conforme explicado aqui

Sim

.setPeopleId(peopleId: String?)

Identificador do usuário com a finalidade de identificar um perfil fraudulento

Não, é usado apenas para analytics

.setAnalyticsSettings(useAnalytics: Bool)

Habilita/desabilita a coleta de dados para analytics

Não, o padrão é true

.setPopupSettings(show: Bool)

Altera a configuração dos popups ampliados antes de cada documento

Não, o padrão é true

.setDetectionSettings(detectionThreshold : Float)

Altera a configuração padrão de detecção de documento, o limiar de confiança do enquadramento (de 0.0 a 1.0, onde 1.0 indica que o SDK só aceitará o documento com um enquadramento perfeito)

Não. O padrão é 0,91

.setQualitySettings(verifyQuality: Bool, qualityThreshold: Double?)

Altera a configuração padrão para verificar a qualidade das capturas, indicando se você deseja realizar essa verificação (leva cerca de 2 segundos) e se pode ser definido o limiar de qualidade para essas fotos (valor de 1.0 a 5.0). Além disso, o SDK retornará a URL da imagem na variável DocumentDetectorResult.Capture.ImageUrl. Cuidado, se você decidir verificar a qualidade neste parâmetro e ocorrer uma falha de conexão durante o envio das imagens, o SDK será encerrado com um erro de internet.

Não. O padrão é true e 1.8, respectivamente

.setLayout(layout: DocumentDetectorLayout)

Altera as máscaras de documento de sucesso, falha e normal.

Também permite alterar o som e os botões de cancelar no topo da tela. Veja a exemplo.

Não

.setColorTheme(color: UIColor)

Altere a cor dos botões de som e cancelar que ficam no topo da tela. Também altere a cor dos botões do popup, exibidos antes de cada documento.

Não

.enableSound(enableSound: Bool)

Habilita/desabilita os sons e o ícone de som no SDK

Não, o padrão é true

.showStepLabel(show: Bool)

Mostrar/ocultar o rótulo central inferior (que contém o nome do documento)

Não, o padrão é true

.showStatusLabel(show: Bool)

Mostrar/ocultar o rótulo central (que contém o status)

Não, o padrão é true

.setNetworkSettings(requestTimeout:TimeInterval)

Altere as configurações padrão de rede

Não. O padrão é 60 (segundos)

.setLuminositySensorSettings(luminosityThreshold :Float?)

Define o limiar entre luminosidade ambiente aceitável/inaceitável. O limiar deste sensor é um número que varia de negativo a positivo.

Não. A configuração padrão é -3.

.setOrientationSensorSettings(orientationThreshold: Double?)

Define o limiar entre a orientação correta/incorreta do dispositivo. Quanto maior o valor, mais flexível ele será. O limiar deste sensor é a aceleração do dispositivo

Não. A configuração padrão é 0.3.

.setStabilitySensorSettings(stabilityThreshold: Double?)

Altera as configurações padrão do sensor de estabilidade. O limite deste sensor está na faixa das duas últimas acelerações coletadas do dispositivo.

Não. A configuração padrão é 0.3.

.setProxySettings(proxySettings: ProxySettings?)

Define as configurações do proxy, conforme explicado aqui

Não. O padrão é null

.showPreview(_ show: Bool, title: String?, subtitle: String?, confirmLabel: String?, retryLabel: String?)

Ativa/desativa a pré-visualização da captura. Se mostrar tem true, após cada captura, o SDK fornece uma tela para o usuário aprovar ou refazer a captura. Para os demais parâmetros, informe nil para usar o valor padrão ou uma String para um texto personalizado.

Não. O padrão é false

.setMessageSettings(waitMessage: String?, fitTheDocumentMessage: String?, verifyingQualityMessage: String?, lowQualityDocumentMessage: String?, uploadingImageMessage: String?, popupDocumentSubtitleMessage: String?, unsupportedDocumentMessage: String?, wrongDocumentMessage_RG_FRONT: String?, wrongDocumentMessage_RG_BACK: String?, wrongDocumentMessage_RG_FULL: String?, wrongDocumentMessage_CNH_FRONT: String?, wrongDocumentMessage_CNH_BACK: String?, wrongDocumentMessage_CNH_FULL: String?, wrongDocumentMessage_CRLV: String?, wrongDocumentMessage_RNE_FRONT: String?, wrongDocumentMessage_RNE_BACK: String?, sensorLuminosityMessage: String?, sensorOrientationMessage: String?, sensorStabilityMessage: String?)

Permite personalizar as mensagens exibidas no balão de "status" durante o processo de captura e análise. exemplo

Não.

.setCompressSettings(compressionQuality: CGFloat)

Permite definir a qualidade no processo de compressão. Por padrão, todas as capturas são compactadas. O método espera valores entre 0 e 1.0 como parâmetros, sendo 1.0 a melhor qualidade de compressão (recomendada).

Não. O padrão é 1.0

.setManualCaptureSettings(enable: Bool, time: TimeInterval)

Ativa/desativa a captura manual. O parâmetro de tempo define o tempo para que o modo de captura seja ativado.

Não. O padrão é desativado

.enableMultiLanguage(_ enable: Bool)

Ativa/desativa o suporte a vários idiomas.

Não. O padrão é ativado

.setGetImageUrlExpireTime(expireTime: String)

Define por quanto tempo a URL da imagem ficará disponível no servidor até expirar. Espere receber um intervalo de tempo entre "30m" e "30d".

Exemplos:

setGetImageUrlExpireTime("30m"): Para definir apenas minutos

setGetImageUrlExpireTime("24h"): Para definir apenas hora(s)

setGetImageUrlExpireTime("1h 10m"): Para definir hora(s) e minuto(s)

setGetImageUrlExpireTime("10d"): Para definir dia(s)

Não. O padrão é 3h

.setMask(type: MaskType)

Define o tipo de máscara usado nas capturas. Há três tipos:

.padrão, com o padrão pontilhado no formato do documento;

.vazia, que remove completamente a máscara.

Não. O padrão é .standard

.setCurrentStepDoneDelay(currentStepDoneDelay: TimeInterval)

Atrasa a atividade após a conclusão de cada etapa. Este método pode ser usado para exibir uma mensagem de sucesso na própria tela após a captura, por exemplo.

Não. O padrão é false

.setUploadSettings(UploadSettings uploadSettings)

Define as configurações para upload de documentos. Ao ativar essa opção, o fluxo do SDK solicitará ao usuário que envie os arquivos do documento em vez de capturá-los com a câmera do dispositivo. Essa opção também inclui verificações de qualidade do documento. exemplo da implementação.

Não. Por padrão essa opção está desativada.

.setResolutionSettings(resolution: Resolution)

Permite definir a resolução da captura. O método recebe como parâmetro uma Resolution, que possui as seguintes opções:

  • low Especifica as configurações de captura apropriadas para taxas de bits de vídeo e áudio de saída adequadas para compartilhamento via 3G

  • medium Especifica as configurações de captura apropriadas para as taxas de bits de vídeo e áudio de saída adequadas para compartilhamento via WiFi

  • high Especifica as configurações de captura apropriadas para saída de vídeo e áudio em alta qualidade

  • photo Especifica as configurações de captura apropriadas para saída de qualidade de foto em alta resolução

  • inputPriority Especifica as configurações de captura apropriadas para saída de qualidade de foto em alta resolução

  • hd1280x720 Especifica as configurações de captura apropriadas para saída de vídeo em qualidade 720p (1280 x 720 pixels)

  • hd1920x1080 Configurações de captura adequadas para saída de vídeo em qualidade 1080p (1920 x 1080 pixels)

  • hd4K3840x2160 Configurações de captura adequadas para saída de vídeo em qualidade 2160p (3840 x 2160 pixels)

Não. O padrão é hd1920x1080

.setAllowedPassportCountriesList(passportList: [CountryCodes])

Ativa a opção de permitir passaportes de apenas um determinado país emissor ou de uma lista de países. Veja a lista completa em: ISO 3166-1 alpha-3

Exemplo:

  • .setAllowedPassportList(passportList: [CountryCodes.BRA])

Não. Por padrão, são aceitos passaportes emitidos por qualquer país.

DocumentDetectorStep

Para criar um fluxo de captura, você precisará criar um array de DocumentDetectorStep, em que cada elemento será uma etapa de captura. Para construir cada DocumentDetectorStep objeto, você pode inserir os seguintes elementos:

Parâmetro

Obrigatório?

document: Document

Identifica qual documento você deseja capturar na respectiva etapa

Sim

rótuloDaEtapa: String?

Texto a ser exibido na parte inferior do layout

Não. Há um padrão para Documento Tipo

ilustração: UIImage?

Ilustração a ser exibida no popup antes da captura

Não. Há um padrão para Documento Tipo

audio: URL?

Áudio a ser reproduzido no início da etapa. Exemplo.

Não. Há um padrão para Documento Tipo

MessageSettings

Atributo

Valor Padrão

waitMessage: String

Mensagem exibida quando o SDK está em processo de abertura.

"Por favor, aguarde…"

fitTheDocumentMessage: String

Mensagem que orienta a ajustar o documento à máscara.

"Ajuste o documento na marcação"

verifyingQualityMessage: String

Mensagem exibida quando o SDK faz uma solicitação ao backend para verificar a qualidade.

"Verificando qualidade…"

lowQualityDocumentMessage: String

Mensagem exibida quando a qualidade da captura falha.

"Ops, não foi possível ler as informações. Tente novamente"

uploadingImageMessage: String

Mensagem exibida quando não há verificação de qualidade e a captura está sendo salva nos servidores.

"Enviando imagem…"

popupDocumentSubtitleMessage: String

Texto exibido no pop-up de inicialização da etapa.

"Coloque o documento sobre uma mesa, centralize-o na marcação e aguarde a captura automática."

unsupportedDocumentMessage: String

Mensagem exibida quando um tipo inesperado de documento é exibido para captura.

"Ops, parece que este documento não é compatível. Entre em contato conosco!"

wrongDocumentMessage_RG_FRONT: String

Mensagem exibida quando a frente do RG (carteira de identidade brasileira) é exibida em um fluxo diferente do esperado.

"Ops, esta é a Frente do RG"

wrongDocumentMessage_RG_BACK: String

Mensagem exibida quando a versão do RG (carteira de identidade brasileira) é exibida em um fluxo diferente do esperado.

"Ops, este é o Verso do RG"

wrongDocumentMessage_RG_FULL: String

Mensagem exibida quando o RG aberto (carteira de identidade brasileira) é exibido em um fluxo diferente do esperado.

"Ops, este é o RG Aberto"

wrongDocumentMessage_CNH_FRONT: String

Mensagem exibida quando a frente da CNH (Carteira Nacional de Habilitação) é exibida em um fluxo diferente do esperado.

"Ops, esta é a Frente da CNH"

wrongDocumentMessage_CNH_BACK: String

Mensagem exibida quando a versão da CNH (Carteira Nacional de Habilitação) é exibida em um fluxo diferente do esperado.

"Ops, este é o Verso da CNH"

wrongDocumentMessage_CNH_FULL: String

Mensagem exibida quando a CNH aberta (Carteira Nacional de Habilitação) é exibida em um fluxo diferente do esperado.

"Ops, esta é a CNH Aberta"

wrongDocumentMessage_CRLV: String

Mensagem exibida quando o CRLV (Certificado de Registro e Licenciamento de Veículo) é exibido em um fluxo diferente do esperado.

"Ops, este é o CRLV"

wrongDocumentMessage_RNE_FRONT: String

Mensagem exibida quando a frente do RNE (Registro Nacional de Estrangeiros) é exibida em um fluxo diferente do esperado.

"Ops, esta é a Frente do RNE"

wrongDocumentMessage_RNE_BACK: String

Mensagem exibida quando o verso do RNE (Registro Nacional de Estrangeiros) é exibido em um fluxo diferente do esperado.

"Ops, este é o Verso do RNE"

sensorLuminosityMessage: String

Mensagem exibida quando o limite de brilho é menor do que o esperado.

"A área próxima a você está escura demais"

sensorOrientationMessage: String

Mensagem exibida quando o limite de orientação é menor do que o esperado.

"O dispositivo não está na horizontal"

sensorStabilityMessage: String

Mensagem exibida quando o limite de orientação é menor do que o esperado.

"Mantenha o dispositivo parado"

UploadSettings

Para ativar a funcionalidade de upload de documentos, é necessário instanciar um objeto do tipo UploadSettings() e definir seus parâmetros:

Parâmetro

Obrigatório?

ativar

Ativa/desativa este recurso.

Não. O padrão é true

comprimir

Ativa/desativa a compressão de arquivos antes do envio.

Não. O padrão é true

fileFormats

Define o(s) formato(s) de arquivo que serão aceitos para envio.

Não. Por padrão, .PDF , .JPEG e .PNG são aceitos

maximumFileSize

Define o limite máximo em KB do arquivo a ser enviado.

Não. O limite padrão é 10000 KB (10 MB).

Atualmente, os formatos de arquivo suportados são:

Obtendo o resultado

Para obter o resultado, você deve implementar o DocumentDetectorControllerDelegate delegate no seu controlador:

Depois de criar o DocumentDetector objeto, inicie o DocumentDetectorController passando este objeto como parâmetro no construtor:

DocumentDetectorResult

Parâmetro

Pode ser nulo?

captures:[Capture]

O array com as capturas correspondentes dos documentos parametrizados

Sim, em caso de erro

tipo: String

A classe do fluxo do documento lido. Este parâmetro é útil em uma integração com nossa rota de OCR. Os tipos existentes são: ["blank", "cnh", "cnh_new", "generic", "rg", "rg_new", "rne", "rnm", "ctps", "passport, crlv, crlv_new"]

Sim, em caso de erro

trackingId: String?

Identificador desta execução em nossos servidores. Se possível, salve este campo e envie-o para nossa API. Dessa forma, teremos mais dados sobre como o usuário se comportou durante a execução

Sim, se o usuário definir useAnalytics = false ou as chamadas de analytics não funcionarem

Captura

Parâmetro

Pode ser nulo?

imagem: UIImage

Imagem do documento

Não

imageUrl :String

URL do documento no servidor da CAF. Se você quiser essa URL, mantenha ativado o parâmetro que verifica a qualidade da imagem

Sim, se você optar por não verificar a qualidade da imagem

scannedLabel :String

Rótulo do respectivo documento entre as seguintes possibilidades: ["blank", "cnh_back", "cnh_front", "cnh_full", "new_cnh_back", "new_cnh_front", "new_cnh_full", "crlv", "crlv_new", "generic", "rg_back", "rg_front", "rg_full", "rg_new_back", "rg_new_front", "rg_new_full", "rne_back", "rne_front", "rnm_back", "rnm_front", "ctps_back", "ctps_front", "passport"]

Não

quality :Double

Qualidade inferida pelo algoritmo de qualidade do documento, quando ativado. Varia entre 1.0 e 5.0

Pode ser 0, se o SDK não verificar a qualidade

lensFacing: Int

Define o lado da câmera que foi usado. Use DocumentDetectorResult.LENS_FACING_FRONT ou DocumentDetectorResult.LENS_FACING_FRONT para validar.

Não

DocumentDetectorFailure

Superclasse que leva ao encerramento do SDK. Para descobrir qual foi o motivo, descubra qual classe de objeto possui o método **isKindOfClass() **, equivalente a instanceof em Java e is em Dart:

isKindOfClass()

Descrição

Exemplo

InvalidTokenReason

O token informado não é válido para o produto correspondente

Parametrize "test123" como token no builder do SDK

PermissionReason

Falta alguma permissão obrigatória para executar o SDK

Iniciar o DocumentDetector sem permissão de câmera concedida

NetworkReason

Falha na conexão com a internet

O usuário estava sem internet durante o facematch no FaceAuthenticator

ServerReason

Quando uma requisição do SDK recebe um código de status de falha

Em teoria, isso não deveria acontecer. Se acontecer, nos avise!

StorageReason

Não há espaço no armazenamento interno do dispositivo do usuário

Quando não há espaço no armazenamento interno ao capturar a foto do documento

Exemplos

Personalizando o layout

Você pode personalizar o layout criando um objeto do tipo DocumentDetectorLayout e passando-o como parâmetro em DocumentDetectorBuilder:

Como obter a URL de um áudio

Atualizado