davide 02c785678d feat(chunks): target-based chunking con config centralizzata
Introduce chunks/config.py come unica fonte di verità per tutti i
parametri della pipeline di chunking. TARGET_CHARS + CHUNK_TOLERANCE
sostituiscono MIN_CHARS/MAX_CHARS: il chunker mira a una dimensione
target e si avvicina il più possibile rispettando il vincolo assoluto
di terminare ogni chunk su un confine di frase (punto/punteggiatura).

- config.py: TARGET_CHARS, CHUNK_TOLERANCE, SPLIT_THRESHOLD_FACTOR,
  PROTECT_TABLES, FIX_MAX_ITERATIONS, STRATEGY_OVERRIDES per strategia
- chunker.py: algoritmo target-based (emit quando frase successiva
  sfora upper_body = upper - prefix_len), table protection atomica,
  override MIN/MAX/overlap per ciascuna delle 4 strategie
- verify_chunks.py: soglie derivate da target*(1±tolerance)
- fix_chunks.py: _split_at_boundary sempre su punteggiatura finale,
  loop ricorsivo fix→verify fino a FIX_MAX_ITERATIONS, split solo
  per chunk > upper × SPLIT_THRESHOLD_FACTOR

Risultato su bitcoin: 694 chunk, 0 incompleti, 83% in range [450,750],
tutti terminanti su punteggiatura indipendentemente dalla dimensione.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 15:45:24 +02:00

PDF → Markdown

Converte PDF digitali in Markdown strutturato e pulito.

Stack: Python · opendataloader-pdf (XY-Cut++) · Java 11+
Compatibile con: Linux · macOS · Windows (WSL2)


Setup

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Java 11+ richiesto:

sudo apt install default-jdk   # Ubuntu/Debian/WSL
java -version

Utilizzo

# Singolo PDF
python conversione/pipeline.py --stem <nome>

# Tutti i PDF in sources/
python conversione/pipeline.py

# Forza riesecuzione
python conversione/pipeline.py --stem <nome> --force

--stem = nome file PDF senza estensione.
Esempio: sources/analisi1.pdf--stem analisi1


Output

Per ogni stem in conversione/<stem>/:

File Descrizione
raw.md Markdown grezzo — non modificare
clean.md Markdown pulito — copia di lavoro
structure_profile.json Struttura rilevata e metriche
report.json Statistiche complete della conversione

Validazione batch

python conversione/validate.py

Stampa una tabella di stato su tutti gli stem convertiti.


Vedi conversione/README.md per dettagli sulla pipeline e i tipi di documento supportati.

S
Description
Sistema RAG costruito da zero su qualsiasi PDF digitale. Ogni fase della pipeline - estrazione, chunking adattivo, vettorizzazione, retrieval e generazione - è uno step separato e verificabile. Gira interamente in locale su CPU, senza GPU e senza cloud. Stack: Python - Ollama - ChromaDB.
Readme 789 KiB
Languages
Python 99.6%
Shell 0.4%