Análise Cadastral Digital

A API de Análise Cadastral Digital oferece soluções em verificação de identidade e seu ferramental de fraude utilizada no onboarding.

Feito para:  Estabelecimentos ComerciaisEmissoresCredenciadoresSubcredenciadores

Como funciona

A Elo oferece soluções de prevenção à fraudes com precisão de verificação rápida. Esta documentação descreve o uso da API de Análise Cadastral Digital, que realiza a verificação de documentos.

Em todas as chamadas descritas é necessário informar o client_id no header da requisição para identificar sua aplicação.

Esta API segue a arquitetura REST e, no final desta documentação, há a seção de Referências com o Swagger desta API. Os possíveis base paths são:

Homologação:

https://hml-api.elo.com.br/document-verification/v1

Produção:

https://api.elo.com.br/document-verification/v1

Assim que a imagem for capturada e enviada, ela é classificada quanto a seu tipo (CNH, RG, Selfie, Comprovante de Residência e outros).

A API de Análise Cadastral Digital é capaz de indentificar documentos dentro do arquivo carregado e, a partir deles, as inteligências artificiais da API os classificam.

Para realizar essa classificação, é preciso efetuar uma requisição POST ao recurso /classifications, enviando o arquivo no body da requisição:

{
  "file": [
    "string"
  ]
}

Exemplo de resposta com sucesso desta chamada:

{
  "id": "5a7bad63-cac6-430c-ac65-a94def0f7b7a",
  "data": [
    {
      "classification": {
        "type": "DriversLicense",
        "subtype": "Printed",
        "country": "BRA",
        "sides": [
          {
            "side": "FrontAndBack",
            "page": 0,
            "fieldname": "documento",
            "confidence": 0.99
          }
        ]
      }
    }
  ],
  "metadata": {
    "filesInfo": [
      {
        "fieldname": "documento",
        "name": "arquivo.JPG",
        "size": 567098,
        "pages": 1,
        "mimetype": "image/jpeg",
        "sha256": "41c2ece339abfcf9ba1e7d5a60666162a24ef34ba95adeb41ed1d9721c91c6b0",
        "encoding": "7bit"
      }
    ]
  }
}

Nessa versão temos disponíveis as classificações correspondentes aos seguintes tipos de documento:

  • BRA (country - Brasil) DriversLicense (type - CNH) Digital (subtype - Digital) Printed (subtype - Impressa)

  • FederalCouncil (type - Identidade de classe)

    Accounting_Paper (subtype - CFC em papel) Accounting_Plastic (subtype - CFC em plástico) Administration (subtype - CFA em plástico) Biology (subtype - CFBIO) Dentistry (subtype - CFO) EngineeringAndAgronomy_Paper (subtype - CONFEA em papel) EngineeringAndAgronomy_Plastic (subtype - CONFEA em plástico) Fishery (subtype - CONAPE) Lawyers (subtype - OAB) Medicine_Paper (subtype - CFM em papel) Nursing (subtype - COFEN) Pharmacy_Paper (subtype - CFF em papel) Pharmacy_Plastic (subtype - CFF em plástic) PhysicalEducation (subtype - CONFEF) Psychology (subtype - CFP) Radiology (subtype - CONTER) SocialService (subtype - CFESS) Veterinary (subtype - CFMV)

  • FederalRevenueService (type - Receita Federal CPF)

    CIC (subtype) Plastic (subtype - Cartão plástico azul) Printed (subtype - CPF impresso com código de barra) Temporary (subtype - Temporário em papel)

  • FirefighterID (type - Documento de identificação funcional para bombeiros)

    RioDeJaneiro (subtype - Rio de Janeiro)

  • ForeignID (type - Identidade de estrangeiro)

  • MigratoryRegistry (type - Identidade migratória)

  • RefugeRequest (type - Solicitação de refúgio)

  • WorkAndSocialSecurityRegistry (type - Carteira de trabalho)

  • MilitaryID (type - Identidade das forças armadas)

    Army_Paper (subtype - Exército em papel) Army_Temporary (subtype - Exército temporário) Navy_Paper (subtype - Marinha em papel) MilitaryDischarge (subtype - Certificado de Dispensa de Incorporação)

  • FederalID (type - RG)

    Decree2018Paper (subtype - Modelo novo em papel) Decree2018Plastic (subtype - Modelo novo plastificado) MainModel (subtype - Modelo padrão)

  • PoliceID (type - Identidade policial)

    Alagoas (subtype - Alagoas) Amazonas (subtype - Amazonas) Bahia (subtype - Bahia) Ceara (subtype - Ceará) DistritoFederal (subtype - Distrito Federal) EspiritoSanto (subtype - Espírito Santo) MatoGrosso (subtype - Mato Grosso) MatoGrossoDoSul (subtype - Mato Grosso do Sul) MinasGeraisPaper (subtype - Minas Gerais em papel) MinasGeraisPaper (subtype - Minas Gerais plastificado) Para (subtype - Pará) Paraiba (subtype - Paraíba) Pernambuco (subtype - Pernambuco) Piaui (subtype - Piauí) RioDeJaneiro (subtype - Rio de Janeiro) RioGrandeDoNorte (subtype - Rio Grande do Norte) SaoPaulo (subtype - São Paulo)

  • VoterID (type - Título Eleitoral)

  • ProofOfResidence (type - Comprovante de residência)

    Celesc Cemig Claro CoelbaCelpe Copel Cpfl Edp Enel Energisa Equatorial Light Rge Sabesp Saneago Tim Vivo

  • Transportation (type - Documentos de transporte)

    ANTT (subtype - ANTT) CRLV_Digital (subtype - CRLV digital) CRLV_Printe (subtype - CRLV impressa)

  • UNI (country - Universal)

    Passport (type - Passaporte) Selfie (type - Autorretrato)

  • USA (country - Estados Unidos)

    Florida (subtype - CNH da Flórida) SocialSecurityID (type - Documento de identificação americano)

  • ARG (country - Argentina)

    FederalID (type - Documento de identificação nacional argentino)

  • VEN (country - Venezuela)

    FederalID (type - Documento de identificação nacional venezuelano)

  • PRY (country - Paraguai)

    FederalID (type - Documento de identificação nacional paraguaio)

  • URY (country - Uruguai)

    FederalID (type - Documento de identificação nacional uruguaio)

Além da classificação do tipo do documento (CNH, RG, Selfie, Comprovante de Residência e outros), a API de Análise Cadastral Digital oferece recursos para análise de imagens para extração de informações de documentos presentes nelas.

A API é capaz de indentificar as informações de comprovantes de residência dentro do arquivo carregado e, a partir deles, as inteligências artificiais da API conseguem extraí-las, validá-las na base dos Correios e classificar o documento presente na imagem.

Para realizar essa extração de informações, é preciso efetuar uma requisição POST ao recurso /analysis/proof-of-residence, enviando o arquivo no body da requisição:

{
  "file": [
    "string"
  ]
}

Exemplo de resposta com sucesso desta chamada:

{
  "id": "5a7bad63-cac6-430c-ac65-a94def0f7b7a",
  "data": [
    {
      "fieldname": "documento",
      "classification": {
        "type": "PROOF-OF-RESIDENCE",
        "confidence": 0.99,
        "face": "front-back"
      },
      "extraction": {
        "zipCode": "01010000",
        "address": "R S4O BENTO",
        "district": "CENTRO",
        "city": "SA0 PAULO",
        "state": "SP",
        "number": "S/N",
        "addressComplement": "-"
      },
      "postOfficeData": {
        "zipCode": "01010000",
        "address": "Rua São Bento",
        "district": "Centro",
        "city": "São Paulo",
        "state": "SP",
        "matched": {
          "address": {
            "matched": true,
            "confidence": 1,
            "strategy": "cleanedString"
          },
          "district": {
            "matched": true,
            "confidence": 1,
            "strategy": "cleanedString"
          },
          "city": {
            "matched": true,
            "confidence": 1,
            "strategy": "cleanedString"
          },
          "state": {
            "matched": true,
            "confidence": 1,
            "strategy": "cleanedString"
          },
          "zipCode": {
            "matched": true,
            "confidence": 1,
            "strategy": "cleanedString"
          }
        }
      },
      "page": 1
    }
  ],
  "metadata": {
    "filesInfo": [
      {
        "fieldname": "documento",
        "name": "arquivo.JPG",
        "size": 567098,
        "pages": 1,
        "mimetype": "image/jpeg",
        "sha256": "41c2ece339abfcf9ba1e7d5a60666162a24ef34ba95adeb41ed1d9721c91c6b0",
        "encoding": "7bit"
      }
    ]
  }
}

Ao enviar o arquivo através de uma requisição POST para o recurso /analysis/full-ocr é possível classificar o documento contido nele, realizar a extração de todos os dados e validá-los na base da Receita Federal.

Para realizar essa extração de informações, é preciso efetuar uma requisição POST ao recurso /analysis/full-ocr, enviando o arquivo no body da requisição:

{
  "file": [
    "string"
  ]
}

Exemplo de resposta com sucesso desta chamada:

{
  "id": "12cfec3c-b456-7890-a4d1-5173e4c1418e",
  "data": [
    {
      "extraction": {
        "name": "J0SÉ LIMA D4 5ILV4",
        "federalRevenueNumber": "123. 456 . 7B9-90",
        "mothersName": "MAR1A LIMA DA SILVA",
        "birthdate": "03/04/19B2",
        "originDocumentId": "1234S678",
        "fathersName": "FERNANDO LIMA DA SILVA",
        "originDocumentIssuer": "SSP/SP",
        "locale": "SÃO PAULO SP",
        "issuedAt": "25/11/2017",
        "firstIssuedAt": "02/01/2002",
        "expireAt": "25/11/2022",
        "controlNumber": "12345678910",
        "registerNumber": "``",
        "renach": "SP987654321",
        "driversLicenseCategory": "B",
        "notes": "``"
      },
      "classification": {
        "type": "DriversLicense",
        "subtype": "Printed",
        "country": "BRA",
        "sides": [
          {
            "side": "FrontAndBack",
            "page": 0,
            "fieldname": "documento",
            "confidence": 0.99
          }
        ]
      },
      "federalRevenueData": {
        "name": "JOSÉ LIMA DA SILVA",
        "federalRevenueNumber": "12345678990",
        "mothersName": "MARIA LIMA DA SILVA",
        "birthdate": "1982-04-03",
        "matches": {
          "name": {
            "matched": true
          },
          "birthdate": {
            "matched": true
          },
          "mothersName": {
            "matched": true
          },
          "federalRevenueNumber": {
            "matched": true
          }
        }
      },
      "face": {
        "boundingBox": {
          "top": 0.22372281551361084,
          "left": 0.2856607735157013,
          "width": 0.15559428930282593,
          "height": 0.16876795887947083
        },
        "age": 33,
        "gender": {
          "value": "Male"
        },
        "croppedBase64": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAMAAACJuGjuAAAAA1BMVEX///+nxBvIAAABgUlEQVR42uzBgQAAAACAoP2pF6kCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABuDw5IAAAAAAT9f92OQAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAlQCA4wABEIp+HAAAAABJRU5ErkJggg=="
      }
    }
  ],
  "metadata": {
    "filesInfo": [
      {
        "fieldname": "documento",
        "name": "arquivo.JPG",
        "size": 567098,
        "pages": 1,
        "mimetype": "image/jpeg",
        "sha256": "41c2ece339abfcf9ba1e7d5a60666162a24ef34ba95adeb41ed1d9721c91c6b0",
        "encoding": "7bit"
      }
    ]
  }
}

A chamada Datavalid funciona de forma similar à Full OCR. Além de validar os dados com a base da Receita, é validado também na base da Serpro.

Ao enviar o arquivo através de uma requisição POST para o recurso /analysis/data-valid é possível classificar o documento contido nele, realizar a extração de todos os dados e validá-los no serviço Datavalid da Serpro.

Para realizar essa extração de informações, é preciso efetuar uma requisição POST ao recurso /analysis/full-ocr, enviando o arquivo no body da requisição:

{
  "file": [
    "string"
  ]
}

Exemplo de resposta com sucesso desta chamada:

{
  "id": "5a7bad63-cac6-430c-ac65-a94def0f7b7a",
  "data": [
    {
      "fieldname": "documento",
      "classifications": [
        {
          "page": 1,
          "fieldname": "documento",
          "classification": {
            "type": "PROOF-OF-RESIDENCE",
            "confidence": 0.99,
            "face": "front-back"
          }
        }
      ],
      "datavalid": {
        "federalRevenueNumberAvailability": true,
        "federalRevenueNumberStatus": true,
        "name": true,
        "nameSimilarity": 1,
        "mothersName": true,
        "mothersNameSimilarity": 1,
        "fathersName": true,
        "fathersNameSimilarity": 1,
        "isBrazilian": true,
        "document": {
          "numberSimilarity": 1,
          "type": true,
          "number": true
        },
        "driversLicense": {
          "status": true,
          "issuedAt": true,
          "expireAt": true,
          "firstIssuedAt": true,
          "registerNumber": true,
          "driversLicenseCategory": true
        },
        "croppedFaceBase64": {
          "availability": true,
          "similarity": 0.99,
          "probability": "VeryHigh"
        }
      },
      "extraction": {
        "name": "J0SÉ LIMA D4 5ILV4",
        "federalRevenueNumber": "123. 456 . 7B9-90",
        "mothersName": "MAR1A LIMA DA SILVA",
        "birthdate": "03/04/19B2",
        "originDocumentId": "1234S678",
        "fathersName": "FERNANDO LIMA DA SILVA",
        "originDocumentIssuer": "SSP/SP",
        "locale": "SÃO PAULO SP",
        "issuedAt": "25/11/2017",
        "firstIssuedAt": "02/01/2002",
        "expireAt": "25/11/2022",
        "controlNumber": "12345678910",
        "registerNumber": "``",
        "renach": "SP987654321",
        "driversLicenseCategory": "B",
        "notes": "``"
      },
      "federalRevenueData": {
        "name": "JOSÉ LIMA DA SILVA",
        "federalRevenueNumber": "12345678990",
        "mothersName": "MARIA LIMA DA SILVA",
        "birthdate": "1982-04-03",
        "matched": {
          "name": {
            "matched": true,
            "confidence": 1,
            "strategy": "cleanedString"
          },
          "federalRevenueNumber": {
            "matched": true,
            "confidence": 1,
            "strategy": "cleanedString"
          },
          "mothersName": {
            "matched": true,
            "confidence": 1,
            "strategy": "cleanedString"
          },
          "birthdate": {
            "matched": true,
            "confidence": 1,
            "strategy": "cleanedString"
          }
        }
      }
    }
  ],
  "metadata": {
    "filesInfo": [
      {
        "fieldname": "documento",
        "name": "arquivo.JPG",
        "size": 567098,
        "pages": 1,
        "mimetype": "image/jpeg",
        "sha256": "41c2ece339abfcf9ba1e7d5a60666162a24ef34ba95adeb41ed1d9721c91c6b0",
        "encoding": "7bit"
      }
    ]
  }
}

Através de uma requisição POST para o recurso /analysis/face-match é possível identificar e classificar documentos presentes nas imagens, extrair as faces e fazer a comparação da biometria das faces encontradas.

Para realizar esta comparação e fazer a extração das informações, é preciso efetuar uma requisição POST ao recurso /analysis/face-match, enviando os arquivos no body da requisição:

{
  "file": [
    "string",
    "string"
  ]
}

Exemplo de resposta com sucesso desta chamada:

{
  "id": "12cfec3c-b456-7890-a4d1-5173e4c1418e",
  "data": [
    {
      "matched": true,
      "confidence": 97.81,
      "resources": [
        {
          "fieldname": "file",
          "page": 1
        },
        {
          "fieldname": "file",
          "page": 1
        }
      ]
    }
  ],
  "metadata": {
    "filesInfo": [
      {
        "fieldname": "documento",
        "name": "arquivo.JPG",
        "size": 567098,
        "pages": 1,
        "mimetype": "image/jpeg",
        "sha256": "41c2ece339abfcf9ba1e7d5a60666162a24ef34ba95adeb41ed1d9721c91c6b0",
        "encoding": "7bit",
        "data": [
          {
            "page": 1,
            "classification": {
              "type": "RG",
              "confidence": 0.99,
              "face": "front-back"
            },
            "face": {
              "boundingBox": {
                "top": 0.22372281551361084,
                "left": 0.2856607735157013,
                "width": 0.15559428930282593,
                "height": 0.16876795887947083
              },
              "age": 33,
              "gender": {
                "value": "Male",
                "confidence": 99.62
              },
              "croppedBase64": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAMAAACJuGjuAAAAA1BMVEX///+nxBvIAAABgUlEQVR42uzBgQAAAACAoP2pF6kCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABuDw5IAAAAAAT9f92OQAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAlQCA4wABEIp+HAAAAABJRU5ErkJggg=="
            }
          }
        ]
      },
      {
        "fieldname": "documento",
        "name": "arquivo2.JPG",
        "size": 471815,
        "pages": 1,
        "mimetype": "image/jpeg",
        "sha256": "6s7e1ce339abfcf9ba1e7d5a17555062a24ef34ba95ead41ed1d9721c91c6b0",
        "encoding": "7bit",
        "data": [
          {
            "page": 1,
            "classification": {
              "type": "CNH",
              "confidence": 0.99,
              "face": "front-back"
            },
            "face": {
              "boundingBox": {
                "top": 0.4571691554123484,
                "left": 0.3182978132598537,
                "width": 0.31578542492762452,
                "height": 0.17514946548264891
              },
              "age": 33,
              "gender": {
                "value": "Male",
                "confidence": 99.62
              },
              "croppedBase64": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAMAAACJuGjuAAAAA1BMVEX///+nxBvIAAABgUlEQVR42uzBgQAAAACAoP2pF6kCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABuDw5IAAAAAAT9f92OQAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAlQCA4wABEIp+HAAAAABJRU5ErkJggg=="
            }
          }
        ]
      }
    ]
  }
}