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

Diego Jiménez - wip@example.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.1.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.1-py3-none-any.whl (40.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pdf_notes_extractor-1.0.1.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.1.tar.gz
Algorithm Hash digest
SHA256 62a23e0de0f190c1ef25ad7a0243694d799b470d137708e3b1b4dd3d3f89c68c
MD5 9ed7d39a6e4f689b63fd00026b43ee7a
BLAKE2b-256 b2c0bcc04eb6df47418401952d5a417af93538491fd7bfa9c6f382a66bf436c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pdf_notes_extractor-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1aa0173958011ce26e5dec7d12f8b405e4401fdbe8312edf3492af84e7831e88
MD5 62837c0a9ca931327f27d49f45c520b8
BLAKE2b-256 4467bfa7d8f3ee7705ab0f55aca37e9ce61e14ede941de90189d17c9f21898f4

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