Command Palette

Search for a command to run...

L'inclinaison interrompt l'OCR bien avant que la résolution ne

L'inclinaison interrompt l'OCR bien avant que la résolution ne

T
Toolz Team
|Oct 21, 2026|18 min Lire
Préférez Toolz.dev sur Google

Fait partie de la collection Outils d'IA

image IA sur texte (OCR)

Extrayez du texte d'une photo ou d'une capture d'écran en 13 langues avec Tesseract OCR exécuté dans votre navigateur Gratuit, pas d'inscription et votre image n'est jamais téléchargée.

Utilisez le image IA sur texte (OCR)

Les conseils que tout le monde donne sur la numérisation du texte est d'utiliser la résolution la plus élevée possible et d'obtenir le bon éclairage. J'ai exécuté le moteur que ce site utilise contre un ensemble d'images délibérément endommagées pour savoir laquelle de ces questions, et la réponse n'était ni l'un ni l'autre. La même phrase est revenue parfaitement d'une image d'un tiers de la taille d'origine, parfaitement à partir de texte gris sur un fond gris et parfaitement d'un JPEG enregistré à la qualité 25. Ce qui l'a détruit, c'était d'incliner la page de cinq degrés. Chaque numéro ci-dessous est sorti de cette course, et ils pointent vers une liste de contrôle différente de celle habituelle.

tl;dr : Tesseract lit le texte proprement rendu jusqu'à ce que deux éléments spécifiques tournent mal. L'inclinaison est la première : 0 à 3 degrés d'inclinaison a donné un taux d'erreur de caractère de 0 %, 5 degrés ont donné 2,9 %, 12 degrés ont donné 16,7 % et 20 degrés ont donné 32,4 %. La taille est la seconde, et c'est une falaise plutôt qu'une pente : le texte est resté parfait jusqu'à une hauteur de majuscule d'environ 7 pixels, puis réduit à 85,3 % d'erreurs à 5,8 pixels. Faible contraste, flou et compression JPEG lourde à peine enregistré. Redressez l'image avant de faire quoi que ce soit d'autre. le Convertisseur d'images en textes Exécute le moteur de votre navigateur, de sorte que la photo n'est jamais téléchargée.

Comment ces chiffres ont-ils été produits ?

En rendant une phrase connue, en endommageant l'image d'une manière à la fois, en la lisant et en comptant les modifications nécessaires pour réparer le résultat.

La métrique est le taux d'erreurs de caractère : la distance de Levenshtein entre ce que l'image a dit et ce que le moteur a renvoyé, divisé par la longueur de la vérité. Un taux d'erreur de 2 % sur une ligne de cinquante caractères est un caractère erroné. Le texte était composé de trois lignes mêlant prose, un numéro de facture, une date, un montant en devise, une adresse e-mail et un numéro de téléphone, car les erreurs qui comptent dans la pratique se produisent dans le deuxième type de contenu plutôt que dans le premier.

Une mise en garde appartient au sommet plutôt qu'enterrée. Ce sont des images rendues, pas des photographies. Chacun isole une seule variable, ce qui est le seul moyen d'attribuer une défaillance à une cause, mais une vraie photo d'une page arrive avec plusieurs à la fois : une légère inclinaison, un éclairage inégale à travers le pli, un flou de mouvement sur un bord et un appareil photo qui a tout aiguisé avant d'économiser. Les seuils ci-dessous sont donc les meilleurs cas. Une photographie qui est juste à la limite de deux axes fera pire que ce que le suggère le nombre.

Le moteur est le modèle LSTM de Tesseract 4 via Tesseract.js, ce qui est exactement ce que l'outil fonctionne, donc ce ne sont pas des chiffres d'un autre système.

Combien de biais c'est trop ?

entre trois et cinq degrés, ce qui est moins d'inclinaison que vous ne le remarqueriez.

rotation Taux d'erreur de caractère Confiance signalée
0 degrés 0,0 % 95
1 degré 0,0 % 95
2 degrés 0,0 % 95
3 degrés 0,0 % 94
5 degrés 2,9 % 91
8 degrés 7,8 % 82
12 degrés 16,7% 70
20 degrés 32,4 % 66

Rien ne se passe pour trois degrés, puis il tombe d'une étagère. La raison en est dans le fonctionnement du moteur : il trouve des lignes de texte, puis découpe chaque ligne en caractères. Une ligne inclinée traverse plusieurs rangées de pixels, de sorte que le découpage coupe le haut de certaines lettres et le bas des autres, et le modèle est invité à classer les fragments.

À 5 degrés, les erreurs étaient faibles et coûteuses. "Dated" est revenue comme "dateq" et "total" comme "totg)". Les deux sont une seule lettre dans un mot qu'un humain lisait directement, et les deux étaient assis à côté d'un numéro de facture et un montant en devise qu'une personne allait copier sans vérifier.

Un téléphone tenu à la main sur une page est régulièrement sorti de plus de cinq degrés. C'est la seule chose qui vaut la peine d'être corrigée avant d'exécuter quoi que ce soit, et le correctif est gratuit : faites pivoter l'image jusqu'à ce que les lignes soient au niveau.

Quelle est la taille du texte avant que l'OCR ne tombe en panne ?

Plus petit que prévu, jusqu'au point où il cesse de fonctionner entièrement.

Largeur de l' Hauteur de la majuscul taux d'erreur Confiance
1600 px ~29 px 0,0 % 95
800 px ~14 px 0,0 % 95
533 px ~10 px 0,0 % 92
400 px ~7 px 0,0 % 84
320 px ~6 px 85,3 % 41
240 px ~4 px 100,0 % 0

Les trois mêmes lignes se lisent parfaitement à un quart de leur taille d'origine, où chaque lettre majuscule mesure environ sept pixels de haut. Un pas plus bas et la sortie était inutilisable, puis vide.

C'est une falaise, pas un gradient, et cela change les conseils. "Utilisez la résolution la plus élevée dont vous disposez" n'est pas fausse, mais cela décrit un problème que la plupart des images n'ont pas. Une capture d'écran d'une page Web, une photo d'un signe, une photo d'une lettre imprimée : toutes ces valeurs ont bien plus de sept pixels de hauteur de lettre. Ce qu'ils ont le plus souvent, c'est une inclinaison.

L'endroit où la falaise morde est une récolte à distance. Texte en arrière-plan d'une photo de vacances, un signe dans une rue, une ligne de petits caractères dans une numérisation pleine page à la résolution d'écran. Si les lettres sont difficiles à lire à 100 %, le moteur est également près de son plancher.

Le faible contraste est-il gâché la lecture ?

Non, et c'est le résultat qui a le plus contredit ce à quoi je m'attendais.

Texte gris à #8A8A8A sur un fond gris à #BDBDBD Read avec un taux d'erreur de 0,0 % et une confiance de 95, identique au noir sur blanc. Un flou gaussien de trois pixels sur l'ensemble de l'image a donné 0,6 %. Un JPEG économisé à la qualité 25 et mis à l'échelle à la moitié de la taille a donné 0,0 %.

La raison en est que le moteur ne lit pas vos gris. Il binaris l'image en premier, transformant tout en noir et blanc avec un seuil choisi dans l'image, et un faible contraste uniforme survit à cette étape intacte. Ce qui ne survit pas, c'est le contraste qui varie d'une page à l'autre, ce qu'une ombre ou un flash de téléphone produit : un seuil ne peut pas convenir aux deux moitiés de l'image.

Ainsi, la version utile des conseils d'éclairage est plus étroite que la version habituelle. Même l'éclairage compte. L'éclairage lumineux ne le fait pas. Une photo sombre et éclairée d'une page bat une image lumineuse avec une ombre au milieu.

Pourquoi une disposition à deux colonnes est-elle brouillée ?

Parce que la commande de lecture est un jugement de mise en page, et le moteur le fait à partir de la seule géométrie.

J'ai rendu deux blocs de texte côte à côte, trois lignes chacun, sur des lignes de base partagées. Le résultat est revenu entrelacé :

LEFT ONE RIGHT ONE LEFT TWO RIGHT TWO LEFT THREE RIGHT THREE

Chaque mot est correct. La commande est inutile. Le moteur a trouvé six lignes de texte assises à trois positions verticales et a lu chaque rangée, ce qui est le comportement correct pour une table et la mauvaise pour deux colonnes de prose.

Une vraie page de journal ou un PDF académique survit souvent à cela, car la gouttière entre les colonnes est suffisamment large et cohérente pour que l'étape de segmentation de la page soit détectée. Une capture d'écran d'une mise en page avec deux blocs lâches côte à côte, ce qui est le cas courant pour ce type d'outil, souvent non.

La solution fiable est de recadrer. Exécutez une colonne, copiez le résultat, puis exécutez l'autre. Cela semble laborieux et prend environ quinze secondes, ce qui est moins que reconstruire un paragraphe dont les phrases ont été mélangées.

Peut-il lire l'écriture manuscrite ?

Il n'est pas fiable, et la limite est de savoir si les lettres se touchent plutôt que de savoir si elles semblent informelles.

Je ne pouvais pas tester l'écriture réelle sans fournir une photographie, qui aurait des variables mixtes, j'ai donc testé trois polices de régularité décroissante en tant que remplaçant :

fonte taux d'erreur Confiance
Comic sans MS 0,0 % 95
script de brosse mt 5,9 % 67
Snell Roundhand 20,6 % 55

Comic Sans est informel et parfaitement lisible pour le moteur, car ses lettres sont des formes distinctes de largeur constante. Snell Roundhand est un script connecté, et un cinquième des personnages est revenu mal.

C'est la vraie distinction. Le modèle de Tesseract a été formé sur le type imprimé et s'attend à couper une ligne en glyphes discrets. L'écriture connectée n'a pas de points de coupe propres, de sorte que la segmentation échoue avant que la reconnaissance n'ait une chance. L'écriture authentique est pire que Snell Roundhand, pas mieux, car elle varie également de lettre à lettre.

Si vous avez besoin d'une lecture manuscrite, ce n'est pas le bon outil, tout comme tous les autres frontaux de Tesseract. Ce travail nécessite un modèle formé à l'écriture manuscrite.

Quels personnages cela se trompe-t-il ?

Les lettres qui ressemblent à des chiffres, et la direction est cohérente.

J'ai rendu une ligne des suspects habituels et je l'ai lu:

truth:  O0 l1I 5S 8B 2Z rn/m
read:   00 111 5S 8B 2Z rn/m

Le capital o est devenu un zéro. Minuscule L et Capital I sont devenus le chiffre 1. Les couples dont les gens s'inquiètent le plus, 5 contre S et 8 contre B, sont revenus corrects, tout comme RN contre M.

Le modèle est qu'une lettre isolée avec un glyphe en forme de chiffre est lue comme le chiffre. Dans la course à pied de la prose, cela compte rarement, car le modèle de langage qui l'entoure ramène le résultat au mot. Dans un code de référence, un numéro de série ou une plaque de licence, il n'y a pas de mot à l'extérieur pour vous aider, et c'est exactement là que ce type d'outil est utilisé.

Relisez toute chaîne qui mélange les lettres et les chiffres sans espace. C'est la seule classe de sortie où le moteur est en confiance.

Que vous dit le score de confiance ?

À peu près comment la page s'est déroulée, et non pas si le nombre qui vous intéresse est correct.

L'outil montre la confiance moyenne des mots du moteur comme élevée, moyenne ou faible, avec un niveau élevé à 85 et plus. Par rapport aux taux d'erreur mesurés, cette cartographie est largement sensible et optimiste au bord :

arguments Confiance Étiquette Taux d'erreur réel
Nettoyer 95 flagrant 0,0 %
5 degrés d'inclinaison 91 flagrant 2,9 %
12 degrés d'inclinaison 70 moyen 16,7%
320 px de large 41 faible 85,3 %
Script connecté 55 faible 20,6 %

Un score faible est un avertissement fiable : tout ce qui a obtenu un score inférieur à 60 était véritablement rompu. Un score élevé est une preuve plus faible qu'il n'y paraît. Le cas de 5 degrés a obtenu un score de 91, ce que l'interface appelle High, tout en mutilant discrètement un mot dans une ligne de facture.

Utilisez-le comme un avertisseur de fumée plutôt que comme une garantie. Les moyennes basses ne prennent pas la peine de lire la sortie. High signifie que la page dans son ensemble s'est bien déroulée, ce qui n'est pas le même que chaque personnage qui a raison.

Combien coûte chaque langue pour télécharger ?

Entre 0,67 et 2,82 mégaoctets, une fois, puis il est mis en cache.

Le moteur a besoin d'un fichier de données formé par langue. Étant donné que l'outil exécute uniquement le modèle LSTM, il extrait l'ensemble de meilleures qualités, ce qui est considérablement plus petit que les fichiers que la plupart des fichiers OCR proposent. Mesuré à partir du CDN, la bibliothèque est par défaut :

langage télécharger langage télécharger
anglais 2,82 Mo hindi 1,32 Mo
Russe 2,56 Mo bengali 1,31 Mo
espagnol 2,00 Mo Coréen 1,50 Mo
japonais 1,94 Mo allemand 1,27 Mo
Chinois (simplifié) 1,64 Mo portugais 1,33 Mo
arabe 1,58 Mo Italien 1,58 Mo
français 0,67 Mo

Les treize ensembles atteignent environ 21 Mo, soit moins d'une photographie d'un téléphone moderne. L'hypothèse courante selon laquelle le chinois ou le japonais doit être énorme ne tient pas ici : le chinois simplifié est de 1,64 Mo, plus petit que l'anglais, car le fichier stocke un modèle plutôt qu'une bibliothèque de glyphes.

Pourquoi la première course est-elle plus lente que la seconde ?

Parce que le premier est de télécharger et de démarrer un moteur, et le second de lire.

La première exécution d'un langage récupère la version WebAssembly de Tesseract, récupère le fichier de données de ce langage et initialise un employé. Après cela, le travailleur reste en vie dans la page et le fichier de données est mis en cache par le navigateur, donc une deuxième image dans la même langue commence immédiatement. Changer de langues réinitialise le travailleur mais ne re-télécharge rien de déjà récupéré.

La reconnaissance elle-même est rapide. Sur cette machine, la lecture de l'image du test à trois lignes a pris 186 millisecondes pour la version propre et entre 70 et 125 millisecondes pour les personnes endommagées, le tout sur un ouvrier déjà en marche. Pour une page complète de texte, attendez-vous à une seconde ou deux ou à un dixième d'un, mais la première attente que vous remarquez est la configuration, et non la lecture.

Une fois qu'un langage est mis en cache, l'outil fonctionne sans aucun réseau, ce qui est une véritable capacité hors ligne plutôt qu'une ligne marketing.

Que devez-vous faire à une image avant d'exécuter l'OCR ?

Trois choses, dans cet ordre, et la première compte plus que les deux autres combinées.

  1. Redressez-le. Faites pivoter jusqu'à ce que les lignes de texte soient de niveau. Trois degrés sont gratuits, cinq non.
  2. Recadrer au texte. Cela corrige le problème de la colonne, supprime l'arrière-plan que le segmenter doit rejeter et fait du texte une plus grande part de la trame.
  3. Laissez tout le reste tranquille. Ne pas aiguiser, ne pas augmenter le contraste, ne pas convertir en noir et blanc à la main. Le moteur se binarisait de toute façon et un filtre d'affûtage ajoute des bourdonnements autour des bords des lettres qui n'étaient pas là auparavant.

La chose qui vaut la peine d'être ajoutée plutôt que de supprimer est la résolution, mais seulement si vous êtes près du sol. Passer d'une hauteur de majuscule de 7 pixels à un 14 pixels n'a rien changé dans les mesures. Passer de 6 à 7 a tout changé.

Quand OCR est-il le mauvais outil ?

Lorsque l'image n'est pas de texte, lorsque le texte est manuscrit et lorsque la chose que vous voulez est un document consultable plutôt qu'un bloc de caractères.

OCR vous donne les mots sans structure : sans en-têtes, sans cellules de tableau, sans limites de paragraphes auxquelles vous pouvez faire confiance, sans ordre de lecture dans une mise en page complexe. Pour un devis sur une capture d'écran ou une adresse sur une photo qui est tout à fait correcte. Pour convertir un rapport numérisé en quelque chose de modifiable, il s'agit de la première des étapes.

Si ce que vous voulez, c'est une description d'une image plutôt que les mots qui y sont imprimés, c'est un modèle entièrement différent et un outil différent. Et si la source est un PDF généré plutôt que numérisé, le texte est déjà dans le fichier : le retirer directement conserve la mise en page et ne perd rien, ce qui ne peut correspondre à aucune reconnaissance d'image.

Pourquoi cela s'exécute-t-il dans le navigateur ?

Parce que les images que les gens ont mise via OCR sont celles qu'ils aimeraient le moins télécharger.

Reçus, lettres de banque, ordonnances, passeports, cartes d'identité, photo d'un contrat, capture d'écran d'une conversation privée. L'alternative habituelle est un site qui prend votre image, la traite sur un serveur dont vous ne savez rien et conserve tout ce qu'il conserve.

Ici, le moteur est en cours d'exécution dans la page, dans un employé. L'image est décodée dans la mémoire de tabulation, lue là-bas et le texte apparaît. Rien n'est téléchargé, il n'y a pas de file d'attente ni de copie stockée, et après la première exécution, le tout fonctionne hors ligne. Les coûts sont le téléchargement unique en langage et les très grandes images sont limitées par ce que l'onglet peut contenir.

Deux choses que ce site ne fait pas encore, et qui appartiennent au même pipeline : redresser une page photographiée et la recadrer dans le texte. Les deux doivent se produire dans le spectateur que vous avez déjà, ce qui est le seul point gênant du flux de travail ci-dessus. Ce qui vient après est couvert : si la source est une photo de plusieurs pages, Le guide sur la combinaison des images traite de la restitution des résultats.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!