Lidar com documentos não estruturados é uma das tarefas mais tediosas da engenharia de software. Seja construindo uma plataforma de RH, um ERP contábil ou um app de legal tech, você inevitavelmente enfrenta duas grandes dores de cabeça: Privacidade de Dados (conformidade com LGPD/GDPR) e Extração de Dados Estruturados.
Como compartilhar um currículo com segurança sem vazar o telefone do candidato? Como extrair o valor total de impostos de uma nota fiscal em PDF bagunçada sem escrever centenas de regras frágeis de Regex?
É aí que entra a NeoPII & Extract API. Neste artigo, vou te mostrar como usar essa API serverless, alimentada por IA, para sanitizar documentos e extrair dados estruturados em JSON usando Python.
🌟 As Oportunidades: O Que Você Pode Construir?
A API é dividida em dois motores principais:
1. NeoShield (Anonimização de Dados)
Esse motor recebe um arquivo, escaneia usando NLP e Regex avançado, e substitui Informações Pessoais Identificáveis (PII) — como e-mails, cartões de crédito e CPFs — por tags seguras (ex: [EMAIL], [CPF]). O grande diferencial? Ele suporta nativamente e reconstrói arquivos binários como .DOCX, .XLSX e .PDF. Ele não retorna apenas texto plano; ele devolve sua planilha Excel ou documento Word original com a mesma formatação, apenas com os dados sensíveis devidamente mascarados.
Casos de uso: Pipelines de recrutamento sem viés, protocolos de documentos legais públicos e compartilhamento seguro de dados.
2. Neo-Struct (Extração de Dados com IA)
Alimentado por IA generativa, esse endpoint lê arquivos não estruturados e força a saída em um schema JSON rígido que você define. Sem alucinações da IA, sem JSON quebrado.
Casos de uso: Automatização de entrada de dados de notas fiscais, extração de cláusulas de contratos e digitalização de registros históricos bagunçados.
💻 Tutorial: Implementação em Python
Vamos colocar a mão na massa. Primeiro, certifique-se de ter a biblioteca requests instalada:
pip install requests
Cenário A: Mascarando um Documento Confidencial
Ao trabalhar com APIs que aceitam arquivos, a maior armadilha em Python é como a biblioteca requests lida com multipart/form-data. Para garantir que o backend serverless interprete seu arquivo corretamente, sempre envie o arquivo como uma tupla (filename, file_object, mime_type).
Veja como mascarar um arquivo .docx:
import requests
import os
API_URL = "https://neopii-extract.p.rapidapi.com/mask_file"
HEADERS = {
"X-RapidAPI-Host": "neopii-extract.p.rapidapi.com",
"X-RapidAPI-Key": "SUA_CHAVE_RAPIDAPI"
}
file_path = "contrato_confidencial.docx"
with open(file_path, "rb") as f:
# Dica: Use o formato de tupla para garantir a integridade do boundary
files = {"file": (os.path.basename(file_path), f, "application/octet-stream")}
print("Anonimizando documento...")
response = requests.post(API_URL, files=files, headers=HEADERS)
if response.status_code == 200:
with open("contrato_mascarado.docx", "wb") as out:
out.write(response.content)
print("Sucesso! O documento foi sanitizado e salvo.")
else:
print(f"Erro: {response.text}")
Cenário B: Extraindo JSON Estruturado de um PDF
Imagine que você tem uma nota fiscal em PDF bagunçada e só precisa do nome do fornecedor, do valor total e da data de vencimento. Basta declarar um schema JSON e deixar a IA fazer o trabalho pesado.
import requests
import json
import os
API_URL = "https://neopii-extract.p.rapidapi.com/extract"
HEADERS = {
"X-RapidAPI-Host": "neopii-extract.p.rapidapi.com",
"X-RapidAPI-Key": "SUA_CHAVE_RAPIDAPI"
}
file_path = "nota_fiscal.pdf"
# Defina a estrutura exata de dados que você quer que a IA retorne
meu_schema = json.dumps({
"nome_fornecedor": "string",
"valor_total": "number",
"data_vencimento": "string (formato ISO)"
})
with open(file_path, "rb") as f:
files = {"file": (os.path.basename(file_path), f, "application/octet-stream")}
data = {"schema": meu_schema}
print("Extraindo dados via IA...")
response = requests.post(API_URL, files=files, data=data, headers=HEADERS)
if response.status_code == 200:
dados_estruturados = response.json()
print("\nExtração Completa:")
print(json.dumps(dados_estruturados, indent=2))
else:
print(f"Erro: {response.text}")
⚠️ Limitações Técnicas e Boas Práticas
Antes de ir para produção, há algumas restrições arquiteturais que você deve ter em mente:
1. "Cold Starts" Serverless
A API é construída em arquitetura serverless para garantir escalabilidade. Se a API não tiver sido chamada por um tempo, a primeira requisição pode levar cerca de 10 a 15 segundos para carregar as bibliotecas pesadas de NLP (como SpaCy) na memória. As requisições subsequentes, porém, serão extremamente rápidas (geralmente abaixo de 2 segundos).
Boa prática: Implemente um mecanismo de retry ou um ping em background para o endpoint /health para manter o motor aquecido durante o horário comercial.
2. Janela de Contexto (Limites de Tokens)
O endpoint de extração por IA (/extract) opera com um limite de aproximadamente 15.000 tokens. Se você enviar um PDF altamente denso de 50 páginas, o texto será truncado para caber na janela de contexto, o que pode resultar em dados faltantes.
Boa prática: Se você tem documentos muito grandes, divida-os em partes menores ou garanta que o tamanho do arquivo seja razoável.
3. Limites de Tamanho de Arquivo
Para evitar timeouts e garantir baixa latência, a API impõe limites rígidos de tamanho:
- PDF: 10 MB
- DOCX: 5 MB
- XLSX: 3 MB
- TXT / JSON / CSV: 1–2 MB
Considerações Finais
Os dias de escrever Regex interminável para parsear PDFs ou arriscar vazamento de dados no processamento de arquivos acabaram. Combinando reconstrução nativa de binários com extração baseada em LLM, você pode construir aplicações altamente seguras e de nível enterprise em minutos.
Pronto para experimentar? Conheça mais sobre o serviço, veja demos e a documentação completa no site oficial do NeoPII. Quando estiver pronto, pegue sua chave de API e teste gratuitamente no RapidAPI Hub. Happy coding! 🚀
Top comments (0)