Skip to main content

Framework para parsing de relatórios financeiros de municípios portugueses (POCAL e SNC-AP)

Project description

contas-municipais

banner

Framework Python para extração e parsing de relatórios financeiros de municípios portugueses.

Suporta os dois sistemas contabilísticos usados pelas autarquias locais:

  • POCAL — Plano Oficial de Contabilidade das Autarquias Locais (até 2017)
  • SNC-AP — Sistema de Normalização Contabilística para as Administrações Públicas (desde 2018)

Instalação

pip install contas-municipais

Recomenda-se também instalar poppler para melhor extração de texto (pdftotext):

# macOS
brew install poppler

# Ubuntu/Debian
apt-get install poppler-utils

Utilização rápida

from pathlib import Path
from contas_municipais import extract_text, slice_section, parse_budget_table
from contas_municipais.sncap import REVENUE_CATEGORIES, EXPENDITURE_CATEGORIES

text = extract_text(Path("relatorio_gestao_2023.pdf"))

rev_section = slice_section(text, "quadro 1", "1.2 execução da despesa")
exp_section = slice_section(text, "1.2 execução da despesa", "2.")

receita = parse_budget_table(rev_section, REVENUE_CATEGORIES, year=2023)
despesa = parse_budget_table(exp_section, EXPENDITURE_CATEGORIES, year=2023)

for row in receita:
    print(row["label_pt"], row["executed_amount"])

Município de referência

O pacote inclui um parser validado para Lousada (NIF 505279460), com cobertura de 2012 a 2024:

from pathlib import Path
from contas_municipais.municipalities.lousada import parse

result = parse(year=2023, files={
    "relatorio_gestao": Path("relatorio_gestao_2023.pdf"),
    "prestacao_contas": Path("prestacao_contas_2023.pdf"),
})

print(result.revenue)
print(result.expenditure)

Os ficheiros necessários variam por ano. Consulte o docstring de cada módulo y20XX.py para os detalhes.


Estrutura do pacote

contas_municipais/
├── base.py                  # Utilitários de extração e parsing
├── sncap/
│   ├── __init__.py          # Documentação do formato SNC-AP
│   └── categories.py        # Mapas de categorias (receita e despesa)
├── pocal/
│   ├── __init__.py          # Documentação do formato POCAL
│   └── categories.py        # Mapas de categorias (receita e despesa)
└── municipalities/
    └── lousada/             # Parser de referência (2012–2024)

API principal

extract_text(pdf_path: Path) -> str

Extrai texto de um PDF com fallback automático entre pdftotext -layout e pdfplumber.

slice_section(text, start, end) -> str

Isola uma secção do texto entre dois marcadores (case-insensitive).

parse_budget_table(section_text, category_map, year, ...) -> list[dict]

Faz o parsing de uma tabela orçamental (receita ou despesa). Devolve uma lista de dicts com os campos year, category, label_pt, is_subcategory, budget_amount, executed_amount, execution_pct, global_pct.

Os índices de coluna são configuráveis via col_budget, col_executed, col_exec_pct, col_global_pct para acomodar diferenças entre formatos.

find_numbers(line: str) -> list[float]

Extrai números em formato português (1.234.567,89) de uma linha de texto.


Adicionar o seu município

Consulte CONTRIBUTING.md para um guia passo a passo.


Licença

MIT © Open Lousada

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

contas_municipais-0.1.0.tar.gz (146.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

contas_municipais-0.1.0-py3-none-any.whl (60.3 kB view details)

Uploaded Python 3

File details

Details for the file contas_municipais-0.1.0.tar.gz.

File metadata

  • Download URL: contas_municipais-0.1.0.tar.gz
  • Upload date:
  • Size: 146.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for contas_municipais-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1763a844e66b4d5ab4a9169c34cdcb0944c18442c359f2cc936d5b7ae44520a8
MD5 043f3457ff2a6b796562c78f44686e21
BLAKE2b-256 59277de68100bf0f6df322fc9f70b60df1e3758a4f5aed4eac5bf1c6eb9875e1

See more details on using hashes here.

File details

Details for the file contas_municipais-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for contas_municipais-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3e50e3f4a7e1438bb13fcd3235b0b73502dc6256c16f55728c4d2139a866ec72
MD5 666be813bee8d5827a326c6fb213bc46
BLAKE2b-256 076c5df2f2bed30421503b66b711a165e578cb5074c70c2267ee9591d453691c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page