Author: Rodrigo Borges
Date: 2026-03-31

# Introduction to documentosbr / Introdução ao documentosbr

#### Rodrigo Borges

#### 2026-03-31

# English

The documentosbr package provides a high-performance suite for validating and handling Brazilian administrative records. It currently supports: - CPF (Individual Taxpayer Registry) - CNPJ (National Registry of Legal Entities) - PIS (Social Integration Program) - CNS/CNES (National Health Card)

The core is implemented in C++ using Rcpp, allowing for extremely fast validation even on datasets with millions of observations.

## Validation Logic

Most Brazilian identifiers use “Module 11” checksums. While CPF and CNPJ share similar weighted-sum structures, the CNS (National Health Card) uses a dynamic algorithm that changes based on the starting digit (1-2 or 7-9).

# Português

O pacote documentosbr oferece uma suíte de alta performance para a validação e manipulação de registros administrativos brasileiros. Atualmente, o pacote suporta: - CPF (Cadastro de Pessoa Física) - CNPJ (Cadastro Nacional de Pessoa Jurídica) - PIS (Programa de Integração Social) - CNS/CNES (Cartão Nacional de Saúde)

O núcleo é implementado em C++ via Rcpp, permitindo validações extremamente rápidas mesmo em bases de dados com milhões de observações.

## Lógica de Validação

A maioria dos identificadores brasileiros utiliza o sistema de “Módulo 11”. Enquanto CPF e CNPJ compartilham estruturas de somas ponderadas similares, o CNS utiliza um algoritmo dinâmico que varia conforme o dígito inicial (1-2 ou 7-9).

Installation / Instalação

    # From CRAN / Via CRAN
    install.packages("documentosbr")

    # Development version / Versão de desenvolvimento
    # remotes::install_github("rodrigo-borges/documentosbr")

## Basic Usage / Uso Básico

The valida_doc() function is the primary interface. It is vectorized and highly efficient. Use the type argument to specify the document and log = TRUE for detailed error reporting.
A função valida_doc() é a interface principal. Ela é vetorizada e altamente eficiente. Use o argumento type para especificar o documento e log = TRUE para relatórios detalhados de erro.

    library(documentosbr)

    # Vectorized validation / Validação vetorizada
    cpfs <- c("12345678901", "56273869596")
    valida_doc(cpfs, type = "cpf")

    # Health Card (CNS) / Cartão Nacional de Saúde
    valida_doc("123456789012345", type = "cnes")

## Performance / Performance

By offloading validation to C++, documentosbr minimizes overhead in ETL pipelines, making it suitable for large-scale data cleaning tasks in administrative records.
Ao delegar a validação para o C++, o documentosbr minimiza o gargalo em fluxos de ETL, sendo ideal para tarefas de limpeza de dados em larga escala em registros administrativos.

Caso deseje uma saída mais verbosa a função pode ser chamada da seguinte forma:

    library(documentosbr)
    d <- valida_doc("56273869595", type = "pis", log = T)

dado | resultado | erros
--- | --- | ---
56273869595 | FALSE | Primeiro digito errado