Validador de Canhotos

Como o validador chega nas conclusões

Não é IA/rede neural — é visão computacional clássica (OpenCV): o programa compara o documento contra 2 fotos-modelo de referência e mede, pixel a pixel, o que é diferente.

1

Entrada

Recebe a foto (JPG/PNG) ou renderiza o PDF a 150dpi.

PyMuPDFOpenCV
2

Casamento com as fotos-modelo

Acha ~6000 pontos característicos (SIFT) e casa com os das 2 variantes de layout. O que casar mais é o escolhido; se casar pouco, rejeita como "não é um canhoto".

SIFTFLANN
Layout A
Layout B
3

Alinhamento geométrico

Estima rotação + perspectiva + escala que sobrepõe a foto ao modelo, com correção local por região (papel curvado não é plano).

RANSACHomografia
4

Extração da "tinta extra"

Binariza o documento e subtrai a tinta já impressa no modelo limpo. Sobra só caneta, carimbo ou marcação.

Adaptive threshold
5

Checagens

Campo de devolução vazio, data preenchida sem rasura, carimbo e assinatura presentes, nitidez. Aprova só se tudo passar. Lê ainda o nº da NF-e (OCR confiável, impresso).

Tesseract OCR
Limitações honestas: limites numéricos calibrados nos 16 exemplos de teste. Corretivo tem sinal fraco em baixa resolução. Layout novo precisa de foto-modelo nova.