Guides
· 5 min de lecture

Caviarder un PDF numérisé quand votre outil ne trouve rien

Par Amine Gaaliche · brouillon rédigé avec Claude, relu et corrigé à la main

Si votre outil ne trouve rien dans un PDF numérisé, la numérisation en est la cause. En effet, chaque page y est une image, sans texte qu'un logiciel puisse lire. Pour caviarder ce fichier, il faut donc d'abord reconnaître le texte, puis remplacer les pixels où figurent les données.

Un échec qui ressemble à un succès

La plupart des pannes d'un outil de caviardage se voient : un fichier qui ne s'ouvre pas, un format refusé, un traitement interrompu. Celle-ci, au contraire, ressemble à un succès. Le logiciel a lu la couche de texte, l'a trouvée vide, puis a annoncé qu'il n'avait rien trouvé, sans préciser que ce vide venait du fichier. Pourtant, la page porte bel et bien des noms, un numéro de sécurité sociale et un RIB.

L'utilisateur se fie à ce rapport et envoie le fichier. Comme rien n'a échoué en apparence, personne ne vérifie.

Une page numérisée est une image

Un PDF sorti d'un scanner contient une image par page, sans aucun caractère. Pour y repérer un nom, un logiciel doit donc d'abord reconnaître les lettres : c'est la reconnaissance optique de caractères, ou OCR.

La documentation d'Adobe indique qu'il faut lancer la reconnaissance de texte d'Acrobat avant de chercher ou de modifier le texte d'un PDF numérisé. Même chez l'éditeur de référence, l'OCR est donc une étape à part, qu'il faut penser à lancer. Or c'est précisément l'étape qu'on oublie quand une pièce doit partir vite.

De son côté, Presidio, la boîte à outils d'anonymisation lancée par Microsoft, traite les images dans un composant distinct de son analyseur de texte. Autrement dit, sa conception admet qu'une image pose un autre problème qu'un texte. Nous sommes arrivés au même constat en écrivant nous-mêmes la partie de notre moteur qui traite les pages.

Quatre étapes, quatre erreurs que rien ne signale

Caviarder un scan demande quatre étapes, et chacune peut échouer sans prévenir.

  1. Reconnaître : promptShield convertit chaque page en image à 300 dpi, puis la confie à Tesseract, le moteur d'OCR libre le plus répandu. À plus basse résolution, un 8 peut être lu comme un 3, et un numéro de sécurité sociale mal lu échappe alors à la détection.
  2. Situer : l'OCR donne la position de chaque mot sur l'image, et chaque donnée détectée est rattachée à la zone où elle figure. Si ce rattachement se décale, le rectangle couvre la ligne voisine, et le nom reste lisible.
  3. Recouvrir : un rectangle noir posé en annotation ou en calque se déplace dans n'importe quel éditeur de PDF, et l'image intacte réapparaît. Un véritable caviardage remplace donc les pixels eux-mêmes, car une zone qui paraît noire ne prouve rien. Le même principe vaut pour le caviardage des PDF juridiques sans passer par le cloud.
  4. Reconstruire : sans texte, un scan ne permet ni la recherche ni le copier-coller. promptShield reconstruit donc une couche de texte sous l'image traitée. Cette couche ne doit, elle non plus, contenir aucune donnée à protéger.

La langue, une limite réelle

Tesseract lit une page avec un modèle propre à chaque langue. promptShield lui indique la langue du document, plus l'anglais, pour qu'un contrat français émaillé de termes anglais soit bien lu. Huit langues sont livrées : français, anglais, allemand, espagnol, italien, néerlandais, portugais et polonais.

Un scan en tchèque ou en turc donne en général un résultat plausible mais faux, avec des noms déformés que la détection ne reconnaît plus. Une pièce allemande lue avec la langue réglée sur le français pose le même problème. Si vos pièces sont rédigées dans une autre langue que ces huit, relisez donc chaque page vous-même.

De l'ouverture au téléchargement

Un scan s'ajoute à la Bibliothèque comme n'importe quel fichier, qu'il s'agisse d'un PDF ou d'une image. La reconnaissance du texte se lance d'elle-même à l'ouverture, sur les pages dont la couche de texte est absente ou pauvre.

Détecter applique ensuite plusieurs couches. Les Motifs repèrent les valeurs à structure fixe : numéro de sécurité sociale, IBAN, RIB. La Reconnaissance d'entités traite les noms et les adresses. L'Analyse approfondie, facultative et désactivée par défaut, peut s'y ajouter pour les cas limites. Les résultats sont enfin fusionnés, filtrés et propagés : un nom relevé en page 1 est ainsi signalé aussi en page 4.

Aucune détection n'est complète, et l'OCR ajoute sa propre marge d'erreur. C'est pourquoi Réviser ouvre la liste des valeurs trouvées, que vous acceptez ou écartez une à une. Par défaut, le fichier ne se télécharge qu'après cette validation. Si vous cliquez trop tôt, une fenêtre explique ce qui bloque et ouvre directement la révision. Valider inscrit aussi les codes au Registre de codes.

Caviarder retire la donnée : les pixels sont recouverts et le texte disparaît du fichier. Encoder, en revanche, la remplace par un code réversible, et Décoder rétablit l'original grâce au Registre de codes de votre poste. Sur un scan, le code est dessiné à la place de la valeur, sous une forme comme [P0ABCD]. Sa longueur suit celle du texte remplacé, avec un minimum de six caractères.

Chaque code ne vaut que dans son dossier de la Bibliothèque. Quant au Registre de codes, c'est une base SQLite locale que nous laissons volontairement non chiffrée, car les pièces d'origine se trouvent déjà en clair sur le même disque. Le détail figure dans notre article sur le caviardage réversible.

À l'export, le contenu est aussi remplacé dans les parties du fichier que la page n'affiche pas : texte de substitution des PDF balisés, métadonnées XMP, destinations nommées, champs de formulaire. Quant aux vignettes calculées avant le caviardage, elles sont supprimées des pages concernées.

Le scan, le sous-traitant et le secret

Le service en ligne qui reçoit un scan devient un sous-traitant au sens de l'article 28 du RGPD. Pour une profession réglementée, s'y ajoute le secret professionnel, qui pèse tout autant. Avec promptShield, le document ne quitte pas votre poste. L'application gratuite, qui fonctionne dans le navigateur, envoie seulement un signal anonyme au lancement. L'application de bureau, elle, peut fonctionner entièrement hors ligne, et l'offre Pro y ajoute un mode isolé.

Questions fréquentes

Pourquoi mon outil n'a-t-il rien trouvé dans un PDF numérisé ?

Il a cherché du texte là où il n'y a qu'une image. Pour le vérifier, essayez de sélectionner un mot à la souris, ou lancez une recherche sur un nom visible. Si rien ne se sélectionne et que la recherche échoue, aucun logiciel n'a jamais lu la page.

Peut-on encore faire une recherche dans un scan caviardé ?

Oui, à condition que l'outil reconstruise une couche de texte sous l'image. promptShield le fait, et les valeurs encodées y figurent sous forme de codes, que Décoder sait retrouver.

Le texte retiré peut-il être récupéré ?

Cela dépend de la méthode. Un rectangle posé par-dessus se retire en deux clics. Des pixels remplacés, en revanche, ne laissent rien à récupérer. Quant à une valeur encodée, elle ne se récupère qu'avec Décoder, sur votre poste.

Faut-il régler la bonne langue pour que la reconnaissance fonctionne ?

Oui. Réglez la langue de détection sur celle du document, parmi les huit livrées. Avec une autre langue, le texte lu risque d'être plausible, mais inexact.

Ça vous a été utile ? Dites-le-nous.

Partager