Rendre un PDF scanné cherchable grâce à l’OCR : méthode et limites
Un document scanné n’est qu’une suite de photographies de pages : on ne peut ni y chercher un mot ni en copier une phrase. La reconnaissance optique de caractères (OCR) lit ces images et y ajoute le texte reconnu. Sa réussite se joue surtout au moment de la numérisation, et son résultat se vérifie, car rien ne signale une erreur de lecture.
Reconnaître un PDF scanné
Dans un PDF sorti d’un scanner ou d’une application de numérisation, chaque page est une image. Les techniques d’accessibilité du W3C en tirent les conséquences : le contenu n’est pas du texte cherchable, les technologies d’assistance ne peuvent pas le lire, et l’on ne peut ni sélectionner ni agrandir les caractères (technique PDF7).
Le test le plus simple consiste à chercher un mot bien visible dans la visionneuse. Autre possibilité : passer le fichier dans PDF vers Texte, qui signale un document dépourvu de texte extractible. Un même fichier peut aussi être mixte, avec des pages scannées glissées entre des pages produites sur ordinateur.
Ce que produit OCR PDF
OCR PDF accepte un PDF, ou une image JPG ou PNG traitée comme une page unique. Deux sorties sont proposées :
- PDF cherchable : chaque page devient une image, doublée d’une couche de texte invisible placée à l’emplacement des mots reconnus. Le document se lit comme avant, mais la recherche, la sélection et la copie fonctionnent. Le fichier reçoit le suffixe « -ocr ».
- Texte brut : le texte reconnu s’affiche, se copie d’un clic et se télécharge en .txt, avec un séparateur entre les pages.
La reconnaissance est confiée à Tesseract, un moteur créé chez Hewlett-Packard entre 1985 et 1994, publié en open source en 2005 et diffusé sous licence Apache 2.0. Depuis sa version 4, il reconnaît les lignes de texte grâce à un réseau de neurones de type LSTM (dépôt officiel). Le site en utilise la version WebAssembly, tesseract.js, réglée sur ce seul moteur LSTM.
L’OCR ajoute des mots, pas une structure : ni titres, ni listes, ni tableaux. Un document réellement accessible demande en plus un balisage du PDF, qui garantit notamment un ordre de lecture prévisible selon la PDF Association.
Au premier lancement : ce qui est téléchargé
Le moteur et les données de langue ne sont pas livrés avec le site : ils sont récupérés sur le CDN jsDelivr au lancement de l’OCR. Voici la taille des fichiers publiés :
| Fichier | Taille | Conservation |
|---|---|---|
| Script de pilotage (worker) de tesseract.js 7.0.0 | environ 0,1 Mo | cache HTTP du navigateur |
| Moteur Tesseract compilé en WebAssembly, variante LSTM | environ 3,7 Mo | cache HTTP du navigateur |
| Données du français, compressées | environ 0,7 Mo | base IndexedDB du navigateur |
| Données de l’anglais, compressées | environ 2,8 Mo | base IndexedDB du navigateur |
Selon la documentation de tesseract.js, les données de langue sont enregistrées dans IndexedDB et relues lors des lancements suivants. Les fichiers du moteur relèvent du cache ordinaire, que le navigateur peut vider à tout moment. Aucun de ces téléchargements ne transporte votre document, lu et reconnu sur votre appareil : le guide vérifier le traitement local explique comment le constater.
Soigner la numérisation : les repères de Tesseract
L’OCR ne rattrape pas une mauvaise image. La documentation du moteur donne des seuils précis :
- Résolution : Tesseract fonctionne au mieux sur des images d’au moins 300 DPI, indique la documentation du projet, qui suggère d’agrandir les images trop petites (Improving the quality of the output). Mieux vaut numériser directement à cette résolution : un scan agrandi après coup peut aider le moteur, mais ne retrouve aucun détail perdu.
- Taille des caractères : l’ancienne FAQ du projet, écrite pour les versions 2 à 4 alpha, situe la baisse de précision sous 10 points à 300 DPI, et une chute rapide sous 8 points. Un « x » minuscule y mesure environ 20 pixels de haut ; sous 10 pixels, un résultat correct devient très improbable (FAQ archivée).
- Page droite : la découpe du texte en lignes se dégrade nettement quand la page est de travers, et la reconnaissance avec elle.
- Bordures : les bords sombres laissés par le scanner peuvent être pris pour des caractères.
- Fond : le moteur convertit lui-même l’image en noir et blanc, avec un résultat parfois médiocre quand le fond est inégalement sombre, comme sur un papier jauni ou ombré.
- Écriture manuscrite : Tesseract vise le texte imprimé, et sa FAQ prévient que l’écriture à la main sera mal reconnue.
Pour photographier un document au téléphone dans de bonnes conditions, suivez nos conseils de prise de vue.
Mode d’emploi pas à pas
- Redressez les pages à l’envers ou couchées avec Pivoter PDF : l’outil ne détecte pas l’orientation et lit chaque page telle qu’elle s’affiche.
- Recadrez les bords noirs avec Rogner PDF : seule la zone conservée est rendue pour la reconnaissance.
- Isolez les pages scannées d’un PDF mixte avec Extraire des pages : sinon, les pages déjà textuelles seraient elles aussi transformées en images.
- Ouvrez OCR PDF, déposez le fichier, choisissez la langue (Français, Anglais ou Les deux) puis la sortie.
- Lancez l’OCR et laissez l’onglet affiché : le dessin des pages repose sur requestAnimationFrame, que la plupart des navigateurs suspendent en arrière-plan (MDN). Chaque page est rendue à 300 DPI puis reconnue ; le bouton Annuler interrompt le traitement.
- Téléchargez le résultat. Si vous aviez isolé des pages, réassemblez le document avec Fusionner PDF, puis replacez chaque page avec Organiser PDF. Signets, champs de formulaire et liens entre les deux parties seront perdus.
Vérifier le texte reconnu, puis l’exploiter
Un PDF cherchable ressemble trait pour trait à l’original : seul un contrôle révèle la qualité de sa couche de texte.
- Cherchez des mots peu courants du document, un nom propre ou une référence : s’ils sont trouvés, la couche est en place.
- Copiez un paragraphe dans un éditeur de texte pour repérer les confusions entre caractères de forme voisine, comme un l minuscule et le chiffre 1.
- Relisez un par un les montants, les dates et les numéros : une erreur sur un chiffre ne produit pas de mot étrange, seulement une valeur fausse.
La couche ajoutée se lit ensuite comme n’importe quel texte : PDF vers Texte pour la récupérer, PDF vers Word pour retravailler le document (ce qui est conservé), PDF vers Excel pour un tableau, en sachant que chaque mot y devient un fragment distinct. OCR PDF ne permet pas de corriger le texte reconnu : pour obtenir un texte exact, partez de la sortie « Texte brut » et relisez-la.
Poids, format de page et retraitements : les pièges
Le PDF cherchable est un document neuf. Chaque page y devient une image, enregistrée sans perte, de la page rendue à 300 DPI, soit environ 2 480 × 3 508 pixels pour un A4. Sur les grands formats, la résolution baisse pour qu’aucun côté du rendu ne dépasse 4 200 pixels : 254 DPI pour une A3, 89 DPI pour une A0. La page garde le format affiché de l’original, rognage et rotation compris : une A4 reste en 21 × 29,7 cm. Rien d’autre ne passe de l’original : ni son texte éventuel, ni ses signets, ni ses liens cliquables, ni ses champs de formulaire, ni ses métadonnées.
Mesuré dans Chromium, le poids grimpe nettement : une page A4 scannée à 200 DPI et compressée en JPEG, d’environ 375 Ko, a donné un PDF cherchable d’environ 1,4 Mo ; une page de texte produite par ordinateur est passée de moins de 2 Ko à environ 470 Ko.
Pour une image JPG ou PNG déposée directement, la taille de la page découle de la résolution inscrite dans l’image. Un PNG de 1 241 × 1 754 pixels déclaré à 150 DPI a ainsi produit une page A4 lors de notre essai ; sans cette indication, le moteur compte 70 pixels par pouce, et la même image est devenue une page d’environ 45 × 64 cm. Avant d’imprimer le résultat ou de le fusionner avec des pages A4, vérifiez son format dans les propriétés du document.
Questions fréquentes
Faut-il une connexion internet pour lancer l’OCR ?
Oui, au moins au premier usage, puisque le moteur et les données de langue sont téléchargés à ce moment-là. Ensuite, le moteur dépend du cache ordinaire du navigateur, qui peut être vidé : prévoyez une connexion à chaque lancement.
Puis-je traiter une photo prise au téléphone ?
Oui, en JPG ou en PNG. L’image est reconnue telle quelle, sans nouveau rendu : une photo nette, bien éclairée et prise bien à plat fera la différence. Pour plusieurs pages, ou pour éviter une taille de page fantaisiste, réunissez d’abord les photos avec Numériser vers PDF, qui les pose sur des pages A4, puis passez ce PDF à l’OCR.
La recherche ne trouve rien dans ma visionneuse : le PDF est-il raté ?
Pas forcément. La FAQ de Tesseract rappelle que certaines visionneuses comprennent mal la couche de texte cachée, au point de n’y voir que des espaces. Ouvrez le fichier dans une autre visionneuse, ou passez-le dans PDF vers Texte : si le texte ressort, c’est la visionneuse qui est en cause.
Sources
- W3C — Technique PDF7 (OCR d’un PDF scanné)
- Tesseract — dépôt officiel
- PDF Association — Tagged PDF Q & A
- tesseract.js — documentation de l’API (options de cache)
- jsDelivr — tesseract.js 7.0.0, dossier dist
- jsDelivr — tesseract.js-core 7.0.0
- jsDelivr — données du français (@tesseract.js-data/fra 1.0.0)
- jsDelivr — données de l’anglais (@tesseract.js-data/eng 1.0.0)
- Tesseract — Improving the quality of the output
- Tesseract — FAQ archivée (versions 2.0x à 4.00 alpha)
- Tesseract — FAQ
- MDN — Window : méthode requestAnimationFrame()