Descrição do Projeto:
**Descrição do trabalho:**
Olá! Estou procurando um freelancer experiente em Python para desenvolver um script que extraia dados de PDFs da AIP (Publicação de Informações Aeronáuticas) do Brasil, com foco nas seções ENR 2.1 (FIR, UIR, TMA e CTA), ENR 2.2 (Outros Espaços Aéreos Regulados) e ENR 4.1 (Auxílios-Rádio à Navegação - Em Rota). O script deve extrair os dados dos espaços aéreos de forma estruturada, incluindo limites laterais, verticais, classificações, frequências, coordenadas e observações (RMK), conforme exemplos nas imagens e trechos fornecidos. Os PDFs são oficiais do DECEA e incluem tabelas, textos bilíngues e coordenadas geográficas que precisam ser parseados com precisão absoluta.
O script deve ser executado via terminal (ex.: `python extract_aip.py`), sem interface gráfica, mas com um menu interativo de opções no terminal para guiar o usuário (em vez de argumentos de linha de comando). Ele deve lidar com PDFs de texto selecionável. Inclua também uma funcionalidade para comparar extrações de diferentes versões (emendas) dos PDFs, destacando alterações em dados de espaços aéreos.
**Requisitos principais:**
- **Extração de dados:**
- Para ENR 4.1: Extrair tabelas com colunas como Nome da Estação (VAR), ID, Frequência (CH), Horário Operacional, Coordenadas, Elevação da Antena DME e Cobertura/RMK. Salve os dados em estruturas como dicionários ou listas Python, exportando para JSON ou CSV.
- Para ENR 2.1: Extrair informações sobre espaços aéreos como Nome, Limites Laterais (coordenadas), Limites Verticais, Classificação do Espaço Aéreo, Órgão que Providencia o Serviço, Indicativo de Chamada, Idiomas, Área e Condições de Uso, Horário de Serviço, Frequência e Propósito, e RMK.
- Para ENR 2.2: Extrair textos e tabelas sobre espaços regulados como RVSM, incluindo definições, procedimentos, níveis de voo, regras operacionais e separações mínimas.
- Foque na extração precisa de dados de espaços aéreos, como coordenadas geográficas (ex.: 101710S 0474118W), limites (UNL/GND), classes (A, G) e observações específicas (ex.: restrições em setores ou condições de uso). Use bibliotecas como PyMuPDF (fitz), pdfplumber ou tabula-py para extração. Para elementos rasterizados, integre OCR com Tesseract ou uma LLM via OpenRouter (ex.: modelos como GPT-4 ou Claude para refinar, mas só como fallback para garantir acurácia). Trate textos bilíngues (português/inglês) preservando o formato exato.
- **Logs:** Implemente logging detalhado com a biblioteca logging do Python. Registre passos como "Iniciando extração do PDF X", "Página Y processada", "Erro ao parsear tabela Z" e métricas de precisão. Salve logs em arquivo (ex.: extraction.log) com níveis (INFO, DEBUG, ERROR).
- **Comparação entre versões:** Inclua uma opção no menu para comparar dois arquivos JSON/CSVs de extrações diferentes (ex.: de emendas A 18/2025 vs. A 20/2025). Use bibliotecas como deepdiff ou pandas para destacar diferenças: adições, remoções, alterações (ex.: "Coordenada alterada de X para Y" ou "Novo espaço aéreo adicionado"). Gere um relatório em texto ou Markdown.
- **Execução via terminal com menu interativo:**
- Ao rodar `python extract_aip.py`, exiba um menu simples no terminal (usando bibliotecas como inquirer ou input simples) com opções como:
1. Extrair dados de um PDF (pergunte a seção: enr21, enr22, enr41; caminho do PDF; saída JSON/CSV; ativar OCR?).
2. Comparar duas extrações (pergunte caminhos dos arquivos old.json e new.json; saída do relatório).
3. Ativar logs verbose.
4. Sair.
- O menu deve ser intuitivo, guiando o usuário passo a passo, sem necessidade de argumentos na linha de comando.
- O script deve ser modular, com funções separadas para extração por seção, validação, comparação e menu.
- **Precisão e validação:**
- Inclua validações automáticas: verifique formatos de coordenadas (graus/minutos/segundos com N/S/E/W), frequências numéricas válidas, limites verticais consistentes, etc.
- Teste com os PDFs fornecidos (ENR 4.1.pdf, ENR 2.2.pdf, ENR 2.1.pdf) e garanta que os dados extraídos sejam 100% fiéis, especialmente para dados de espaços aéreos como setores da FIR Amazônica ou regras RVSM. Se usar LLM (via OpenRouter API), configure prompts para "extrair tabela exatamente como no PDF, sem interpretações".
**Entregáveis:**
- Código fonte completo (script.py + módulos auxiliares).
- Documentação: README.md com instruções de instalação, uso e exemplos de execução do menu.
- Testes: Pelo menos 3 PDFs de teste (usar os anexados) e saídas de amostra (JSON/CSV).
- Relatório de comparação de exemplo entre duas versões.
Link dos dados:
https://aisweb.decea.mil.br/eaip/A%2020-2025_2025_10_02/index.html
https://aisweb.decea.mil.br/eaip/A%2020-2025_2025_10_02/documents/PDF/ENR%204.1.pdf#ENR-4.1
https://aisweb.decea.mil.br/eaip/A%2020-2025_2025_10_02/documents/PDF/ENR%202.2.pdf#ENR-2.2
https://aisweb.decea.mil.br/eaip/A%2020-2025_2025_10_02/documents/PDF/ENR%202.1.pdf#ENR-2.1