Présentation
papero-pdf-text-extractor est une API open‑source conçue pour extraire le texte d’un PDF tout en conservant sa mise en page. Le projet se distingue par l’absence de modèles d’apprentissage automatique : il repose uniquement sur la géométrie des blocs de texte, ce qui le rend rapide sur un processeur CPU et compatible avec les environnements sans GPU. L’outil fonctionne dans le navigateur, en Python ou via un service REST, et garantit que les fichiers restent sur la machine de l’utilisateur.
Architecture et fonctionnement
Le cœur de papero est un moteur de layout qui analyse les coordonnées (bbox) de chaque élément du PDF. Il identifie les colonnes, les en‑têtes, les pieds de page et les logos répétés, puis les exclut du flux de lecture. Les tables, qu’elles soient bordées, sans bordure ou formatées avec les booktabs LaTeX, sont reconstruites en lignes et colonnes, y compris les cellules multilignes. Les formules sont converties en code LaTeX (ex. E = mc^{2}) et accompagnées d’une image PNG découpée à partir du PDF original. Chaque bloc – texte, tableau, formule ou figure – reçoit une boîte englobante (bbox) permettant de référencer précisément sa position dans le document.
Pour les formats non PDF (Word, Excel, PowerPoint, EPUB, HTML), papero délègue la lecture à Apache Tika. Les pages scannées sont traitées par Tesseract OCR, configurable en mode auto, force ou off. L’ensemble des options (extraction d’images, OCR, sélection de pages) est exposé via une interface CLI, un serveur Docker ou une route /v1/extract.
from pdf_text_api import extract
doc = extract("paper.pdf", images=True)
print(doc.tables[0].rows) # [['Model', 'Accuracy'], ['Base', '0.81']]
print(doc.formulas[0].latex) # "E = mc^{2}"Performances et limites
Le README indique un temps de traitement d’environ 30 secondes dans le navigateur pour charger un PDF, inspecter les blocs et exporter le résultat. Cette rapidité provient du calcul purement géométrique, sans appel à des services externes. La contrainte principale réside dans la dépendance à la qualité du PDF : les documents très complexes ou fortement stylisés peuvent entraîner des erreurs d’ordre de lecture ou de segmentation de tableau. L’absence de modèles ML empêche la reconnaissance de structures ambiguës que les solutions basées sur l’IA résoudraient plus aisément.
En matière de confidentialité, papero assure que les fichiers ne sont jamais transmis à un serveur distant, ce qui le rend adapté aux flux de travail sensibles (ex. dossiers juridiques, données médicales). Cependant, l’utilisation d’Apache Tika et de Tesseract introduit des dépendances Java et C++ qui augmentent la taille du conteneur Docker et peuvent compliquer le déploiement sur des environnements très restreints.