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

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.

|

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