Import campagne : la table des matieres du PDF guide la structuration
Les bookmarks PDF (doc.get_toc, gratuits) sont injectes dans chaque prompt MAP comme referentiel commun de nommage : les morceaux traites separement nomment desormais les memes chapitres a l identique, et la fusion par nom du _TreeMerger recolle les chapitres coupes au lieu de creer des doublons. Bornee (2 niveaux, 80 entrees) pour ne pas gonfler le prompt ; absente sur les scans -> inchange. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -320,11 +320,26 @@ class ExtractedPage:
|
||||
used_ocr: bool
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class TocEntry:
|
||||
"""Une entrée de la table des matières (bookmarks/outline) du PDF.
|
||||
|
||||
`level` : profondeur 1-based (1 = chapitre, 2 = section…). `page` : 1-based.
|
||||
"""
|
||||
|
||||
level: int
|
||||
title: str
|
||||
page: int
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class ExtractedDocument:
|
||||
"""Résultat brut de l'extraction d'un PDF : une entrée par page."""
|
||||
|
||||
pages: list[ExtractedPage]
|
||||
# Table des matières (bookmarks PDF). Vide si le PDF n'en a pas — fréquent
|
||||
# pour les scans ; les livres born-digital en ont presque toujours une.
|
||||
toc: list[TocEntry] = field(default_factory=list)
|
||||
|
||||
@property
|
||||
def page_count(self) -> int:
|
||||
|
||||
Reference in New Issue
Block a user