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 --versionno 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..xlsxestá 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_pdfretorna um dicionário com os campos preenchidos. - Validação: O
valordeve ser umfloat(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_imagepara 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.xlsxe 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.