Python · SDK + algoritmo
Gerador de Placa Mercosul em Python
Pra gerar placa Mercosul válida em Python (formato LLLNLNN da Resolução CONTRAN 729/2018), instale pip install fakeforge-br e chame FakeForge().placa(n). As letras nunca incluem I, O ou Q, seguindo a regra visual do DENATRAN. Sem SDK, um regex mais random.choice replica a lógica offline.
TL;DR
pip install fakeforge-br
from fakeforge import FakeForge
placas = FakeForge().placa(100) # 100 placas Mercosul válidasRota 1: SDK oficial fakeforge-br
from fakeforge import FakeForge
ff = FakeForge()
# 100 placas Mercosul (LLLNLNN)
placas = ff.placa(100)
print(placas[0]) # "ABC1D23"
# 50 placas no formato antigo (LLL-NNNN)
placas_antigas = ff.placa_antiga(50)
print(placas_antigas[0]) # "ABC-1234"Vantagens: os dois formatos numa chamada, bulk até 10k, letras já filtradas conforme regra DENATRAN. Requer internet.
Rota 2: algoritmo local (offline)
# gerador_placa.py - implementação pura, offline
import random
import re
LETRAS_VALIDAS = list("ABCDEFGHJKLMNPRSTUVWXYZ") # sem I, O, Q
REGEX_MERCOSUL = re.compile(r"^[A-HJ-NP-Z]{3}[0-9][A-HJ-NP-Z][0-9]{2}$")
REGEX_ANTIGA = re.compile(r"^[A-HJ-NP-Z]{3}[0-9]{4}$")
def gerar_placa_mercosul() -> str:
"""Gera placa Mercosul (LLLNLNN) conforme Resolução CONTRAN 729/2018."""
letras = "".join(random.choices(LETRAS_VALIDAS, k=3))
d1 = random.randint(0, 9)
letra_meio = random.choice(LETRAS_VALIDAS)
d2 = random.randint(0, 9)
d3 = random.randint(0, 9)
return f"{letras}{d1}{letra_meio}{d2}{d3}"
def gerar_placa_antiga() -> str:
"""Gera placa no formato legado (LLL-NNNN)."""
letras = "".join(random.choices(LETRAS_VALIDAS, k=3))
numeros = "".join(str(random.randint(0, 9)) for _ in range(4))
return f"{letras}-{numeros}"
def validar_placa(placa: str) -> str | None:
"""Retorna 'mercosul', 'antiga' ou None se inválida."""
limpa = placa.replace("-", "")
if REGEX_MERCOSUL.match(limpa):
return "mercosul"
if REGEX_ANTIGA.match(limpa):
return "antiga"
return NoneVantagens: zero deps, offline, valida os dois formatos numa função só. Limitação: sem correlação com marca/modelo do veículo.
Uso em testes de ALPR (leitura de placa)
Sistemas de ALPR (Automatic License Plate Recognition) precisam aceitar os dois formatos. Um teste comum: gerar lote de placas e confirmar que o parser reconhece todas.
# tests/test_alpr_parser.py
import pytest
from fakeforge import FakeForge
from myapp.alpr import parse_placa_ocr
@pytest.fixture(scope="session")
def ff():
return FakeForge()
@pytest.fixture
def placas_mercosul(ff):
return ff.placa(50)
@pytest.fixture
def placas_antigas(ff):
return ff.placa_antiga(50)
def test_alpr_parser_aceita_mercosul(placas_mercosul):
for placa in placas_mercosul:
resultado = parse_placa_ocr(placa)
assert resultado is not None, f"ALPR falhou pra placa Mercosul: {placa}"
def test_alpr_parser_aceita_antiga(placas_antigas):
for placa in placas_antigas:
resultado = parse_placa_ocr(placa)
assert resultado is not None, f"ALPR falhou pra placa antiga: {placa}"
def test_alpr_parser_rejeita_letra_invalida():
placa_invalida = "ABI1234" # I não é letra válida
assert parse_placa_ocr(placa_invalida) is NoneComparação: qual escolher
| Cenário | SDK fakeforge-br | Algoritmo local |
|---|---|---|
| Só placa simples | ✅ | ✅ |
| Mercosul + antiga na mesma chamada | ✅ | ⚠️ 2 funções separadas |
| Validador embutido (retorna tipo) | ✅ | ✅ |
| 100% offline | ❌ | ✅ |
| Bulk 10k+ | ✅ 1 chamada | ⚠️ loop |
| Custo | Free 50/dia | R$0 |
Perguntas frequentes
Como gerar placa Mercosul válida em Python?+
Instale pip install fakeforge-br e chame FakeForge().placa(n). Cada placa segue o formato LLLNLNN da Resolução CONTRAN 729/2018. Pra formato antigo (LLL-NNNN), use .placa_antiga(n).
As letras I, O e Q aparecem na placa gerada?+
Não. O DENATRAN exclui essas três letras por confusão visual com os dígitos 1 e 0. O SDK e o algoritmo local usam só as 23 letras válidas (A-Z exceto I, O, Q).
Dá pra gerar as duas placas (Mercosul e antiga) na mesma chamada?+
Não na mesma chamada, mas são dois métodos separados no SDK: .placa(n) pra Mercosul e .placa_antiga(n) pra formato legado.
Serve pra testar sistema de OCR ou ALPR?+
Sim. É um dos usos mais comuns: gerar um lote de placas válidas nos dois formatos e confirmar que o parser de OCR/ALPR reconhece todas, incluindo o meio-letra do Mercosul.