Aller au contenu principal

Pourquoi les notes renvoient-elles au mauvais endroit après conversion en EPUB ?

Du LLM appelé sur chaque page à la sélection des pages suspectes par JEV : retour sur le traitement des notes dans les livres numérisés.

De fines lignes relient les appels d'une ancienne page aux notes de bas de page, près d'une page recomposée
Illustration conceptuelle : la conversion doit préserver le lien entre les appels du texte et les notes.

J'ai créé PDF Craft pour transformer les livres PDF numérisés en Markdown ou en EPUB réellement lisibles, interrogeables et faciles à organiser. Reconnaître les mots ne suffit pas. Un chiffre, un symbole cerclé ou un astérisque dans le texte doit encore renvoyer à la bonne note au bas de la page d'origine. Sinon, le texte s'adapte à l'écran, mais une relation essentielle à la lecture disparaît.

C'est particulièrement important pour les livres anciens, les sources universitaires ou une bibliothèque personnelle. Une conversion utile doit permettre de chercher, de copier et de lire sur un petit écran sans perdre les références. Pour examiner un résultat, consultez le guide du PDF numérisé vers EPUB et la liste de contrôle des formules et des notes.

L'OCR reconnaît les caractères, pas leur rôle

L'OCR repère le texte d'une page sans toujours comprendre sa fonction. Les petits caractères en bas peuvent être une note ou simplement la fin du corps du texte. Un numéro cerclé peut être un appel de note ou un élément de liste. Une note peut aussi être divisée en deux blocs, voire continuer sur la page suivante.

Une seule relation mal établie suffit à produire un EPUB étrange : appel sans destination, deux notes collées, numéro de page inséré dans une phrase ou fin d'une page raccordée à l'en-tête de la suivante. Les notes font depuis longtemps partie des difficultés majeures de PDF Craft.

Premier essai : faire lire chaque page au LLM

Il y a environ un an, la solution la plus simple semblait être de confier chaque page à un grand modèle de langage. Il savait souvent reconnaître une note explicative, interpréter une étoile ou un chiffre romain comme un appel et juger, grâce au contexte, si une phrase se poursuivait après un saut de page.

Le résultat était séduisant sur une page, pénible sur un gros livre. Des centaines de pages exigeaient autant d'appels, d'attentes et parfois de nouvelles tentatives. Les passages entre pages imposaient d'ajouter le texte voisin, ce qui allongeait encore l'entrée. La plupart des pages étaient déjà correctes : le modèle coûteux les relisait pour conclure qu'il n'y avait rien à changer. Il était aussi difficile de savoir si un traitement long avançait ou restait bloqué.

D'abord, une chaîne déterministe complète

Les versions suivantes ont rendu le travail principal à l'OCR et aux règles déterministes. Cette chaîne distingue le corps des notes, regroupe les paragraphes, sépare les notes individuelles et associe chaque appel à sa note. Elle est rapide, stable et reproductible, et fonctionne bien sur la plupart des pages.

Mais les mises en page varient : notes en bas ou entre colonnes, appels numériques ou symboliques, en-têtes et numéros de page mêlés au texte reconnu. Certains cas demandent de comprendre le sens d'une phrase. Les seules règles laissent quelques difficultés ; appliquer un LLM à toutes les pages reste trop lent et trop coûteux.

Le tournant : JEV vérifie au lieu de recommencer

Il ne fallait pas remplacer la chaîne existante, mais ajouter un contrôle rapide capable de désigner les pages suspectes. Je pose à JEV une seule question : L'analyse de cette page peut-elle être acceptée sans modification ? JEV ne réécrit pas le texte et n'explique pas chaque note. Il renvoie une probabilité qui sert à décider si la page poursuit son chemin ou passe au LLM.

Le contrôle porte sur la page entière. Si l'algorithme a totalement omis une note, examiner seulement les notes déjà trouvées ne permettra jamais de la découvrir. Une évaluation de la page peut encore signaler une référence manquante, une mauvaise attribution, une liaison inhabituelle entre pages ou un numéro de page dans le corps. Je préfère envoyer quelques pages supplémentaires au modèle plutôt que laisser un défaut atteindre l'EPUB : une fausse alerte coûte un contrôle ; une erreur manquée dégrade la lecture. Le seuil doit encore être étalonné sur davantage d'exemples.

flowchart TB
  accTitle: De la vérification des pages à la réparation encadrée
  accDescr: L'OCR et les règles traitent la page. JEV décide si elle peut passer sans changement. Les pages suspectes vont au LLM puis à un contrôle d'intégrité. Une réparation refusée est recommencée.
  A[OCR et règles] --> B{JEV : page fiable ?}
  B -- Oui --> F[Chapitres et sortie]
  B -- Non --> C[LLM répare cette page seule]
  C --> D{Contrôle d'intégrité}
  D -- Accepté --> F
  D -- Réessayer --> C
De la vérification des pages à la réparation encadrée

Le LLM répare dans des limites strictes

Pour une page signalée, le LLM reçoit la structure textuelle de la page précédente, de la page courante et de la suivante. Il ne peut modifier que celle du milieu. Les pages voisines éclairent les phrases qui franchissent un saut. Je n'envoie pas les images à cette étape : l'OCR conserve déjà le texte, les positions et la disposition. La tâche est une correction sémantique, pas une seconde reconnaissance.

Le modèle peut réétiqueter le corps, les notes et les numéros de page, corriger la continuité des paragraphes et rapprocher appels et notes. Il ne peut pas réécrire librement l'original ni modifier la structure des pages. Ensuite, le programme vérifie l'ordre des indices, la correspondance des références, la cohérence des liaisons entre pages et la possibilité de retrouver sans ambiguïté chaque marque dans le texte. En cas d'échec, il renvoie des erreurs précises et demande une réponse complète. Réduire les nouvelles tentatives ne justifie pas d'assouplir ces contrôles.

Ce qu'a montré un échantillon de 26 pages

Dans un PDF de test de 26 pages contenant beaucoup de notes, JEV a choisi 6 pages pour le LLM. Les six premières réponses ont passé les contrôles d'intégrité, et les 22 relations entre appels et notes déjà correctes ont été conservées.

Les corrections étaient modestes mais utiles : des numéros imprimés avaient été pris pour le corps du texte ; l'un d'eux reliait à tort deux paragraphes ; une phrase d'introduction avait été fusionnée avec la citation en retrait qui suivait. Le modèle les a séparées en s'appuyant sur le sens et le retrait.

Il s'agit d'une observation sur un seul échantillon, pas d'un taux général de précision ou d'un bilan de coût. Une bonne réparation respecte ce qui est déjà juste et ne change que les problèmes étayés.

Réserver le jugement coûteux aux cas nécessaires

Les règles réalisent la plupart des tâches certaines ; JEV repère rapidement les pages suspectes ; le LLM traite les rares cas qui exigent une compréhension du sens ; les contrôles protègent la structure finale. Les pages réparées retournent dans la même chaîne d'assemblage des chapitres et de rendu Markdown ou EPUB.

Il reste à tester d'autres langues, mises en page et livres plus longs, surtout pour mesurer les erreurs que JEV laisse passer et ajuster le seuil. Mais il n'est plus nécessaire de faire lire toutes les pages à un LLM pour trouver quelques défauts dans les marges. Pour votre propre livre, commencez par un court extrait avec notes dans l'espace PDF Craft et vérifiez les appels, le texte complet des notes et les paragraphes entre pages.

Appliquer la méthode à vos documents

Commencez par un fichier représentatif, vérifiez le résultat, puis choisissez le traitement adapté.

Ouvrir l’espace de travail