01
Introdução
02
Classificação
Tipos de documentos
03
Análise
Comprovante de residência
Full OCR
Datavalid
Comparando a biometria de dois arquivos
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=="
}
}
]
}
]
}
}