Skip to content

OpenCodice/fiscal-extractor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fiscal-extractor 🧾🇲🇽

Extrae el corpus fiscal mexicano (Código Fiscal de la Federación, leyes de impuestos, reglamentos, RMF, criterios…) a archivos Markdown limpios + metadata, versionables en el repo de datos fiscal-mexicano.

Mismo patrón de 3 capas que constitucion-extractor, generalizado de un documento a un registro de documentos (registro.py). La capa 3 (metadata) nunca toca la capa 1 (texto); git es el detector de cambios.

1. Extracción fiel    PDF → texto por unidad        ← fuente de verdad
2. Detección          git diff                       ← lógica principal
3. Metadata derivada  fechas, índice, reformas       ← regenerable

Arquitectura

registro.py          DOCUMENTOS[]: qué se extrae (clave, sigla, tipo, parser, url)
modelo.py            Unidad: artículo + sufijos ricos (14-A, 17-H Bis, 32-B Quáter)
parsers/articulado.py  leyes/códigos/reglamentos (port de la CPEUM, generalizado)
parsers/reglas.py    RMF — reglas jerárquicas N.N.N.N (Título→Capítulo→Sección)
parsers/criterios.py criterios del SAT — N/LEY/TIPO (Anexos 7 y 3 de la RMF)
pasajes.py           párrafos citables por unidad (id, cita, texto)
locate.py            alinea cada pasaje contra el PDF → página + rects (resaltado)
validate.py          invariantes por tipo (gate de CI): `extractor validar`
normalize.py         cuerpo crudo → párrafos, notas de reforma en cursiva
build.py             itera el registro → <clave>/NNN.md + metadata/<clave>/*.json

Uso

python3 -m venv .venv && .venv/bin/pip install -r requirements.txt

# Descargar un PDF y construir (texto + metadata)
curl -L -o CFF.pdf https://www.diputados.gob.mx/LeyesBiblio/pdf/CFF.pdf
.venv/bin/python -m extractor build --doc cff --pdf CFF.pdf --out ../fiscal-mexicano

# Descargar TODAS las fuentes del registro y reconstruir (lo que corre la CI)
.venv/bin/python -m extractor actualizar --out ../fiscal-mexicano

# Validar invariantes (gate de CI)
.venv/bin/python -m extractor validar --out ../fiscal-mexicano

# Enriquecer (capa de búsqueda LLM, mejora recall) — TODO el corpus en un comando.
# Sin --doc procesa los activos; sin --pdf descarga las fuentes del registro.
# Incremental por hash; --force regenera. Requiere OPENAI_API_KEY (o ANTHROPIC_API_KEY).
OPENAI_API_KEY=... .venv/bin/python -m extractor enriquecer \
  --out ../fiscal-mexicano --proveedor openai

# Diagnóstico de parseo (no escribe)
.venv/bin/python -m extractor stats --doc cff --pdf CFF.pdf

# Ver el corpus declarado y qué parsers están activos
.venv/bin/python -m extractor listar

# Pruebas (diseñadas para romper el parser: sufijos, mayúsculas, colisiones)
PYTHONPATH=. .venv/bin/python -m pytest tests/ -q

tests/test_corpus.py corre invariantes sobre el repo de datos ya construido (sin colisiones de clave, sin fugas de encabezado, fechas ISO) — gate de regresión barato.

Estado

Fase Alcance Estado
1 Refactor + leyes/códigos (CFF piloto) ✅ CFF: 421 unidades, art. 1–263
2 Resto de leyes + reglamentos ✅ 13 docs, ~2 510 art., suite de pruebas verde
3 RMF (parsers/reglas.py) + vigencia anual ✅ RMF 2026: 1208 reglas
4 Criterios normativos y no vinculativos ✅ 153 + 81 criterios (Anexos 7 y 3)
5 Validador de invariantes (extractor validar) ✅ 16 docs: TODO OK
5b CI de vigilancia (DOF/SAT) vigilar-fiscal.yml + extractor actualizar
6 Enriquecimiento LLM (recall) — extractor enriquecer ✅ corpus completo en un comando (autodescarga) + CI enriquecer.yml

About

Extractor del corpus fiscal mexicano (leyes, RMF, criterios del SAT) a Markdown + metadata, con citado de páginas/párrafos del PDF

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages