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 capturaPermissõ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:
lowEspecifica as configurações de captura apropriadas para taxas de bits de vídeo e áudio de saída adequadas para compartilhamento via 3GmediumEspecifica as configurações de captura apropriadas para as taxas de bits de vídeo e áudio de saída adequadas para compartilhamento via WiFihighEspecifica as configurações de captura apropriadas para saída de vídeo e áudio em alta qualidadephotoEspecifica as configurações de captura apropriadas para saída de qualidade de foto em alta resoluçãoinputPriorityEspecifica as configurações de captura apropriadas para saída de qualidade de foto em alta resoluçãohd1280x720Especifica as configurações de captura apropriadas para saída de vídeo em qualidade 720p (1280 x 720 pixels)hd1920x1080Configurações de captura adequadas para saída de vídeo em qualidade 1080p (1920 x 1080 pixels)hd4K3840x2160Configuraçõ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

