PV

checklist testes

ons-2026 • 18/05/2026

Checklist de Testes e Validação - Palkia OCR

Siga este passo a passo para garantir que cada componente do script esteja funcionando corretamente antes da execução em larga escala.

1. Preparação do Ambiente

  • Instalar dependências: pip install -r requirements_ocr.txt
  • Validar instalação do Tesseract: tesseract --version no terminal.
  • Validar instalação do Poppler (necessário para pdf2image): pdftoppm -h.
  • Verificar se a pasta Oracle/ contém ao menos 2-3 PDFs de exemplo.
  • Verificar se o arquivo Base NF delegada..xlsx está fechado (o Python não consegue escrever em arquivos abertos no Excel).

2. Testes Unitários (Função por Função)

Crie um arquivo test_functions.py para validar isoladamente:

A. OCR e Extração de Texto

  • Teste: Passar um PDF conhecido e verificar se o extract_data_from_pdf retorna um dicionário com os campos preenchidos.
  • Validação: O valor deve ser um float (ex: 350.0) e não uma string.
  • Ajuste: Se o “Nome Fantasia” vier vazio, ajustar a Regex no main_script.py.

B. Pré-processamento de Imagem

  • Teste: Salvar a imagem após o preprocess_image para ver se o texto está nítido (preto no branco).
  • Dica: Use cv2.imwrite('debug_processamento.png', thresh) dentro da função temporariamente.

C. Lógica de Match no Excel

  • Teste: Criar uma lista de “dados_fake” e rodar apenas o update_excel.
  • Validação: Verificar se a linha correta foi pintada de vermelho.
  • Validação: Confirmar se o “OK” apareceu na coluna Q.

3. Teste de Integração (Fluxo Completo)

  • Rodar python main_script.py.
  • Verificar logs no terminal (“Match encontrado na linha X”).
  • Abrir Base NF delegada_ATUALIZADA.xlsx e validar visualmente.

4. Scripts de Teste Sugeridos

Abaixo, um exemplo de script de teste para você começar:

# test_functions.py
import unittest
from main_script import extract_data_from_pdf, preprocess_image

class TestOCR(unittest.TestCase):
    def test_pdf_extraction(self):
        # Teste com um arquivo real da sua pasta
        path = 'Oracle/NF 01_Instituto AB.pdf' 
        res = extract_data_from_pdf(path)
        self.assertIsNotNone(res)
        self.assertIn('valor', res)
        print(f"Resultado extraído: {res}")

if __name__ == '__main__':
    unittest.main()

5. Troubleshooting (O que pode dar errado)

  • OCR falhando: Aumentar o DPI na conversão: convert_from_path(pdf_path, dpi=300).
  • Match não acontece: Verifique se o valor no Excel tem casas decimais ocultas ou se a descrição no lançamento está muito diferente do nome extraído.
  • Erro de permissão: Feche o arquivo Excel antes de rodar o script.