Journal De l'ancien monde ... Génération d'index pour publications scientifiques/littéraire

6
18
oct.
2025

Bonjour à toute la communauté!

<mavie>
Je suis un informaticien, compagnon d'une universitaire qui est en train de publier avec des collègues une somme sur un auteur ancien.
</mavie>

Je voudrais l'aider à générer les références de l'index de l'ouvrage. Ça représente un certain volume de texte (on parle de 6 volumes d'environ 1000 pages chacun), et l'index contient environ 3400 entrées …

Bien entendu, ce sont des littéraires, la mise en page finale est en cours et je n'ai que les pdf des tirages finaux pour composer les liens (oui ça aurait été bien plus facile avec du latex et les balises \index mais la moyenne d'âge des co-éditeurs frise les 65 ans).

Je me dis que ce problème à du être rencontré un peu partout dans le monde universitaire et peut être que je suis passé à côté d'un projet Européen ou autre qui pourrait nous aider à faire ça "plus facilement".

J'ai commencé quelque chose de mon côté, avec l'aide des IAs (je me dis que c'est un bon projet perso pour confirmer ce que je pense (ou pas) du code construit par les IA (ça fera l'objet d'un autre journal si j'aboutis à quelque chose)).

Le principe serait de permettre la description de l'index via une interface web (plus simple pour des néophytes ?), puis la génération du document d'index final.

Je pensais que ça serait simple, mais en fait c'est bien plus complexe que ce qu'il n'y parait. Par exemple comment trouver les noms des gens présents dans l'index, lorsque deux noms de famille identiques sont présents, comment gérer les références dans l'index (les "see also"), comment gérer les titres sur de la concordance (matching) multi-ligne, etc … Sans compter le côté humain de l'index actuel (comprendre avec des erreurs, le formatage est un peu aléatoire, etc …)

Bref c'est une tâche bien plus importante que mon idée de départ, alors je fais appel à ceux qui savent / ont déjà fait ça : comment avez-vous fait ?

(la réponse "c'est l'éditeur qui a pris ça en charge me va", mais dans leur cas, c'est niet, les universités de Princenton leurs ont dit débrouillez-vous).

Merci d'avance pour vos idées !

Caeies

  • # Lapin compris

    Posté par  (site web personnel) . Évalué à 10 (+9/-0).

    Excusez-moi, je n'arrive pas bien à comprendre de quelles données vous partez, et à quoi vous souhaité arrivé. Du coup, le reste des questions me restent hermétiques. Pouvez-vous réexpliquer ?

    « (oui ça aurait été bien plus facile avec du latex et les balises \index mais la moyenne d'âge des co-éditeurs frise les 65 ans). »

    Euh, les gens de 65⁺ ans qui se préoccupent un tant soit peu des formats de données utilisent LaTeX (quand c'est approprié) et le recommandent à leurs étudiants, aux proches, voire à la volée sur les réseaux sociaux :-).
    D'ailleurs d'autres logiciels permettent une gestion propre de la bibliographie. À une époque j'ai même su le faire avec un ancêtre de Libreoffice, et actuellement les foules semblent plébisciter Zotero.

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

    • [^] # Re: Lapin compris

      Posté par  (site web personnel, Mastodon) . Évalué à 6 (+4/-0).

      J’ai aussi pensé à Zotero quand j’ai lu interface et tout ça (bien sûr qu’il y a des gestionnaires graphiques BibL mais il est explicité qu’on est loin de cet univers. il y aussi pléthore d’autres programmes mais privateurs et avec des formats bien cadenassés.)
      La question de savoir d’où on part est pertinente, parce-que je n’ai pas compris pourquoi vouloir faire la gestion des biographies quand on indique que l’ouvrage est terminé et dans les tuyaux (mais qu’on n’a pas eu accès aux PDF finaux), en tout cas de ce que j’ai compris.

      “It is seldom that liberty of any kind is lost all at once.” ― David Hume

      • [^] # Re: Lapin compris

        Posté par  . Évalué à 3 (+2/-0).

        Merci à tous les deux,

        Je parle bien d'un index et non d'une bibliographie. De nos jours c'est quasi obsolète car il suffit d'utiliser un moteur de recherche sur le pdf (ou le ctrl-f) pour trouver un mot.

        Pour être plus clair, il s'agit d'une liste de mots classée par ordre alphabétique (nom propres, citations, titres, concepts, …) avec indiqué ensuite une liste de v:p, v étant le volume, p la page, dans lesquels l'entrée apparait.

        D'où la référence a l'ancien monde, Car maintenant les versions électroniques n'ont plus vraiment besoin de ce genre de chose. Mais autrefois, c'était un outil indispensable (et laborieux) pour les chercheurs qui voulaient aller vite sans lire la totalité d'un ouvrage.

        J'espère que c'est plus clair !

        Caeies

        • [^] # Re: Lapin compris

          Posté par  (site web personnel, Mastodon) . Évalué à 3 (+1/-0).

          Si, si, les nouveaux documents en ont aussi besoin et, en latexiste, j’en utilise encore : dans les PDF générés ça fonctionne en hyperlien, et surtout c’est mieux qu’une recherche pour mettre en contexte (je l’utilise par exemple quand le terme est défini pour la première fois et quelques exemples clés, pas pour bêtement lister toutes les occurrences). Mais hélas, dans ce cas, c’est fait pendant la rédaction et non après ; et je crois avoir vu que LibreOffice a ce genre de fonctionnalité aussi.

          Ce que tu cherches, l’indexation après coup, me fait penser aux moteurs d’indexation de documents (donc sorte de base de données sur les pages existantes, un peu comme le font les moteurs de recherche sur les pages web) :s

          “It is seldom that liberty of any kind is lost all at once.” ― David Hume

          • [^] # Re: Lapin compris

            Posté par  (site web personnel, Mastodon) . Évalué à 7 (+4/-0). Dernière modification le 19 octobre 2025 à 17:05.

            Avec LibreOffice tu peux indexer au fil de l'eau ou utiliser un fichier de concordance pour indexer en bloc avec le fichier de concordance fait à part. J'avais écrit un tutoriel là-dessus en 2018.

            Je n’ai aucun avis sur systemd

            • [^] # Re: Lapin compris

              Posté par  (site web personnel, Mastodon) . Évalué à 3 (+1/-0).

              Ah oui, je me souviens maintenant d’avoir lu cette page et m’être fait la remarque que le principe1 utilisé par le fichier de concordance est le même que sous LaTeX (:

              J’avais oublié cet aspect (pouvoir générer manuellement le fichier intermédiaire), qui est peut être une piste si l’auteur du journal a accès aux sources ayant servi au PDF…


              1. J’entends par là les règles de conception, et les différents champs/niveaux ; mais le format du fichier texte est différent (CSV d’un côté, balisage de l’autre côté) (:  

              “It is seldom that liberty of any kind is lost all at once.” ― David Hume

              • [^] # Re: Lapin compris

                Posté par  (site web personnel, Mastodon) . Évalué à 5 (+2/-0). Dernière modification le 20 octobre 2025 à 16:37.

                Ben en fait ça balise le texte.

                En tout cas, je viens de refaire la procédure d'indexation d'un document avec un fichier de concordance, ce tutoriel est toujours valable.

                Je n’ai aucun avis sur systemd

            • [^] # Re: Lapin compris

              Posté par  . Évalué à 3 (+2/-0).

              Merci Ysabeau pour le lien vers le tutoriel, j'ai appris des choses.

              Malheureusement ce sont des pdfs d'éditeurs, donc il n'y a pas de sources qui permettent une concordance exacte vers les PDFs :/

              Mais je note pour d'autres choses "plus light" ça pourrait être drôlement pratique.

              Je me rends compte aussi que mon problème doit être a minima découpé en 3 :
              - l'extraction du fichier d'index (docx vers une DB quelconque) (c'est vraiment pas trivial)
              - La recherche / indexation (au sens DB) des fichiers pdfs (au format text heureusement) (pas trivial non plus)
              - La génération de l'index final (avec des pdf crossrefs ?), c'est ce que je considère comme la partie la plus simple …

              Caeies

              • [^] # Re: Lapin compris

                Posté par  (site web personnel, Mastodon) . Évalué à 4 (+1/-0).

                Oui l'indexation avec un fichier de concordance externe est très pratique, déjà ça oblige à se poser la question de ce que l'on veut avoir dans l'index, ensuite c'est réutilisable. MsWord a une procédure similaire si je me souviens bien.

                Par contre pour ton projet, ce n'est, évidemment, pas une réponse. Sauf qu'en fait tu dois faire le même boulot : indexer un (enfin des) document d'un seul bloc avec un fichier de concordance, mais pas de la même façon. J'espère que tu vas y arriver.

                Je n’ai aucun avis sur systemd

        • [^] # Re: Lapin compris

          Posté par  (site web personnel) . Évalué à 2 (+0/-0).

          Il y a sûrement des solutions toutes faites. Mais si on souhaites bricoler, un dictionnaire Python serait certainement approprié : lire chaque page, entrer chaque mot trouvé dans le dictionnaire s'il n'y ait pas, insérer le numéro de page. Et voilà :-) ! Ajouter un peu de filtrage pour éviter les entrées inappropriées (conjonctions, détérminants…). Ensuite, un petit coup de LaTeX, ou de votre logiciel de mise en page préféré pour générer une mise en page propre (ça, c'est sûrement la partie compliquée qui demandera la plus de soin).

          « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

          • [^] # Re: Lapin compris

            Posté par  . Évalué à 2 (+1/-0).

            Le problème principal que tu vas rencontrer avec cette solution c'est la gestion des noms propres pour celle qui est la plus évidente:

            Soit une entrée:

            Nyme, Ano.

            Comment construire les variations pour que tu coïncides avec le texte ?

            Mais oui je suis parti sur du python et pymupdf (déjà cité ailleurs).

  • # Plus de précision

    Posté par  (site web personnel) . Évalué à 7 (+5/-0).

    Est-ce que l'index doit être à la fin de chaque volume, ou alors il est possible d'avoir un index dans un volume indépendant ?

    ~3400 entrées, donc ça signifie que ces entrées ont déjà été identifiées ? Si je comprends bien ton problème, franchement ton exposition n'est pas claire du tout, c'est que tu as les entrées, mais pas les pages qui devraient être associées à ces entrées ?

    (je me dis que c'est un bon projet perso pour confirmer ce que je pense (ou pas) du code construit par les IA

    On est dans de la pensée quantique vis-à-vis de l'IA ;)

    Sinon, pour revenir à la construction d'un index, de mon expérience, soit les gens font ça un peu à l'arrache à la fin, soit l'index a été prévu depuis le début et ça ne pose pas vraiment de problème.

    Pour les noms de famille aux formes identique mais correspondant à des personnes différentes, ben il faut déjà ajouter des informations supplémentaires (dates, prénoms, etc.) dans leurs entrées d'index respectives. C'est d'ailleurs un peu le même problème lorsqu'un mot est utilisé plusieurs fois avec des sens différents. Et pour gérer les homographes, malheureusement, mis à part consulter manuellement les pages pour distinguer le sens, je ne vois pas ce qui est possible de faire.

    • [^] # Re: Plus de précision

      Posté par  . Évalué à 1 (+0/-0).

      Merci pour ton retour,

      Est-ce que l'index doit être à la fin de chaque volume, ou alors il est possible d'avoir un index dans un volume indépendant ?

      C'est bien un index global dont on parle. Les références sont du genre v:p avec v le volume et p la page (j'ai que le premier volume pour l'instant mais je soupçonne que les pages seront intervolumes)

      ~3400 entrées, donc ça signifie que ces entrées ont déjà été identifiées ? Si je comprends bien ton problème, franchement ton exposition n'est pas claire du tout, c'est que tu as les entrées, mais pas les pages qui devraient être associées à ces entrées ?

      Désolé pour le manque de clarté, mais oui c'est bien ça. J'ai déjà donné un coup de main avec python et nltk pour générer cette liste en partie … sans me douter de la suite.

      Et oui c'est un peu à l'arrache, car comme c'est un recueil de textes, je soupçonne qu'ils ont été tapé par des petites mains, donc l'ajout de références en-ligne auraient été plus complexe …

      D'une manière générale, pour l'instant l'outil stocke dans une db les liens, avec un contexte de 3 lignes pour décider si on garde ou jette l'entrée … il faudra donc revoir chaque lien a la main …

      • [^] # Re: Plus de précision

        Posté par  . Évalué à 6 (+4/-0). Dernière modification le 19 octobre 2025 à 11:37.

        Les références sont du genre v:p avec v le volume et p la page (j'ai que le premier volume pour l'instant mais je soupçonne que les pages seront intervolumes)
        […]
        J'ai déjà donné un coup de main avec python et nltk pour générer cette liste en partie

        Si j'ai bien compris, tu as déjà généré la liste des mots, mais tu as besoin de lui attribuer les ref. v:p, sans parler du travail de tri ensuite ?

        Dans PyMuPDF tu as le module fitz qui te permet d'importer chaque volume comme un objet "Document" qui est indexé par page.

        Ensuite, tu enumerate chaque objet pour y chercher chaque entrée de ta db, ça te donnera le numéro de page pour le volume traité pour chaque mot trouvé.

        https://coderivers.org/blog/python-fitz/ te montre clairement comment procéder.
        En gros :

        doc = fitz.open(volume)
        for num_pg, page in enumerate(doc, start=1):
            text = page.get_text()
            for word in db:
                # chercher word dans text
        
  • # index

    Posté par  (site web personnel, Mastodon) . Évalué à 3 (+3/-0).

    Hello,

    Sympa le "side project" :-)

    Pour voir plus clair, je me suis renseigné comment on construit un index.

    Ton but est d'offrir un système d'information collaboratif qui permette à des universitaires seniors de constituer un index de ~3600 entrées pour leur œuvre de 6 volumes, correct?

    ça éveille beaucoup ma curiosité: quelles méthodes ont été développées jusque là pour construire un index? Est-ce qu'il y a déjà des outils numériques pour le faire? Cela dépend beaucoup je crois du champ du savoir pour lequel l'index est construit.

    Aucune idée à apporter, mais un gros intérêt sur l'histoire des pratiques scientifiques et de publication.

    • [^] # Re: index

      Posté par  . Évalué à 1 (+0/-0).

      Salut Leyouki,

      Ton but est d'offrir un système d'information collaboratif qui permette à des universitaires seniors de constituer un index de ~3600 entrées pour leur œuvre de 6 volumes, correct?

      Tu as très bien résumé cette partie oui :).

      Pour la construction de l'index, je peux juste dire ce qui me concerne: python et nltk pour extraire les mots "qui sortent de l'ordinaire" avec un contexte pour faire une pré sélection, validée ensuite par les co-éditeurs.

      Pour le reste oui ça a piqué ma curiosité aussi.

      Caeies.

  • # Heurist ?

    Posté par  (site web personnel) . Évalué à 5 (+5/-0).

    Je connais l'outil Heurist qui semble avoir pas mal servi de nombreux projets d'indexation bibliographique tel que DRANT.

    Ça te fournit une interface collaborative où tu peux créer des objets et faire des relations pour monter un index consultable. Mais ça ne te permettra pas d'en faire un PDF directement cependant on peut exporter la base dans plusieurs formats ensuite (JSON, CSV, XML, etc..) que tu peux traiter pour produire un PDF ou autre type de document.

    • [^] # Re: Heurist ?

      Posté par  . Évalué à 2 (+1/-0).

      Bonjour David,

      Merci pour le partage. C'est effectivement intéressant, il va falloir que je creuse cette approche. Considérer les volumes / pages comme des adresses pourrait peut être dire des choses.

      L'extraction des données pour générer l'index ne me fait pas trop peur (j'ai déjà quelque chose)

      C'est vraiment l'aspect validation qui me pose des soucis et je ne suis pas sûr que cet outil permette cela (mais encore une fois il faut que je creuse le sujet).

      Je me rends compte aussi qu'il va falloir que je fasse un journal complémentaire pour indiquer l'état de mes "recherches"/"développements". Je ne voulais pas trop en dire dans ce journal pour ne pas orienter les réponses, mais en même temps je me dis que ça permettrait de mieux cibler les réponses :).

      En tout cas, Merci à tous pour vos idées, ça m'a donné de nouvelles pistes.

      Bonne journée !

  • # Quelques liens

    Posté par  . Évalué à 1 (+1/-0).

    • [^] # Re: Quelques liens

      Posté par  . Évalué à 1 (+0/-0).

      Merci,

      La dernière est en erreur 500 pour l'instant, j'attendrais que ça marche mieux pour regarder.

      Pour les deux autres, ça ressemble à de l'indexation de documents et ça me semble un peu surdimensionner pour notre besoin, mais je garde ça en tête.

      Néanmoins ça pourrait répondre à la problématique de la recherche précise des mots …

      Je vais creuser aussi.

      Caeies.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.