DocumentDetector v6.x e abaixo
Documentos suportados
Atualmente, os documentos suportados no Android são: RG, CNH, RNE, CRLV, CTPS, Passaporte. Se você tiver sugestões de outros documentos, entre em contato conosco!
Política de Privacidade e Termos e Condições de Uso
Ao usar nosso plugin, certifique-se de que concorda com nossa Política de Privacidade e com nossos Termos e Condições de Uso.
Análises
Nossos SDKs, por padrão, coletam informações sobre o usuário e o ambiente em execução para mapear melhor os fraudadores e entender seus comportamentos. Recomendamos manter essa coleta ativa, pois a única finalidade desses dados é reduzir fraudes, mas, se desejar, você pode desativá-la por meio da .setAnalyticsSettings(bool useAnalytics) parâmetro.
Pré-requisitos
Configuração mínima
Versão
Flutter
1.12+
Dart
2.12+
API mínima do Android
21+
Versão do SDK de compilação
33
iOS
11.0+
Xcode
13.4.1+
Configurações
Android
No arquivo ROOT_PROJECT/android/app/build.gradle, adicione:
iOS
No ROOT_PROJECT/ios/Podfile, adicione ao final do arquivo:
Por fim, adicione as permissões ao arquivo ROOT_PROJECT/ios/Runner/Info.plist:
Para habilitar texto e voz em português, no seu projeto, no diretório ROOTPROJECT/ios, abra o arquivo .xcworkspace no Xcode e adicione em Project > Info > Localizations o idioma Portuguese (Brazil).
Flutter
Adicione o plugin ao seu ROOT_PROJECT/pubspec.yaml arquivo:
Permissões em tempo de execução
Permissão
Motivo
Obrigatório?
CÂMERA
Para capturar a(s) foto(s) do documento
Sim
Utilização
Desativando validações de segurança para testes
Estamos constantemente tomando ações para tornar o produto cada vez mais seguro, mitigando uma série de ataques observados no processo de captura e, consequentemente, reduzindo o máximo possível as fraudes de identidade. O SDK possui alguns bloqueios que podem impedir sua execução em determinados contextos. Para desativá-los, você pode usar os métodos como mostrado no exemplo abaixo:
Atenção! Desativar as validações de segurança é recomendado apenas para ambientes de teste. Para publicar seu aplicativo em produção, recomendamos usar as configurações padrão.
Personalizações gerais
DocumentDetector
.setPeopleId(String peopleId)
CPF do usuário que está usando o plugin, para ser usado na detecção de fraudes via analytics
.setAnalyticsSettings(bool useAnalytics)
Ativa/desativa a coleta de dados para maximizar as informações antifraude. O padrão é true
.setDocumentFlow(List<DocumentDetectorStep> documentSteps)
Fluxo de documentos a serem capturados no SDK
.setPopupSettings(bool show)
Altera a configuração dos popups exibidos antes de cada documento. O padrão é true
.enableSound(bool enable)
Ativa/desativa os sons. O padrão é true
.setNetworkSettings(int requestTimeout)
Altera as configurações padrão de rede. O padrão é 60 segundos
.setShowPreview(ShowPreview showPreview)
Prévia para verificação da qualidade da foto
.setAutoDetection(bool enable)
Ativa/desativa a detecção automática e as verificações dos sensores. Use false para desativar todas as verificações no dispositivo. Assim, todas as validações serão realizadas no backend após a captura. O padrão é true
.setCurrentStepDoneDelay(bool showDelay, int delay)
Atrasar 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. O padrão é false
.setMessageSettings(MessageSettings messageSettings)
Permite personalizar as mensagens exibidas no balão de "status" durante o processo de captura e análise.
.setGetImageUrlExpireTime(String expireTime)
Define por quanto tempo a URL da imagem permanecerá no servidor até expirar. Espera-se receber um intervalo de tempo entre "30m" e "30d". O padrão é 3h
.setAndroidSettings(DocumentDetectorAndroidSettings androidSettings)
Personalizações aplicadas apenas no Android
.setIosSettings(DocumentDetectorIosSettings iosSettings)
Personalizações aplicadas apenas no iOS
.setUploadSettings(UploadSettings uploadSettings)
Define as configurações para envio de documentos. Ao habilitar esta 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. Esta opção também inclui verificações de qualidade do documento. Por padrão, esta opção de fluxo não está habilitada
.setStage(String stage)
Permite escolher o ambiente em que o SDK será executado (produção ou beta). Os valores esperados String são: "PROD" e "BETA". Esta configuração não é obrigatória; por padrão, o SDK usará o ambiente de produção.
Cada ambiente (beta e produção) requer seu próprio mobileToken específico, gerado na Trust Platform do respectivo ambiente.
|
Construtor DocumentDetectorStep
DocumentType document
Documento a ser escaneado nesta respectiva etapa
DocumentDetectorStepCustomizationAndroid android
Personalizações visuais da respectiva etapa aplicadas no Android
DocumentDetectorStepCustomizationIos ios
Personalizações visuais da respectiva etapa aplicadas no iOS
Construtor UploadSettings
bool compress
Ativa/desativa a compressão do arquivo antes do envio. O padrão é true
int maxFileSize
Define o tamanho máximo em KB do arquivo a ser enviado. O limite padrão é 20000 KB (20MB)
List<String> fileFormats
Define o(s) formato(s) de arquivo que serão aceitos para upload. Por padrão, aceita: .PDF, .JPG, .JPEG, .PNG, .HEIF
String activityLayout
Define o layout de fundo do envio de documentos
String popUpLayout
Define o layout do popup de solicitação de envio de documentos
ShowPreview
Como modificar: Se você quiser modificar o texto selecionado, altere a String com a mensagem que deseja usar.
bool show
Ativar/Desativar prévia
String title
Título
String subTitle
Subtítulo
String confirmLabel
Texto do botão de confirmação
String retryLabel
Texto do botão para refazer a captura
Exemplo de uso
MessageSettings
Como modificar: Se você quiser modificar o texto selecionado, altere a String com a mensagem que deseja usar.
String? waitMessage
Padrão: "Por favor, aguarde..."
String? fitTheDocumentMessage
Padrão: "Encaixe o documento na marcação"
String? holdItMessage (Somente Android)
Padrão: "Segure assim"
String? verifyingQualityMessage
Padrão: "Verificando a qualidade..."
String? lowQualityDocumentMessage
Padrão: "Ops, não foi possível ler as informações. Tente novamente".
String? uploadingImageMessage
Padrão: "Enviando imagem..."
boolean? showOpenDocumentMessage
Padrão: true
String? openDocumentWrongMessage
Padrão: "Feche seu documento e tente novamente"
String? documentNotFoundMessage
Padrão: "Não foi encontrado um documento"
String? sensorLuminosityMessage
Padrão: "A área ao seu redor está escura demais".
String? sensorOrientationMessage
Padrão: "O dispositivo não está na horizontal”
String? sensorStabilityMessage
Padrão: "Mantenha o dispositivo parado”
String? unsupportedDocumentMessage
Padrão: "Ops, parece que este documento não é compatível. Entre em contato conosco!"
String? popupDocumentSubtitleMessage
Padrão: "Posicione o documento sobre uma mesa, centralize-o na marcação e aguarde a captura automática."
String? setPositiveButtonMessage
Padrão: "OK, entendido!"
String? wrongDocumentMessage_RG_FRONT (Somente Android)
Padrão: "Ops, esta é a frente do RG"
String? wrongDocumentMessage_RG_BACK (Somente Android)
Padrão: "Ops, este é o verso do RG".
String? wrongDocumentMessage_RG_FULL (Somente Android)
Padrão: "Ops, este é o RG aberto"
String? wrongDocumentMessage_CNH_FRONT (Somente Android)
Padrão: "Ops, esta é a frente da CNH"
String? wrongDocumentMessage_CNH_BACK (Somente Android)
Padrão: "Ops, este é o verso da CNH"
String? wrongDocumentMessage_CNH_FULL (Somente Android)
Padrão: "Ops, esta é a CNH aberta"
String? wrongDocumentMessage_CRLV (Somente Android)
Padrão: "Ops, este é o CRLV".
String? wrongDocumentMessage_RNE_FRONT (Somente Android)
Padrão: "Ops, esta é a frente do RNE"
String? wrongDocumentMessage_RNE_BACK (Somente Android)
Padrão: "Ops, este é o verso do RNE"
Exemplo de uso
Android
Construtor DocumentDetectorStepCustomizationAndroid
String stepLabelStringResName
Nome do recurso de string a ser exibido no rótulo do nome do documento. Por exemplo, se você quiser exibir a String "Test", crie uma String em ROOT_PROJECT/android/app/src/main/res/values/strings.xml com o nome R.string.my_custom_string e o valor "Test" e parametriza "my_custom_string".
String illustrationDrawableResName
Nome do recurso drawable a ser exibido no popup de introdução da captura. Por exemplo, se você quiser exibir uma ilustração personalizada, salve-a em ROOT_PROJECT/android/app/src/main/res/drawable/my_custom_illustration.png e parametriza "my_custom_illustration".
String audioRawResName
Nome do recurso raw a ser executado no início da captura. Por exemplo, se você quiser tocar um áudio personalizado, salve-o em ROOT_PROJECT/android/app/src/main/res/raw/my_custom_audio.mp3 e parametriza "my_custom_audio".
Construtor DocumentDetectorAndroidSettings
DocumentDetectorCustomizationAndroid customization
Personalização do layout Android da activity
SensorSettingsAndroid sensorSettings
Personalização das configurações do sensor de captura
List<CaptureStage> captureStages
Matriz de etapas para cada captura. Este parâmetro é útil se você quiser alterar a forma como o DocumentDetector executa, como configurações de detecção, captura automática ou manual, verificação da qualidade da foto etc.
Integer compressQuality
Permite configurar a qualidade no processo de compressão. Por padrão, todas as capturas passam pela compressão. O método espera valores entre 50 e 100 como parâmetro, sendo 100 a melhor qualidade de compressão (recomendada). O padrão é 100
bool enableSwitchCameraButton
Permite ativar ou desativar o botão de troca de câmera. O padrão é Verdadeiro
Resolution resolution
Permite definir a resolução de captura. O método recebe como parâmetro uma Resolution que fornece as opções HD, FULL_HD, QUAD_HD e ULTRA_HD. O padrão é Resolution.ULTRA_HD
bool enableGoogleServices
Permite ativar/desativar recursos do SDK que consomem GoogleServices no SDK; não recomendamos desativar os serviços devido à perda de segurança. O padrão é Verdadeiro
bool enableEmulator
Permite o uso de emulador quando true
bool enableRootDevices
Permite o uso de dispositivos com root quando true
bool useDebug
Ativa/desativa o uso do app em modo de depuração. O padrão é false
Construtor CaptureStage
int durationMillis
Duração, em milissegundos, desta respectiva etapa antes de avançar para a próxima, se houver. null ao infinito
bool wantSensorCheck
Sinalizador para definir se esta etapa ativa/desativa as validações dos sensores (luminosidade, orientação e estabilidade)
QualitySettings qualitySettings
Configurações de verificação da qualidade do documento. O único parâmetro de QualitySettings é o limite de aceitação da verificação de qualidade, de 1.0 a 5.0, sendo 1.8 o recomendado
DetectionSettings detectionSettings
Configurações de detecção de documento para a câmera. Os DetectionSettings parâmetros são, respectivamente, o limite de aceitação do documento, em um valor de 0.0 a 1.0, sendo 0.91 o recomendado, e o número de quadros consecutivos corretos necessários, sendo o recomendado 5
CaptureMode captureMode
Modo de captura de foto. Pode ser CaptureMode.AUTOMATIC para captura automática ou CaptureMode.MANUAL para a exibição de um botão para o usuário capturar
Construtor DocumentDetectorCustomizationAndroid
String styleResIdName
Nome do recurso de estilo que define as cores do DocumentDetector. Por exemplo, se você quiser alterar as cores do SDK, crie um estilo em ROOT_PROJECT/android/app/src/main/res/values/styles.xml com o nome R.style.my_custom_style seguindo o modelo e parametriza "my_custom_style".
String layoutResIdName
Nome do layout do recurso que substituirá o layout padrão do DocumentDetector. Por exemplo, se você quiser alterar o layout do SDK, crie um layout em ROOT_PROJECT/android/app/src/main/res/layout/my_custom_layout.xml seguindo o modelo e parametriza "my_custom_layout". Verifique as bibliotecas de importação mencionadas aqui
String greenMaskResIdName
Nome do recurso drawable para substituir a máscara verde padrão. Se você for usar este parâmetro, use uma máscara com a mesma área de recorte; isso é importante para o algoritmo de detecção. Por exemplo, salve a imagem da máscara em ROOT_PROJECT/android/app/src/main/res/drawable/my_custom_green_mask.png e parametriza "my_custom_green_mask".
String redMaskResIdName
Nome do recurso drawable para substituir a máscara vermelha padrão. Se você for usar este parâmetro, use uma máscara com a mesma área de recorte; isso é importante para o algoritmo de detecção. Por exemplo, salve a imagem da máscara em ROOT_PROJECT/android/app/src/main/res/drawable/my_custom_red_mask.png e parametriza "my_custom_red_mask".
String whiteMaskResIdName
Nome do recurso drawable para substituir a máscara branca padrão. Se você for usar este parâmetro, use uma máscara com a mesma área de recorte; isso é importante para o algoritmo de detecção. Por exemplo, salve a imagem da máscara em ROOT_PROJECT/android/app/src/main/res/drawable/my_custom_white_mask.png e parametriza "my_custom_white_mask".
MaskType maskType
Define o tipo de máscara usada nas capturas. Existem três tipos: MaskType.DEFAULT, com o padrão pontilhado no formato do documento; MaskType.DETAILED, que exibe uma ilustração do documento solicitado, juntamente com a máscara pontilhada; MaskType.NONE, que remove completamente a máscara. O padrão é MaskType.DEFAULT
Construtor SensorSettingsAndroid
SensorLuminositySettingsAndroid sensorLuminositySettings
Configurações do sensor de luminosidade a serem aplicadas em todas as etapas do SDK
SensorOrientationSettingsAndroid sensorOrientationSettings
Configurações do sensor de orientação a serem aplicadas em todas as etapas do SDK
SensorStabilitySettingsAndroid sensorStabilitySettings
Configurações do sensor de orientação a serem aplicadas em todas as etapas do SDK
Construtor SensorLuminositySettingsAndroid
int luminosityThreshold
Limite inferior entre brilho aceitável/não aceitável, em lx. O padrão é 5 lx
Construtor SensorOrientationSettingsAndroid
double orientationThreshold
Limite inferior entre orientação correta/incorreta, em variação de m/s² em relação à orientação totalmente horizontal. O padrão é 3 m/s².
Construtor SensorStabilitySettingsAndroid
int stabilityStabledMillis
Quantos milissegundos o dispositivo móvel deve permanecer no limite correto para ser considerado estável. O padrão é 2000 ms
double stabilityThreshold
Limite inferior entre estável/instável, na variação em m/s² entre as duas últimas coletas do sensor. O padrão é 0.5 m/s².
iOS
Construtor de DocumentDetectorIosSettings
double detectionThreshold
Limite de aceitação do documento, em um valor de 0.0 a 1.0. O padrão é 0.95
bool verifyQuality
Sinaliza se você deseja verificar a qualidade do documento capturado
double qualityThreshold
Limite de aceitação da qualidade, entre 1.0 e 5.0. 1.8 é recomendado para OCR futuro
Personalização DocumentDetectorCustomizationIos
Personalização visual do DocumentDetector
SensorSettingsIos sensorSettings
Configurações personalizadas do sensor no iOS, nulo para desativar
Bool enableManualCapture
Ativa o modo de captura manual
double timeEnableManualCapture
Tempo para habilitar o botão de captura manual
double compressQuality
Permite definir a qualidade no processo de compressão. Por padrão, todas as capturas são compactadas. O método espera como parâmetro valores entre 0 e 1.0, sendo 1.0 a melhor compressão em qualidade (recomendada). O padrão é 1.0
String resolution
Permite definir a resolução de captura. O método recebe como parâmetro uma String IosResolution (o padrão é hd1280x720), que possui as seguintes opções:
Resolução
Descrição
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)
Construtor de DocumentDetectorCustomizationIos
String colorHex
A cor do tema do SDK. Por exemplo, se você quiser usar a cor preta, use "#000000".
String greenMaskImageName
Nome da imagem para substituir a máscara verde padrão. Lembre-se de adicionar a imagem em Assets Catalog Document no seu projeto XCode
String whiteMaskImageName
Nome da imagem para substituir a máscara branca padrão. Lembre-se de adicionar a imagem em Assets Catalog Document no seu projeto XCode
String redMaskImageName
Nome da imagem para substituir a máscara vermelha padrão. Lembre-se de adicionar a imagem em Assets Catalog Document no seu projeto XCode
String closeImageName
Nome da imagem para substituir o botão de fechar do SDK. Lembre-se de adicionar a imagem em Assets Catalog Document no seu projeto XCode
bool showStepLabel
Sinaliza se deve mostrar o rótulo da etapa atual
bool showStatusLabel
Sinaliza se deve mostrar o rótulo do status atual
double? buttonSize
Valor que define o tamanho do botão "fechar" no SDK
String? buttonContentMode
Atributo que define o modo de conteúdo do botão "fechar" no SDK. Escolha entre estes valores.
Construtor de SensorSettingsIos
SensorLuminositySettingsIos sensorLuminosity
Configurações do sensor de luminosidade a serem aplicadas em todas as etapas do SDK
SensorOrientationSettingsIos sensorOrientation
Configurações do sensor de orientação a serem aplicadas em todas as etapas do SDK
SensorStabilitySettingsIos sensorStability
Configurações do sensor de estabilidade a serem aplicadas em todas as etapas do SDK
Construtor de SensorLuminositySettingsIos
double luminosityThreshold
Limite entre brilho ambiente aceitável/inaceitável. O padrão é -3
Construtor SensorOrientationSettingsAndroid
double orientationThreshold
Limite entre orientação correta/incorreta do dispositivo. Quanto maior o valor, mais flexível ele será. O valor padrão é 3 m/s².
Construtor SensorStabilitySettingsAndroid
double stabilityStabledMillis
Tempo entre as coletas do sensor. O padrão é 2000 ms.
double stabilityThreshold
Limite entre estável/instável, na variação em m/s² entre as duas últimas coletas do sensor. O padrão é 0.5 m/s².
Coletando o resultado
O objeto de retorno do DocumentDetector é do tipo abstrato DocumentDetectorResult. Ele pode ser uma instância de DocumentDetectorSuccess, DocumentDetectorFailure ou DocumentDetectorClosed.
DocumentDetectorSuccess
Campo
Observação
List<Capture> captures
Lista de capturas do documento
Ela terá o mesmo comprimento e a mesma ordem que o parâmetro **List<DocumentDetectorStep> **
String type
Tipo de documento detectado pelo próprio SDK, útil para integração com nossa rota externa de OCR. Por exemplo, se você capturar DocumentType.CNH_FRONT e DocumentType.CNH_BACK, este parâmetro será "cnh".
Será nulo se o SDK não conseguir verificar o tipo do documento ou se a detecção estiver desativada
String trackingId
Identificador desta execução em nossos servidores. Se possível, salve este campo e envie-o para nossa API. Assim teremos mais dados sobre como o usuário se comportou durante a execução
Será nulo se o usuário definir useAnalytics = false ou as chamadas de analytics não funcionarem
Captura
Campo
Observação
String imagePath
Endereço completo da imagem no dispositivo
-
String imageUrl
URL da imagem armazenada temporariamente nos servidores da CAF
Será nulo se o SDK não conseguir verificar a qualidade ou se a qualidade estiver desativada
String label
Rótulo de detecção da captura. Por exemplo, se a captura se referir a um DocumentType.RG_FRONT, este rótulo pode ser "rg_front" ou "rg_new_front", que se refere aos novos modelos de RG
Será nulo se a foto for coletada em uma etapa em que a detecção esteja desativada
double quality
Qualidade da foto do documento, em um valor de 1.0 a 5.0
Será nulo se a foto for coletada em uma etapa em que a verificação de qualidade esteja desativada
DocumentDtetectorFailure
Campo
String message
Mensagem amigável explicando por que o SDK falhou
String type
Tipo de falha que encerrou o SDK
Os tipos de falha existentes são:
InvalidTokenReason: quando o token informado é inválido. Isso não deve ocorrer em um ambiente de produção;PermissionReason: quando alguma permissão obrigatória não foi concedida pelo usuário. Isso só ocorrerá em um ambiente de produção se seu app não solicitar ao usuário ou se o usuário a desativar manualmente antes de iniciar;NetworkReason: falha na conexão com o servidor. Isso ocorrerá em produção se o dispositivo do usuário não estiver conectado à Internet;ServerReason: falha em alguma requisição aos nossos servidores;SecurityReason: quando o dispositivo não é seguro para executar o SDK;StorageReason: quando o dispositivo não tem espaço suficiente para capturar uma foto. Isso pode acontecer em produção;LibraryReason: quando alguma falha interna tornou impossível executar o SDK. Isso pode ocorrer devido a erros de configuração do projeto e não deve ocorrer em produção;
Personalizando views no iOS
Para personalização no iOS, é necessário que os plugins do Flutter sejam adicionados localmente ao projeto. A personalização é feita nativamente com a abordagem ViewCode.
****Clique aqui para um exemplo com um guia de uso deste recurso.
Atualizado

