Skip to main content

Extractor automático de índices de notas desde PDFs financieros chilenos (NIIF)

Project description

📋 PDF Notes Extractor

Extractor automático de índices de notas desde PDFs de estados financieros chilenos (formato NIIF).

🎯 Descripción

Este proyecto automatiza la detección y extracción de índices de notas desde PDFs de estados financieros, generando un archivo Excel estructurado con la relación nota-página y métricas de confianza.

Características principales

  • Detección automática de páginas de índice usando heurísticas robustas
  • Soporte multi-backend: pdfplumber (default), PyMuPDF, PyPDF2
  • Parsing inteligente de múltiples formatos de índice
  • Mapeo automático de páginas impresas → páginas PDF
  • Exportación a Excel con métricas de confianza
  • CLI amigable con múltiples opciones de configuración
  • Arquitectura extensible y bien documentada

📦 Instalación

Requisitos

  • Python 3.8 o superior
  • pip

Instalación básica

# Clonar repositorio
git clone <repo-url>
cd Table-Detector

# Crear entorno virtual
python -m venv venv
source venv/bin/activate  # En Windows: venv\Scripts\activate

# Instalar dependencias básicas
pip install -e .

Instalación con backends alternativos

# Para PyMuPDF y PyPDF2
pip install -e ".[alternative]"

Instalación para desarrollo

# Incluye herramientas de testing y linting
pip install -e ".[dev]"

🚀 Uso

CLI Básico

# Extracción básica
notes-extractor extract input.pdf -o output.xlsx

# Con backend específico
notes-extractor extract input.pdf -o output.xlsx --backend pymupdf

# Con límite de páginas a escanear
notes-extractor extract input.pdf -o output.xlsx --scan-first 50

# Con mapeo de páginas
notes-extractor extract input.pdf -o output.xlsx --map-pages

# Modo debug
notes-extractor extract input.pdf -o output.xlsx --debug

Uso como librería

from notes_extractor.pipeline.orchestrator import NotesExtractorPipeline
from notes_extractor.config import ExtractorConfig

# Configurar
config = ExtractorConfig(
    backend="pdfplumber",
    enable_page_mapping=True,
    min_confidence=0.6
)

# Ejecutar pipeline
pipeline = NotesExtractorPipeline(config)
result = pipeline.process("input.pdf", "output.xlsx")

# Acceder a resultados
print(f"Notas encontradas: {len(result.notes)}")
for note in result.notes:
    print(f"{note.nota_id}: {note.titulo} - Pág. {note.pagina_impresa}")

📊 Formato de Salida

El archivo Excel generado contiene dos hojas:

Hoja 1: notas_paginas

nota_id titulo pagina_impresa pagina_pdf pagina_fuente confianza
1 Información general 15 17 3 0.95
2 Políticas contables 18 20 3 0.92

Hoja 2: index_pages

page_number score note_count has_header confidence
3 25.5 15 True 0.89
4 22.3 12 False 0.85

🏗️ Arquitectura

Pipeline de Procesamiento:
PDF → Validación → Extracción de Texto → Detección de Índice → 
Parsing → Normalización → Mapeo (opcional) → Exportación

Consulta Estructura.md para detalles completos de la arquitectura.

🧪 Testing

# Ejecutar todos los tests
pytest

# Con cobertura
pytest --cov=src/notes_extractor --cov-report=html

# Solo tests unitarios
pytest tests/unit/

# Solo tests de integración
pytest tests/integration/

📚 Documentación

🤝 Contribuir

Las contribuciones son bienvenidas. Por favor:

  1. Fork el proyecto
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

📝 Licencia

Este proyecto está bajo la licencia MIT. Ver LICENSE para más detalles.

🐛 Reportar Problemas

Si encuentras un bug o tienes una sugerencia, por favor abre un issue en GitHub.

📧 Contacto

Tu Nombre - tu@email.com

Project Link: https://github.com/tuusuario/Table-Detector

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

pdf_notes_extractor-1.0.0.tar.gz (43.7 kB view details)

Uploaded Source

Built Distribution

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

pdf_notes_extractor-1.0.0-py3-none-any.whl (40.6 kB view details)

Uploaded Python 3

File details

Details for the file pdf_notes_extractor-1.0.0.tar.gz.

File metadata

  • Download URL: pdf_notes_extractor-1.0.0.tar.gz
  • Upload date:
  • Size: 43.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.7

File hashes

Hashes for pdf_notes_extractor-1.0.0.tar.gz
Algorithm Hash digest
SHA256 c3820ab2cabf7be823d70b2cb3afeb07ca8b82ed1fc447b70159a445291f2cee
MD5 65c0dd6e52247c2e4988d941cf2bdfe1
BLAKE2b-256 4aea4f230ea4d2f336da8188ecbe114482000445e567385c79afc448e4294292

See more details on using hashes here.

File details

Details for the file pdf_notes_extractor-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pdf_notes_extractor-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7c2eaa4e2b1ea8757ad00b5256cdcd4e5a383d2dbc1be48528303a6f5ed77e8e
MD5 0709d5cc6c7e9d8163979ab01df9b6a1
BLAKE2b-256 c8c8ae70dae9cf9cb3937f1d48107bc404ed57ad2110453ef359f20402dfb333

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