OCR sans téléversement : extraire le texte des scans, captures d'écran et photos

La reconnaissance optique de caractères peut s'exécuter entièrement dans un onglet de navigateur. Sur ce site, Image en texte charge le moteur de reconnaissance Tesseract.js en WebAssembly, lit l'image depuis la mémoire locale et renvoie du texte modifiable, donc l'image n'est jamais transmise. PDF en texte va plus loin et évite généralement entièrement le moteur de reconnaissance.

Le chemin PDF est la conception la plus intéressante. L'outil parcourt le document page par page et lit d'abord toute couche de texte existante. Un PDF numérique, exporté depuis un traitement de texte ou un outil de design, produit un texte exact en environ une seconde et ne télécharge jamais le moteur de reconnaissance. Seules les pages pratiquement sans texte, donc les scans et les photographies, sont rendues en double taille et transmises à l'OCR. Cette approche en deux étapes signifie que le gros téléchargement n'est payé que lorsqu'il est réellement nécessaire, et les pages numérisées sont traitées une à une à quelques secondes chacune.

La raison pour laquelle cela compte n'est pas abstraite. Les documents numérisés sont la catégorie que les gens sont le moins à l'aise de confier : formulaires signés, lettres médicales, factures, papiers d'identité, tout ce qui est photographié sur un bureau. Un moteur de reconnaissance qui s'exécute localement supprime entièrement la décision, car il n'y a aucune copie à évaluer.

Image en texte

Lisez le texte d'une photo, d'une capture d'écran ou d'un scan. Plusieurs images sont traitées dans l'ordre, et le résultat apparaît dans une zone modifiable que vous pouvez copier ou télécharger.

Ouvrir Image en texte

Ce qui change quand la reconnaissance s'exécute dans le navigateur

Un service OCR basé sur un serveur reçoit votre fichier, exécute la reconnaissance sur son propre matériel et renvoie le texte. Un outil dans le navigateur télécharge le moteur plutôt que le document, et le trafic circule en sens inverse.

Reconnaissance dans l'ongletReconnaissance sur un serveur
Ce qui traverse le réseauFichiers du moteur et de langue, enVotre document, dehors
Des copies sur le disque de quelqu'un d'autreAucunAu moins le téléversement, souvent aussi un fichier de résultat
CompteNon nécessaireSouvent nécessaire pour les lots ou les fichiers plus volumineux
Fonctionne hors ligne après le premier chargementOuiNon
VitesseQuelques secondes par page numériséePlus rapide sur les gros lots
Vérifiable par vousOui, dans le panneau réseauNon

Un détail technique vaut la peine d'être connu car il explique pourquoi cela est possible sans configuration serveur spéciale. Le moteur est mono-thread et n'utilise pas SharedArrayBuffer, donc la page n'a pas besoin des en-têtes d'isolation cross-origin que le WebAssembly multithread exige normalement. C'est pourquoi un simple hébergeur statique peut le servir.

La conception en deux étapes de PDF en texte

La plupart des PDF que les gens appellent des scans n'en sont pas du tout. Un document exporté depuis un traitement de texte, un tableur ou un générateur de rapports contient de vrais caractères, positionnés sur la page mais stockés sous forme de texte. Reconnaître ces caractères avec l'OCR serait une chose étrange à faire, car cela introduirait des erreurs dans des données déjà exactes.

Étape un : lire la couche de texte

L'outil ouvre le PDF avec PDF.js et demande à chaque page son contenu textuel, puis reconstruit l'ordre de lecture à partir des données de position afin que les lignes et les paragraphes ressortent dans un ordre cohérent. Cette étape est rapide et sans perte : les caractères sont ceux que le fichier contient déjà, il n'y a donc rien à rater. Une page est considérée comme ayant une couche de texte lorsqu'elle contient au moins 20 caractères hors espaces, ce qui est un seuil délibérément bas pour qu'une page avec une légende vraiment courte soit tout de même lue directement.

Étape deux : ne reconnaître que les pages qui en ont besoin

Les pages qui échouent à ce test sont celles qui sont réellement des images, et elles passent par une autre voie. Chacune est rendue sur un canvas au double de la taille normale, convertie en PNG et transmise au moteur de reconnaissance. Doubler l'échelle de rendu compte plus qu'il n'y paraît, car les modèles OCR travaillent sur les traits et les contours, et une page rastérisée à la résolution d'écran perd les fins détails des petits caractères.

DocumentCe que fait l'outilTéléchargement du moteur
PDF numérique, toutes les pages contiennent du texteLit la couche de texte sur chaque pageAucun
PDF numérisé, sans couche de texteRend chaque page en 2x et la reconnaîtUn téléchargement, puis mis en cache
Document mixte, annexe numériséeLit directement les pages de texte, reconnaît le resteUn téléchargement, utilisé pour une partie du fichier

Le résultat vous indique quel chemin chaque page a suivi. Le résumé rapporte le nombre de pages, combien proviennent de la couche de texte et combien ont été reconnues, et le corps est divisé en blocs de page. Cette distinction est utile en pratique : si un document que vous pensiez numérique rapporte une pile de pages reconnues, il a probablement été imprimé en image quelque part en chemin.

PDF en texte

Les pages numériques sont lues depuis la couche de texte en environ une seconde. Le moteur de reconnaissance n'est chargé que pour les pages qui sont réellement des images.

Ouvrir PDF en texte

Ce que le moteur télécharge réellement

Rien n'est récupéré au chargement de la page. Le moteur arrive à la demande, la première fois que vous appuyez sur le bouton, et les chiffres valent la peine d'être énoncés car ils expliquent à la fois le délai et le comportement hors ligne par la suite.

  • Le noyau fait environ 3,7 MB. C'est la version WebAssembly du modèle de reconnaissance, et il s'agit d'un seul fichier auto-hébergé plutôt que de plusieurs variantes.
  • Les données de langue anglaise font environ 2,8 MB et est servi depuis ce site, donc le cas courant ne nécessite aucun tiers du tout. Ensemble, la première exécution en anglais tire environ 6,5 MB, et le navigateur la met en cache.
  • Les autres langues proviennent d'un CDN public de données Tesseract. Le sélecteur liste douze langues au total ; l'anglais est local, et les onze autres, du chinois et du japonais au russe et à l'arabe, sont téléchargées à la première utilisation et mises en cache par le moteur dans IndexedDB.
  • Un seul worker est conservé à la fois. Un worker conserve le noyau et les données de langue en mémoire, donc changer de langue termine le précédent au lieu de les empiler.
  • La prise en charge de SIMD est vérifiée avant tout chargement. Le chargeur valide d'abord un petit échantillon WebAssembly, car la version du moteur nécessite des instructions vectorielles. Sans cette vérification, un navigateur plus ancien échouerait avec une erreur de compilation de bas niveau au lieu d'un message lisible.

Comment obtenir un résultat propre

  1. Choisissez la langue avant de commencer. C'est le seul réglage qui décide de la précision, et il ne s'applique qu'aux pages qui passent par la reconnaissance. Un PDF numérique l'ignore entièrement.
  2. Envoyez la source la plus nette dont vous disposez. La photo d'origine bat une capture d'écran d'un aperçu, et un scan à plat bat une photo prise de biais au téléphone. Si vous n'avez qu'une photo, un léger recadrage sur le bloc de texte aide plus que n'importe quel réglage.
  3. Redressez-la et éclairez-la. Une page inclinée de quelques degrés, ou éclairée d'un seul côté avec une ombre au milieu, coûte plus en précision qu'une résolution plus faible.
  4. Lancez-le et lisez la sortie. La zone de résultat est modifiable, donc corrigez-y les noms et les nombres plutôt que d'exporter puis de corriger après coup.
  5. Vérifiez le taux de confiance. Il est rapporté comme une moyenne sur l'ensemble du fichier. Un chiffre faible est un signal pour réexaminer la source, pas un verdict sur le texte.

Si une photo doit être nettoyée avant la reconnaissance, Recadreur d'image et Compresseur d'image les deux s'exécutent localement, donc toute la chaîne, de la photo brute au texte, peut rester sur l'appareil.

Où l'OCR échoue encore

Être clair à ce sujet est plus utile qu'une affirmation de confiance, car les modes d'échec sont prévisibles et se regroupent autour de la façon dont la source a été produite plutôt qu'autour du moteur.

  • Graphismes de design et fonds colorés. Le modèle de reconnaissance a été entraîné sur des documents, pas sur des affiches. Testé contre le graphique de couverture bleu foncé de ce site, qui comporte de grandes lettres stylisées, le moteur n'a renvoyé qu'un seul trait d'union. Toute image où le texte est décoratif plutôt que composé est un mauvais candidat.
  • L'écriture manuscrite. Le texte imprimé est la cible. Les notes manuscrites, les signatures et les champs de formulaire produisent une sortie peu fiable, et aucune résolution ne corrige cela.
  • Numérisations médiocres. Reçus thermiques pâles, fax, photocopies de photocopies, pages de travers dans le scanner. La précision chute pour chacun de ces cas, et l'outil n'a aucun moyen de vous signaler quels mots sont douteux.
  • Vitesse sur les pages numérisées. La reconnaissance prend quelques secondes par page, et le travail se fait sur votre propre CPU, donc l'onglet est occupé pendant l'exécution. Un long document numérisé est une tâche lente plutôt qu'instantanée.
  • Couverture linguistique. Uniquement les douze langues du sélecteur. Toute autre langue n'est pas prise en charge, et une page mélangeant deux écritures est lue avec le seul modèle que vous avez choisi, ce qui coûte en précision sur la seconde.
  • La mise en page n'est pas conservée. La sortie est du texte brut avec des marqueurs de page. Les colonnes, les tableaux et les encadrés ressortent comme un flux linéaire, donc une mise en page complexe doit être reformatée ensuite.
  • Les PDF protégés par mot de passe doivent d'abord être déverrouillés. Le lecteur ne peut pas ouvrir un fichier chiffré, et l'outil le dit plutôt que d'échouer en silence.

Quand un service basé sur un serveur est la meilleure réponse

La reconnaissance locale est le bon choix par défaut pour une poignée de documents, et c'est le mauvais outil pour quelques tâches précises. Trois cents factures numérisées, une archive très manuscrite, une écriture hors de la liste prise en charge, ou une exigence de sortie structurée préservant la géométrie des tableaux pointent toutes dans la même direction, car celles-ci nécessitent un débit ou des modèles qu'une version dans le navigateur ne transporte pas.

L'habitude utile est de séparer les deux cas avant de commencer. Si le document est sensible et le volume faible, la voie du navigateur le couvre et le fichier ne bouge jamais. Si le volume est important, la bonne démarche est un service approuvé plutôt que cent exécutions manuelles, et le choix du service est une décision organisationnelle plutôt que technique. Cette séparation, et la façon dont elle s'applique aux équipes traitant des dossiers de personnel, juridiques ou cliniques, fait l'objet de documents sensibles et le cloud.


Questions fréquentes

Utilisez un outil qui exécute le moteur de reconnaissance dans la page, puis choisissez la langue et laissez-le lire le fichier depuis la mémoire locale. Image en texte charge Tesseract.js en WebAssembly dans l'onglet, prend l'image depuis le champ de fichier et écrit les mots reconnus dans une zone modifiable que vous pouvez copier ou télécharger sous forme de fichier texte. Rien n'est envoyé sur le réseau, il n'y a donc aucune fenêtre de conservation à laquelle se fier et aucun compte à créer. Vous pouvez le confirmer dans les outils de développement du navigateur : observez le panneau réseau pendant le traitement du fichier et vous verrez les fichiers du moteur et de langue être récupérés, pas votre image. Le seul coût est la première exécution, qui tire environ 6,5 MB de données de moteur et de langue que le navigateur met ensuite en cache. Après cela, les images suivantes démarrent presque immédiatement et l'outil continue de fonctionner avec le réseau déconnecté.
Non, et c'est tout l'intérêt de la conception en deux étapes. PDF en texte ouvre le document avec PDF.js et lit d'abord la couche de texte de chaque page. Un PDF exporté depuis un traitement de texte ou un outil de design contient de vrais caractères, donc l'outil les renvoie exactement tels qu'ils ont été écrits, en environ une seconde par document, et ne télécharge jamais le moteur de reconnaissance. Seules les pages qui reviennent avec pratiquement aucun texte, ce que produit un scan ou une photographie, sont rendues en image et transmises à l'OCR. La sortie indique quel chemin a été suivi : le résumé compte les pages lues depuis la couche de texte et les pages qui ont nécessité la reconnaissance, et le corps est divisé par des marqueurs de page. Un rapport numérique de 40 pages ne coûte donc presque rien, tandis qu'un scan de 40 pages paie une fois le téléchargement du moteur et quelques secondes par page.
Cela dépend presque entièrement de la source, pas du moteur. Sur du texte imprimé propre issu d'une bonne numérisation ou d'une capture d'écran nette, la reconnaissance est fiable, et le test de l'outil sur l'image d'exemple Tesseract a renvoyé tout le passage mot pour mot avec une confiance moyenne de 92 pour cent. Le même moteur exécuté sur le graphique de couverture bleu foncé du site n'a renvoyé qu'un seul trait d'union, car les grandes typographies stylisées sur fond coloré ne correspondent pas à ce sur quoi le modèle a été entraîné. Attendez-vous à des problèmes avec l'écriture manuscrite, les reçus thermiques pâles, les photos prises de biais, les tableaux denses et les polices décoratives. La règle pratique est d'envoyer l'original le plus net dont vous disposez, de garder la page aussi droite que possible, et de considérer la sortie comme un brouillon à relire. Le taux de confiance affiché à côté du résultat est un signal utile, pas une garantie.
Uniquement les langues listées dans le sélecteur de l'outil. Les données anglaises sont livrées avec la page, et les onze autres options, couvrant le chinois simplifié et traditionnel, le japonais, le coréen, l'allemand, le français, l'espagnol, le portugais, l'italien, le russe et l'arabe, sont téléchargées à la première utilisation depuis le CDN public de données Tesseract puis mises en cache par le navigateur. Pour un PDF numérique, le choix de la langue importe moins qu'on ne l'attend, car une vraie couche de texte est lue directement quelle que soit la langue dans laquelle elle est écrite, et le sélecteur n'est utilisé que pour les pages qui passent par la reconnaissance. Deux limites valent la peine d'être connues : une page qui mélange deux écritures dans le même bloc est lue avec le seul modèle choisi, ce qui réduit la précision pour la seconde langue, et toute langue hors de cette liste n'est pas prise en charge du tout. Rien en dehors de la liste ne peut être ajouté depuis la page.
Oui, après la première exécution. Le moteur de reconnaissance et les données de langue sont téléchargés une fois puis mis en cache, donc une seconde passe sur une autre image ne nécessite aucun réseau. Cela rend l'outil utilisable sur un ordinateur portable en mode avion, sur un réseau d'entreprise verrouillé sans accès sortant, ou sur une machine où le fichier ne doit pas quitter le bâtiment. Sa forme vaut la peine d'être connue avant de vous y fier : la toute première reconnaissance nécessite une connexion pour récupérer environ 6,5 MB pour l'anglais, et une langue autre que l'anglais nécessite son propre premier téléchargement. Une fois ceux-ci dans le cache du navigateur, le flux de travail est entièrement local. Les PDF numériques fonctionnent aussi immédiatement hors ligne, car la couche de texte est lue depuis le fichier lui-même et aucun moteur n'intervient. Le cache appartient à un profil de navigateur, donc un autre navigateur ou profil retélécharge.

Lire le texte sans envoyer le fichier

Gratuit, privé et illimité. Aucun compte requis.

Ouvrir Image en texte