Skip to main content

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

Metadata

Release files for contas-municipais 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for contas-municipais 0.1.0
File Size Uploaded Provenance
contas_municipais-0.1.0.tar.gz 146.9 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for contas-municipais 0.1.0
File Interpreter ABI Platform
contas_municipais-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 207.2 kB

Release files / contas_municipais-0.1.0.tar.gz

Download URL contas_municipais-0.1.0.tar.gz
Size 146.9 kB
Tags Source
SHA-256 checksum
How to use checksums
1763a844e66b4d5ab4a9169c34cdcb0944c18442c359f2cc936d5b7ae44520a8
BLAKE2b-256 checksum
How to use checksums
59277de68100bf0f6df322fc9f70b60df1e3758a4f5aed4eac5bf1c6eb9875e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / contas_municipais-0.1.0-py3-none-any.whl

Download URL contas_municipais-0.1.0-py3-none-any.whl
Size 60.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3e50e3f4a7e1438bb13fcd3235b0b73502dc6256c16f55728c4d2139a866ec72
BLAKE2b-256 checksum
How to use checksums
076c5df2f2bed30421503b66b711a165e578cb5074c70c2267ee9591d453691c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Security for contas-municipais 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page